Практическое руководство. Создание основанного на геометрии шейдера градиента
В этом документе показывается, как использовать конструктор шейдера и Язык шейдера направленного графа для создания Шейдера градиента на основе геометрии. Этот шейдер масштабирует постоянное значение цвета RGB на высоту каждой точки объекта в абсолютном пространстве.
Этот документ демонстрирует эти действия:
Добавление узлов в граф шейдеров
Установка свойств узла
Отсоединение узлов
Соединение узлов
Создание градиентного шейдера на основе геометрии
Можно реализовать геометрический шейдер путем включения позиции пикселя в шейдер. В языках шейдеров пиксель содержит больше информации, чем просто его цвет и расположение на 2-D экране. Пиксель — известный как фрагмент в некоторых системах — это коллекция значений, описывающих поверхность, соответствующую пикселю. Шейдер, описанный в этом документе, использует высоту каждого пикселя трехмерного объекта в абсолютном пространстве, чтобы влиять на окончательный цвета вывода фрагмента.
Перед началом убедитесь, что отображаются окно Свойства и Панель элементов.
Создание градиентного шейдера на основе геометрии
Создайте построитель текстуры DGSL, с которым будете работать. Дополнительные сведения о добавлении построителя текстуры DGSL в проект см. в подразделе "Начало работы" раздела Конструктор шейдеров.
Отключите узел Point Color от узла Final Color. Выберите терминал RGB узла Point Color, а затем выберите Break Links. Таким образом освобождается место для узла, который добавляется на следующем шаге.
Добавление узла Multiply к диаграмме. В разделе Панель элементов в области Математика выберите Multiply и переместите ее на поверхность разработки.
Добавление узла Вектор маски к диаграмме. В разделе Панель элементов в области Служебная программа выберите Вектор маски и переместите ее на поверхность разработки.
Укажите значения маски для узла Вектор маски. В режиме Select выберите узел Mask Vector, а затем в окне Properties задайте для свойства Green / Y значение True, а для свойств Red / X, Blue / Z и Alpha / W — значение False. В этом примере свойства Red / X, Green / Y и Blue / Z соответствуют компонентам x, y и z узла World Position, а Alpha / W не используется. Поскольку только Green / Y установлен на True, только компонент y вектора ввода останется после его маскировки.
Добавление узла Положение в мировых координатах к диаграмме. В разделе Панель элементов в области Константы выберите Положение в мировых координатах и переместите ее на поверхность разработки.
Создание маски положения абсолютного пространства фрагмента. В режиме Выбрать переместите конечную точку Вывод узла Положение в мировых координатах в конечную точку Вектор узла Вектор маски. Это соединение маскирует позицию фрагмента, чтобы игнорировать компоненты x и z.
Умножьте константу цвета RGB на маскированное положение в абсолютном пространстве. Переместите терминал RGB узла Point Color к терминалу Y узла Multiply, а затем переместите терминал Output узла Mask Vector к терминалу X узла Multiply. Это соединение масштабирует значение цвета на высоту пикселя в абсолютном пространстве.
Присоедините масштабированное значение цвета к окончательному цвету. Переместите терминал Output узла Multiply к терминалу RGB узла Final Color.
На следующей иллюстрации показан готовый граф шейдеров и предварительный просмотр шейдера, применяемого к сфере.
Примечание
На этом рисунке задан оранжевый цвет, чтобы лучше было видно эффект шейдера, но так как фигура предварительного просмотра не имеет позиции в мировом пространстве, шейдер невозможно полностью просмотреть в конструкторе шейдера.Шейдер необходимо просмотреть в реальной сцене для демонстрации полного эффекта.
Некоторые фигуры могут предоставить лучший предварительный просмотр для некоторых шейдеров. Дополнительные сведения о способах предварительного просмотра шейдеров в конструкторе шейдеров см. в разделе Previewing shaders in Конструктор шейдеров.
На следующей иллюстрации показан описанный в этом документе шейдер, примененный к трехмерной сцене, которая продемонстрирована в разделе Практическое руководство. Моделирование трехмерного ландшафта. Интенсивность цвета увеличивается вместе с высотой точки в мировом пространстве.
Дополнительные сведения о применении построителя текстуры к трехмерной модели см. в разделе Практическое руководство. Применение шейдера к трехмерной модели.
См. также
Задачи
Практическое руководство. Применение шейдера к трехмерной модели
Практическое руководство. Экспорт шейдера
Практическое руководство. Моделирование трехмерного ландшафта
Практическое руководство. Создание шейдера текстуры с использованием оттенков серого