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

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

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

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

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

Так как в конечном счете конструктор шейдеров должен сформировать исходный код 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.

Узлы и их типы

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

Константные узлы

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

Интерполяция атрибута вершины

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

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

Справочник по постоянным узлам

Узел Сведения Свойства
Вектор камеры Вектор, построенный из текущего пикселя к камере в абсолютном пространстве.

Этот вектор можно использовать для вычисления отражений в абсолютном пространстве.

Выходные данные

Output: float3
Вектор из текущего пикселя к камере.
нет
Константа цвета Значение постоянного цвета.

Выходные данные

Output: float4
Значение цвета.
Выходные данные
Значение цвета.
Константа Постоянное скалярное значение.

Выходные данные

Output: float
Скалярное значение.
Выходные данные
Скалярное значение.
2D-константа Двухкомпонентная константа вектора.

Выходные данные

Output: float2
Векторное значение.
Выходные данные
Векторное значение.
3D-константа Трехкомпонентная константа вектора.

Выходные данные

Output: float3
Векторное значение.
Выходные данные
Векторное значение.
4D-константа Четырехкомпонентная константа вектора.

Выходные данные

Output: float4
Значение цвета.
Выходные данные
Векторное значение.
Нормализованное положение Позиция текущего пикселя, выраженная в нормализованных координатах устройства.

Координата x и координата y имеют значения в диапазоне [-1, 1], координата z имеет значение в диапазоне [0, 1], а компонент w содержит значение глубины точки в пространстве представления; w не нормализуется.

Выходные данные

Output: float4
Позиция текущего пикселя.
нет
Цвет точки Диффузный цвет текущего пикселя, который является сочетанием диффузного цвета материала и цветовых атрибутов вершины.

Выходные данные

Output: float4
Диффузный цвет текущего пикселя.
нет
Глубина точки Глубина текущего пикселя в пространстве представления.

Выходные данные

Output: float
Глубина текущего пикселя.
нет
Нормализованная глубина точки Глубина текущего пикселя, выраженная в нормализованных координатах устройства.

Результирующее значение лежит в диапазоне [0, 1].

Выходные данные

Output: float
Глубина текущего пикселя.
нет
Положение на экране Позиция текущего пикселя, выраженная в координатах экрана.

Координаты экрана основаны на текущем окне просмотра. Компоненты x и y содержат координаты экрана, компонент z содержит глубину, нормализованную до диапазона [0, 1], а компонент w содержит значение глубины в пространстве представления.

Выходные данные

Output: float4
Позиция текущего пикселя.
нет
Нормаль к поверхности Нормаль к поверхности, построенная из текущего пикселя в пространстве объекта.

Эту нормаль можно использовать для вычисления добавочного освещения и отражений в пространстве объекта.

Выходные данные

Output: float3
Нормаль к поверхности, построенная из текущего пикселя.
нет
Вектор камеры в пространстве касательных Вектор, построенный из текущего пикселя к камере в пространстве касательных.

Этот вектор можно использовать для вычисления отражений в пространстве касательных.

Выходные данные

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

Этот перпендикуляр можно использовать для вычисления добавочного освещения и отражений в пространстве касательных.

Выходные данные:

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

Эту нормаль можно использовать для вычисления добавочного освещения и отражений в абсолютном пространстве.

Выходные данные

Output: float3
Нормаль к поверхности, построенная из текущего пикселя.
нет
Положение в мировых координатах Позиция текущего пикселя в абсолютном пространстве.

Выходные данные

Output: float4
Позиция текущего пикселя.
нет

Узлы параметров

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

Справочник по узлам параметров

Узел Сведения Свойства
Положение камеры в мировых координатах Позиция камеры в абсолютном пространстве.

Выходные данные:

Output: float4
Положение камеры.
нет
Направление света Вектор, определяющий направление, в котором излучается свет из источника света в абсолютном пространстве.

Этот перпендикуляр можно использовать для вычисления добавочного освещения и отражений в абсолютном пространстве.

