Узлы конструктора шейдеров

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

Узлы и их типы

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

Структура узлов

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

Продвижение входных данных

Так как в конечном счете конструктор шейдеров должен сформировать исходный код HLSL, чтобы соответствующий эффект можно было использовать в игре или приложении, его узлы подчиняются тем же правилам повышения типа, которые используются в HLSL. Так как графическое оборудование оперирует в основном значениями с плавающей запятой, повышение типа между разными типами, например от int до float или от float до double, происходит редко. Вместо этого, так как графическое оборудование применяет одну операцию к нескольким фрагментам данных одновременно, может возникать другой тип повышения, когда самый короткий из входных параметров удлиняется, чтобы соответствовать самому длинному. Как именно он удлиняется, зависит от типа входного параметра, а также от самой операции.

  • Если тип меньшего размера является скалярным значением:

    Значение скаляра реплицируется в вектор, который по размеру равен большему входному параметру. Например, скалярный входной параметр 5,0 становится вектором (5,0, 5,0, 5,0), когда наибольшим входным параметром операции является трехэлементный вектор, независимо от выполняемой операции.

  • Если тип меньшего размера является вектором, а операция — мультипликативной (*, /, % и т. п.):

    Значение вектора копируется в начальные элементы вектора, который по размеру равен большему входному параметру, а конечные элементы задаются равными 1,0. Например, входные данные вектора (5,0, 5,0) становятся вектором (5,0, 5,0, 1,0, 1,0) при их умножении на четырехэлементный вектор. Это позволяет сохранить третий и четвертый элементы выходных данных с помощью мультипликативной единицы 1,0.

  • Если тип меньшего размера является вектором, а операция является аддитивной (+, - и т. п.):

    Значение вектора копируется в начальные элементы вектора, который по размеру равен большему входному параметру, а конечные элементы задаются равными 0,0. Например, входные данные вектора (5,0, 5,0) становятся вектором (5,0, 5,0, 0,0, 0,0) при их сложении с четырехэлементным вектором. Это позволяет сохранить третий и четвертый элементы выходных данных с помощью нулевого элемента по операции сложения 0,0.

Заголовок Описание
Константные узлы Описывает узлы, которые можно использовать, чтобы представить литеральные значения и интерполированные данные о состоянии вершин в вычислениях шейдеров. Так как состояние вершин интерполировано и поэтому различно для каждого пикселя, каждый экземпляр шейдера получает разную версию константы.
Узлы параметров Описывает узлы, которые можно использовать для представления позиции камеры, свойств материалов, параметров освещения, времени и другие сведений о состоянии приложения в вычислениях шейдеров.
Узлы текстур Описывает узлы, которые можно использовать для получения образцов различных типов и геометрий текстур, а также для создания или преобразования координат текстуры стандартными способами.
Математические узлы Описывает узлы, которые можно использовать для выполнения алгебраических, логических, тригонометрических и других математических операций, которые напрямую соответствуют инструкциям HLSL.
Служебные узлы Описывает узлы, которые можно использовать для выполнения общих расчетов освещения и других распространенных операций, которые не соответствуют инструкциям HLSL напрямую.
Узлы фильтров Описывает узлы, которые можно использовать для фильтрации текстур и цветов.