Вопросы с тегом «shader»

По всем вопросам, связанным с шейдерами, то есть программируемой частью конвейера GPU. По вопросам шейдера для конкретного языка обращайтесь также к тегам [glsl] и [hlsl].

37
Когда вычислительный шейдер более эффективен, чем пиксельный шейдер для фильтрации изображений?

Операции фильтрации изображений, такие как размытие, SSAO, bloom и т. Д., Обычно выполняются с использованием пиксельных шейдеров и операций «сбора», где каждый вызов пиксельного шейдера выдает несколько выборок текстуры для доступа к значениям соседних пикселей и вычисляет ценность одного пикселя....

19
Почему это условие в моем фрагментном шейдере так медленно?

Я установил некоторый FPS-измерительный код в WebGL (на основе этого SO-ответа ) и обнаружил некоторые странности в производительности моего фрагментного шейдера. Код просто отображает один квад (или, скорее, два треугольника) на холсте 1024x1024, поэтому вся магия происходит в фрагментном шейдере....

17
Есть ли способ генерировать примитивы в геометрическом шейдере без входной геометрии?

Несколько лет назад я пытался внедрить этот Gem GeForce в OpenGL для генерации трехмерного процедурного ландшафта с использованием Marching Cubes . В статье предлагается реализовать Marching Cubes в геометрическом шейдере с максимальной эффективностью. Это означает, что мне нужно запустить шейдер...

16
Почему у нас есть графические фреймворки, такие как OpenGL и DirectX, когда игры могут просто рисовать пиксели напрямую?

Игры и другие графически насыщенные приложения используют такие платформы, как OpenGL и DirectX. Также им требуются такие функции, как пиксельный шейдер и DX12. Но зачем нам все эти фреймворки и функции GPU, когда мы можем просто рисовать все пиксель за пикселем? Во-первых, игру нужно будет...

14
Является ли постоянное состояние более дорогостоящим, чем переключение шейдеров?

Вообще, ветвление в шейдерах не очень хорошая идея. Но теперь у меня есть шейдер с условием, которое является постоянным по отношению ко всему вызову отрисовки. Таким образом, выполняемая ветвь всегда одинакова для одного вызова отрисовки. Является ли такой вид ветвления еще более дорогостоящим,...

13
Почему эффективность работы желательна в программировании на GPU?

Я читал следующую статью о том, как сделать параллельное сканирование в CUDA: https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html В статье делается акцент на том, чтобы сделать сканирование «эффективным». Другими словами, алгоритм GPU должен выполнять не больше дополнений, чем алгоритм...

12
Синхронизация последовательных вызовов OpenGL Compute Shader

У меня есть пара вычислительных шейдеров, которые должны быть выполнены в определенном порядке и чьи выходные данные зависят от предыдущих входных данных. В идеале мне никогда не понадобится копировать буфер на стороне клиента и выполнять всю мою работу на GPU. Рассмотрим У меня есть два...

11
Нужно ли повторно связывать униформу или атрибуты при смене шейдерных программ?

Для рендеринга сцены обычно используется более одной шейдерной программы, которая, в моем случае, использует одни и те же атрибуты и разделяет, по крайней мере, некоторые из униформ. Чтобы они работали должным образом, я в настоящее время играю в безопасности, то есть я перепривязываю атрибуты и...

11
Производные карты и касательное пространство Карты нормалей

Я обнаружил, что некоторые движки используют производные карты вместо карт нормалей касательного пространства . После некоторого прочтения кажется, что это действительно замечательный способ заменить нормали касательного пространства, но есть ли какой-то недостаток в их использовании? Почему все...

11
Почему доступ к текстурам намного медленнее при расчете координат текстуры в фрагментном шейдере?

При использовании текстур в GLSL лучше всего рассчитать окончательные координаты текстуры в вершинном шейдере и передать их фрагментному шейдеру, используя varyings. Пример с простым переворотом в координате y: // Vertex shader attribute vec2 texture; varying highp vec2 texCoord; // ... void main()...

11
Цикл производительности в шейдере

Мне интересно, как лучше интегрировать функцию динамического цикла в шейдер? Во-первых, кажется, что динамические массивы невозможны. Итак, лучше ли создавать массив максимального размера и заполнять только его часть или определять массивы с заранее заданными размерами? Тогда, как лучше всего...

10
Использование LUT для ускорения работы шейдера для мобильных устройств

Я пытаюсь заставить этот шейдер работать на действительно старом iDevice, а также на Android. Даже когда я уменьшаю код до 2 синусоидальных функций на фрагмент, шейдер работает со скоростью около 20 кадров в секунду. Я подумал о том, чтобы взять лист из книги старых методов шейдинга и создать...

10
Причина теневых прыщей

Я знаю, как работает отображение теней, но я не понимаю причину появления прыщей! Может кто-нибудь сказать мне простой причиной появления прыщей в тени и как это связано с разрешением карты...

10
Эффективный рендеринг со многими источниками света

Чтобы визуализировать сцену с одним источником света с использованием затенения по фонгу, можно рассчитать окончательный цвет каждого фрагмента, переданного в шейдер фрагмента, на основе внешних / диффузных / зеркальных компонентов как материала, так и источника света. Это может быть легко...

9
Как работает Texture Cache в Tile Based Rendering GPU

Как кеш работает с рендерингом на основе плиток? Есть ли какие-нибудь советы, как улучшить коэффициент попадания в кеш? (например, если плитки обрабатываются горизонтально, и у меня есть вертикальные сегменты треугольников с одинаковой текстурой, будет ли это хуже для кеша, чем если бы я располагал...

9
Расчет на вершину в тесселяции OpenGL

Я пытаюсь реализовать позиционное моделирование одежды с использованием аппаратного тесселяции. Это означает, что я хочу просто загрузить контрольный квад на графическую карту, а затем использовать тесселяцию и затенение геометрии для создания узлов в ткани. Эта идея следует за бумагой: Huynh,...

9
Правильная форма термина геометрии GGX

Я пытаюсь внедрить микроразмер BRDF в мой raytracer, но у меня возникают некоторые проблемы. Многие статьи и статьи, которые я прочитал, определяют термин частичной геометрии как функцию вида и половинных векторов: G1 (v, h). Однако при реализации этого я получил следующий результат: (Нижний ряд -...