Выходные данные:

Output: float3
Вектор из текущего пикселя к источнику света.
нет
Материал — окружающий Вклад диффузного цвета текущего пикселя, относимый на непрямое освещение.

Диффузный цвет пикселя имитирует взаимодействие освещения с шероховатыми поверхностями. Параметр "Материал — окружающий" можно использовать для приблизительного моделирования влияния непрямого освещения на внешний вид объекта в реальном мире.

Выходные данные:

Output: float4
Диффузный цвет текущего пикселя, вызванный непрямым — или окружающим — освещением.
Открыть
Значение Открытый, чтобы разрешить задание этого свойства в редакторе моделей; в противном случае — значение Закрытый.

Value
Диффузный цвет текущего пикселя, вызванный непрямым — или окружающим — освещением.
Материал — диффузный Цвет, который описывает, как текущий пиксель рассеивает прямое освещение.

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

Выходные данные:

Output: float4
Цвет, который описывает, как текущий пиксель рассеивает прямое освещение.
Открыть
Значение Открытый, чтобы разрешить задание этого свойства в редакторе моделей; в противном случае — значение Закрытый.

Value
Цвет, который описывает, как текущий пиксель рассеивает прямое освещение.
Материал — эмиссионный Цветовой вклад текущего пикселя, относимый на освещение, которое он предоставляет себе самому.

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

Выходные данные:

Output: float4
Добавочный цвет текущего пикселя, который образуется вследствие освещения, предоставляемого пользователем.
Открыть
Значение Открытый, чтобы разрешить задание этого свойства в редакторе моделей; в противном случае — значение Закрытый.

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

Отражающий цвет пикселя имитирует взаимодействие освещения с ровными, зеркальноподобными поверхностями. Можно использовать параметр "Материал — отражающий", чтобы изменить способ отражения текущим пикселем прямого освещения, то есть направленных, точечных источников света и прожекторов.

Выходные данные:

Output: float4
Цвет, который описывает, как текущий пиксель отражает прямое освещение.
Открыть
Значение Открытый, чтобы разрешить задание этого свойства в редакторе моделей; в противном случае — значение Закрытый.

Value
Цвет, который описывает, как текущий пиксель отражает прямое освещение.
Отражающая способность материала Скалярное значение, описывающее интенсивность зеркального отражения.

Чем больше отражающая способность, тем более интенсивными и масштабными становятся зеркальные отражения.

Выходные данные:

Output: float
Экспоненциальное определение, описывающее интенсивность зеркального отражения от текущего пикселя.
Открыть
Значение Открытый, чтобы разрешить задание этого свойства в редакторе моделей; в противном случае — значение Закрытый.

Value
Экспонента, которая определяет интенсивность зеркального отражения от текущего пикселя.
Нормализованное время Время в секундах, нормализованных к диапазону [0, 1], так что когда время достигает 1, оно сбросится до 0.

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

Выходные данные:

Output: float
Нормализованное время в секундах.
нет
Time Время в секундах.

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

Выходные данные:

Output: float
Время в секундах.
нет

Узлы текстур

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

Справочник по узлам текстуры

Узел Сведения Свойства
Образец кубической карты Берет образец цвета с кубической карты по указанным координатам.

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

Входные данные:

UVW: float3
Вектор, который определяет расположение на кубе текстуры, в котором берется образец. Образец берется там, где данный вектор пересекает куб.

Выходные данные:

Output: float4
Образец цвета.
Текстура
Регистр текстуры, связанный с образцом.
Образец карты нормалей Берет образец нормали с двумерной карты нормалей по указанным координатам.

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

Входные данные:

UV: float2
Координаты, в которых берется образец.

Выходные данные:

Output: float3
Образец нормали.
Корректировка осей
Фактор, используемый для настройки готовности к обычному образцу карты.

Текстура
Регистр текстуры, связанный с образцом.
Сдвиг UV Сдвигает указанные координаты текстуры как функцию времени.

Это можно использовать для перемещения карты текстур или нормалей по поверхности объекта.

Входные данные:

UV: float2
Координаты для сдвига.

Time: float
Отрезок времени сдвига, в секундах.

Выходные данные:

Output: float2
Сдвинутые координаты.
Скорость X
Число пикселей текстуры, сдвигаемых вдоль оси x в секунду.

Скорость Y
Число пикселей текстуры, сдвигаемых вдоль оси y в секунду.
Parallax UV Перемещает указанные координаты структуры, смещая их в зависимости от высоты и угла обзора.

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

Входные данные:

UV: float2
Координаты для смещения.

Height: float
Значение карты высоты, связанное с координатами UV.

Выходные данные:

Output: float2
Смещенные координаты.
Плоскость глубины
Ссылочная глубина для эффекта фокусировки. Значение по умолчанию — 0,5. Меньшие значения выдавливают текстуру, большие вдавливают ее в поверхность.

Шкала глубины
Масштаб для эффекта фокусировки. Позволяет сделать видимую глубину более или менее отчетливой. Обычно используются значения в диапазоне от 0,02 до 0,1.
Поворот UV Поворачивает указанные координаты текстуры вокруг центральной точки как функцию времени.

Это можно использовать для вращения карты текстур или нормалей на поверхности объекта.

Входные данные:

UV: float2
Координаты для поворота.

Time: float
Отрезок времени сдвига, в секундах.

Выходные данные:

Output: float2
Повернутые координаты.
Центр по оси X
Координата x, определяющая центр вращения.

Центр по оси Y
Координата y, определяющая центр вращения.

Скорость
Угол (в радианах), на который текстура поворачивается в секунду.
Координата текстуры Координата текстуры текущего пикселя.

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

Выходные данные:

Output: float2
Координаты текстуры.
нет
Размеры текстуры Выводит ширину и высоту карты двумерных текстур.

Можно использовать размеры текстуры для учета ширины и высоты текстуры в шейдере.

Выходные данные:

Output: float2
Ширина и высота текстуры, представленные вектором. Ширина хранится в первом элементе вектора. Высота хранится во втором элементе.
Текстура
Регистр текстуры, связанный с размерами текстуры.
Шаг текселя Выводит шаг (расстояние) между текселями карты двумерных текстур.

Можно использовать шаг текселя для сэмплирования значений соседних текселей в шейдере.

Выходные данные:

Output: float2
Шаг (расстояние) от текселя до следующего текселя (переход по диагонали в положительном направлении), выраженный как вектор в нормированном пространстве текстуры. Можно создавать производные позиции всех соседних текселей выборочным игнорированием или отрицанием координат U или V шага.
Текстура
Регистр текстуры, связанный с шагом текселя.
Образец текстуры Берет образец цвета с двумерной карты текстур по указанным координатам.

Карту текстур можно использовать для предоставления сведений о цвете на поверхности объекта.

Входные данные:

UV: float2
Координаты, в которых берется образец.

Выходные данные:

Output: float4
Образец цвета.
Текстура
Регистр текстуры, связанный с образцом.

Математические узлы

Математические узлы в конструкторе шейдеров выполняют алгебраические, логические, тригонометрические и других математические операции.

Примечание.

При работе с математическими узлами в конструкторе шейдеров особенно очевидно повышение типа. Дополнительные сведения о том, как повышение типа влияет на входные параметры, см. в разделе "Повышение входных данных".

Справочник по математическим узлам

Узел Сведения Свойства
Abs Вычисляет абсолютное значение заданного входного параметра для отдельных компонентов.

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

Входные данные:

X: float, float2, float3 или float4
Значения, для которых нужно определить абсолютное значение.

Output:

Output: аналогично входным данным X
Абсолютное значение для отдельных компонентов.
нет
Прибавить Вычисляет покомпонентную сумму заданных входных параметров для отдельных компонентов.

Каждый компонент результата получается сложением соответствующих компонентов входных параметров X и Y.

Входные данные:

X: float, float2, float3 или float4
Одно из складываемых значений.

Y: аналогично входным данным X
Одно из складываемых значений.

Выходные данные:

Output: аналогично входным данным X
Сумма по отдельным компонентам.
нет
Ceil Вычисляет округление в большую сторону заданного входного параметра для отдельных компонентов.

Округление вверх или в большую сторону —это наименьшее целое число, которое больше заданного значения или равно ему.

Входные данные:

X: float, float2, float3 или float4
Значения, для которых вычисляется округление вверх.

Выходные данные:

Output: аналогично входным данным X
Округление вверх по отдельным компонентам.
нет
Clamp Приводит каждый компонент указанных входных данных к предварительно определенному диапазону.

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

Входные данные:

X: float, float2, float3 или float4
Приводимые значения.

Выходные данные:

Output: аналогично входным данным X
Приведенное значение для отдельных компонентов.
Max
Наибольшее возможное значение в диапазоне.

Min
Наименьшее возможное значение в диапазоне.
Cos Вычисляет косинус входного значения в радианах для отдельных компонентов.

Для каждого компонента результата вычисляется косинус соответствующего компонента, представленного в радианах. Результат содержит компоненты, значения которых лежат в диапазоне [–1, 1].

Входные данные:

X: float, float2, float3 или float4
Значения для вычисления косинуса в радианах.

Выходные данные:

Output: аналогично входным данным X
Косинус для отдельных компонентов.
нет
Cross Вычисляет векторное произведение заданных трехкомпонентных векторов.

Векторное произведение можно использовать для вычисления нормали к поверхности, заданной двумя векторами.

Входные данные:

X: float3
Вектор в левой части векторного произведения.

Y: float3
Вектор в правой части векторного произведения.

Выходные данные:

Output: float3
Векторное произведение.
нет
Расстояние Вычисляет расстояние между указанными точками.

В результате получается положительное скалярное значение.

Входные данные:

X: float, float2, float3 или float4
Одна из точек, расстояние между которыми требуется определить.

Y: аналогично входным данным X
Одна из точек, расстояние между которыми требуется определить.

Выходные данные:

Output: аналогично входным данным X
Расстояние.
нет
Divide Вычисляет покомпонентное частное заданных входных параметров.

Каждый компонент результата получается делением соответствующего компонента входного параметра X на соответствующий компонент входного параметра Y.

Входные данные:

X: float, float2, float3 или float4
Значения делимого.

Y: аналогично входным данным X
Значения делителя.

Выходные данные:

Output: аналогично входным данным X
Частное для отдельных компонентов.
нет
Dot Вычисляет скалярное произведение заданных векторов.

В результате получается скалярное значение. Скалярное произведение можно использовать для определения угла между двумя векторами.

Входные данные:

X: float, float2, float3 или float4
Одно из условий.

Y: аналогично входным данным X
Одно из условий.

Выходные данные:

Output: float
Скалярное произведение.
нет
Floor Вычисляет округление в меньшую сторону заданного входного параметра для отдельных компонентов.

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

Входные данные:

X: float, float2, float3 или float4
Значения, для которых вычисляется округление вниз.

Выходные данные:

Output: аналогично входным данным X
Округление вниз по отдельным компонентам.
нет
Fmod Вычисляет покомпонентный модуль (остаток) заданных входных данных.

Каждый компонент результата равен остатку, получающемуся после вычитания некоторого целочисленного кратного числа (m) соответствующего компонента входного параметра Y из соответствующего компонента входного параметра X. Кратное число m выбирается таким образом, чтобы остаток был меньше соответствующего компонента входного параметра Y и имел один знак с соответствующим компонентом входного параметра X. Например, результат fmod(–3.14, 1.5) равен –0,14.

Входные данные:

X: float, float2, float3 или float4
Значения делимого.

Y: аналогично входным данным X
Значения делителя.

Выходные данные:

Output: аналогично входным данным X
Остаток деления для каждого компонента.
нет
Frac Удаляет целочисленную часть заданного входного параметра для отдельных компонентов.

Для каждого компонента результата удаляется целочисленная часть соответствующего компонента входного параметра с сохранением дробной части и знака. Это дробное значение находится в диапазоне [0, 1). Например, значение –3,14 преобразуется в значение –0,14.

Входные данные:

X: float, float2, float3 или float4
Значения, для которых вычисляется дробная часть.

Выходные данные:

Output: аналогично входным данным X
Дробная часть для отдельных компонентов.
нет
Lerp Линейная интерполяция. Вычисляет покомпонентное взвешенное среднее заданных входных данных.

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

Входные данные:

X: float, float2, float3 или float4
Исходное значение. Если Percent — ноль, результат равен этому входному параметру.

Y: аналогично входным данным X
Конечное значение. Если Percent — один, результат равен этому входному параметру.

Percent: float
Скалярный вес, который выражается в процентах от расстояния от входного параметра X до входного параметра Y.

Выходные данные:

Output: аналогично входным данным X
Значение, коллинеарное с указанными входными данными.
нет
Multiply Add Вычисляет покомпонентный результат операции умножения-сложения заданных входных данных.

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

Входные данные:

M: float, float2, float3 или float4
Одно из множителей.

A: аналогично входным данным M
Одно из множителей.

B: аналогично входным данным M
Значения, добавляемые к произведению двух других входных параметров.

Выходные данные:

Output: аналогично входным данным M
Результат операции умножения-сложения для отдельных компонентов.
нет
Max Вычисляет покомпонентное максимальное значение заданных входных параметров.

Каждый компонент результата равен большему из соответствующих компонентов входных параметров.

Входные данные:

X: float, float2, float3 или float4
Одно из значений, для которых вычисляется максимум.

Y: аналогично входным данным X
Одно из значений, для которых вычисляется максимум.

Выходные данные:

Output: аналогично входным данным X
Максимальное значение для отдельных компонентов.
нет
Min Вычисляет покомпонентное минимальное значение заданных входных параметров.

Каждый компонент результата равен меньшему из соответствующих компонентов входных параметров.

Входные данные:

X: float, float2, float3 или float4
Одно из значений, для которых вычисляется минимум.

Y: аналогично входным данным X
Одно из значений, для которых вычисляется минимум.

Выходные данные:

Output: аналогично входным данным X
Минимальное значение для отдельных компонентов.
нет
Умножение Вычисляет покомпонентное произведение заданных входных параметров.

Каждый компонент результата получается умножением соответствующих компонентов входных параметров X и Y.

Входные данные:

X: float, float2, float3 или float4
Одно из множителей.

Y: аналогично входным данным X
Одно из множителей.

Выходные данные:

Output: аналогично входным данным X
Произведение для отдельных компонентов.
нет
Normalize Нормализует заданный вектор.

Нормализованный вектор сохраняет направление исходного вектора, но не его модуль. Нормализованные векторы можно использовать для упрощения вычислений, где величина вектора не важна.

Входные данные:

X: float2, float3 или float4
Нормализуемый вектор.

Выходные данные:

Output: аналогично входным данным X
Нормализованный вектор.
нет
One Minus Вычисляет разность между 1 и указанным входным параметром для отдельных компонентов.

Для каждого компонента результата соответствующий компонент входного параметра вычитается из значения 1.

Входные данные:

X: float, float2, float3 или float4
Значения, вычитаемые из 1.

Выходные данные:

Output: аналогично входным данным X
Разность между 1 и указанным входным параметром для отдельных компонентов.
нет
Power Вычисляет покомпонентное значение возведения в степень заданных входных данных.

Для каждого компонента результата соответствующий компонент входного параметра X возводится в степень соответствующего компонента входного параметра Y.

Входные данные:

X: float, float2, float3 или float4
Значения основания.

Y: аналогично входным данным X
Показатели степени.

Выходные данные:

Output: аналогично входным данным X
Возведение в степень для отдельных компонентов.
нет
Saturate Изменяет все компоненты заданных входных данных, чтобы они попадали в диапазон значений [0, 1].

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

Входные данные:

X: float, float2, float3 или float4
Насыщаемые значения.

Выходные данные:

Output: аналогично входным данным X
Насыщенное значение для отдельных компонентов.
нет
Sin Вычисляет синус входного значения в радианах для отдельных компонентов.

Для каждого компонента результата вычисляется синус соответствующего компонента, представленного в радианах. Результат содержит компоненты, значения которых лежат в диапазоне [–1, 1].

Входные данные:

X: float, float2, float3 или float4
Значения для вычисления синуса в радианах.

Выходные данные:

Output: аналогично входным данным X
Синус для отдельных компонентов.
нет
Sqrt Вычисляет квадратный корень заданного входного параметра для отдельных компонентов.

Каждый компонент результата равен квадратному корню из соответствующего компонента входного параметра.

Входные данные:

X: float, float2, float3 или float4
Значения, для которых вычисляется квадратный корень.

Выходные данные:

Output: аналогично входным данным X
Квадратный корень для отдельных компонентов.
нет
Вычитание Вычисляет покомпонентную разность заданных входных параметров.

Каждый компонент результата получается вычитанием соответствующего компонента входного параметра Y из соответствующего компонента входного параметра X. Эту функцию можно использовать для построения вектора от первого до второго входного значения.

Входные данные:

X: float, float2, float3 или float4
Значения уменьшаемого.

Y: аналогично входным данным X
Значения вычитаемого из входного параметра X.

Выходные данные:

Output: аналогично входным данным X
Разность для отдельных компонентов.
нет
Преобразование 3D-вектора Преобразует указанный трехмерный вектор в другое пространство.

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

Входные данные:

Vector: float3
Преобразуемый вектор.

Выходные данные:

Output: float3
Преобразованный вектор.
Исходная система
Собственное пространство вектора.

Система назначения
Пространство, в которое преобразуется вектор.

Служебные узлы

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

Справочник по служебным узлам

Узел Сведения Свойства
Вектор дополнения Создает вектор, добавляя указанные входные данные вместе.

Входные данные:

Vector: float, float2 или float3
Значения, к которым выполняется добавление.

Value to Append: float
Добавляемое значение.

Выходные данные:

Output: float2, float3 или float4 в зависимости от типа входного значения Vector.
Новый вектор.
нет
Френель Вычисляет спад по Френелю на основе заданной нормали к поверхности.

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

Входные данные:

Surface Normal: float3
Нормаль к поверхности текущего пикселя, определенная в пространстве касательных текущего пикселя. Это можно использовать для воздействия на кажущуюся нормаль к поверхности, как и в обычном сопоставлении.

Выходные данные:

Output: float
Коэффициент отражения текущего пикселя.
Экспонента
Экспонента, используемая для вычисления спада по Френелю.
If Условно выбирает один из трех возможных результатов для каждого компонента. Условие определяется отношением между двумя другими заданными входами.

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

Входные данные:

X: float, float2, float3 или float4
Левое значение для сравнения.

Y: тип, аналогичный входным данным X
Правое значение для сравнения.

X > Y: тип, аналогичный входным данным X
Значения, которые выбираются при X больше Y.

X = Y: тип, аналогичный входным данным X
Значения, которые выбираются при X равном Y.

X < Y: тип, аналогичный входным данным X
Значения, которые выбираются при X меньше Y.

Выходные данные:

Output: float3
Выбранный результат для каждого компонента.
нет
Ламберт Вычисляет цвет текущего пикселя согласно модели освещения Ламберта, используя заданную нормаль к поверхности.

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

Входные данные:

Surface Normal: float3
Нормаль к поверхности текущего пикселя, определенная в пространстве касательных текущего пикселя. Это можно использовать для воздействия на кажущуюся нормаль к поверхности, как и в обычном сопоставлении.

Diffuse Color: float3
Диффузный цвет текущего пикселя, обычно Цвет точки. Если входные данные не предоставлены, значением по умолчанию будет белый цвет.

Выходные данные:

Output: float3
Диффузный цвет текущего пикселя.
нет
Вектор маски Маскирует компоненты заданного вектора.

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

Входные данные:

Vector: float4
Вектор для создания маски.

Выходные данные:

Output: float4
Маскированный вектор.
Красный / X
Значение False, чтобы маскировать компонент красного цвета (x); в противном случае — значение True.

Зеленый / Y
Значение False, чтобы маскировать компонент зеленого цвета (y); в противном случае — значение True.

Синий / Z
Значение False, чтобы маскировать компонент синего цвета (z); в противном случае — значение True.

Альфа / W
Значение False, чтобы маскировать альфа-компонент (w); в противном случае — значение True.
Вектор отражения Вычисляет вектор отражения для текущего пикселя в пространстве касательных на основе положения камеры.

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

Входные данные:

Tangent Space Surface Normal: float3
Нормаль к поверхности текущего пикселя, определенная в пространстве касательных текущего пикселя. Это можно использовать для воздействия на кажущуюся нормаль к поверхности, как и в обычном сопоставлении.

Выходные данные:

Output: float3
Вектор отражения.
нет
Отражающий Вычисляет добавочное отраженное освещение согласно модели освещения Фонга, используя заданную нормаль к поверхности.

Отраженное освещение придает объекту блестящий, светящийся вид, как, например, у воды, пластмассы или металла.

Входные данные:

Surface Normal: float3
Нормаль к поверхности текущего пикселя, определенная в пространстве касательных текущего пикселя. Это можно использовать для воздействия на кажущуюся нормаль к поверхности, как и в обычном сопоставлении.

Выходные данные:

Output: float3
Цветовой вклад зеркальных отражений.
нет

Узлы фильтров

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

Справочник по узлам фильтра

Узел Сведения Свойства
Размытие Придает эффект размытия пикселям в текстуре с помощью гауссовой функции.

С помощью этого можно уменьшить детальность цвета или шум в текстуре.

Входные данные:

UV: float2
Координаты тестируемого текселя.

Выходные данные:

Output: float4
Значение размытого цвета.
Текстура
Регистр текстуры, который связан с образцом, используемым при размытии.
Приведение к серому Снижает объем цвета в заданном цвете.

По мере удаления цвета значение цвета приближается к своему эквиваленту на шкале оттенков серого.

Входные данные:

RGB: float3
Цвет для приведения к серому.

Percent: float
Процент цвета, который нужно удалить, выраженный в виде нормализованного значения в диапазоне [0, 1].

Выходные данные:

Output: float3
Цвет после приведения к серому.
Освещенность
Веса, применяемые к компонентам красного, зеленого и синего цветов.
Определение границ Определяет границы текстуры, используя алгоритм выделения границ Канни. Пограничные пиксели выходные данные в виде белых; неуклюжие пиксели выводятся как черные.

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

Входные данные:

UV: float2
Координаты тестируемого текселя.

Выходные данные:

Output: float4
Белый, если тексель на границе; в противном случае — черный.
Текстура
Регистр текстуры, который связан с образцом, используемым при выделении границ.
Повысить резкость Повышает резкость текстуры.

С помощью этого можно обозначить точные детали в текстуре.

Входные данные:

UV: float2
Координаты тестируемого текселя.

Выходные данные:

Output: float4
Значение размытого цвета.
Текстура
Регистр текстуры, который связан с образцом, используемым при повышении резкости.

Следующие шаги

Дополнительные сведения см. в статье "Создание шейдеров с помощью конструктора шейдеров" в Visual Studio.