Поделиться через


Практическое руководство. Создание основанного на геометрии шейдера градиента

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

Этот документ демонстрирует эти действия:

  • Добавление узлов в граф шейдеров

  • Установка свойств узла

  • Отсоединение узлов

  • Соединение узлов

Создание градиентного шейдера на основе геометрии

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

Перед началом убедитесь, что отображаются окно Свойства и Панель элементов.

Создание градиентного шейдера на основе геометрии

  1. Создайте построитель текстуры DGSL, с которым будете работать. Дополнительные сведения о добавлении построителя текстуры DGSL в проект см. в подразделе "Начало работы" раздела Конструктор шейдеров.

  2. Отключите узел Point Color от узла Final Color. Выберите терминал RGB узла Point Color, а затем выберите Break Links. Таким образом освобождается место для узла, который добавляется на следующем шаге.

  3. Добавление узла Multiply к диаграмме. В разделе Панель элементов в области Математика выберите Multiply и переместите ее на поверхность разработки.

  4. Добавление узла Вектор маски к диаграмме. В разделе Панель элементов в области Служебная программа выберите Вектор маски и переместите ее на поверхность разработки.

  5. Укажите значения маски для узла Вектор маски. В режиме 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 вектора ввода останется после его маскировки.

  6. Добавление узла Положение в мировых координатах к диаграмме. В разделе Панель элементов в области Константы выберите Положение в мировых координатах и переместите ее на поверхность разработки.

  7. Создание маски положения абсолютного пространства фрагмента. В режиме Выбрать переместите конечную точку Вывод узла Положение в мировых координатах в конечную точку Вектор узла Вектор маски. Это соединение маскирует позицию фрагмента, чтобы игнорировать компоненты x и z.

  8. Умножьте константу цвета RGB на маскированное положение в абсолютном пространстве. Переместите терминал RGB узла Point Color к терминалу Y узла Multiply, а затем переместите терминал Output узла Mask Vector к терминалу X узла Multiply. Это соединение масштабирует значение цвета на высоту пикселя в абсолютном пространстве.

  9. Присоедините масштабированное значение цвета к окончательному цвету. Переместите терминал Output узла Multiply к терминалу RGB узла Final Color.

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

Примечание

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

Граф шейдера и предварительный просмотр его эффекта

Некоторые фигуры могут предоставить лучший предварительный просмотр для некоторых шейдеров. Дополнительные сведения о способах предварительного просмотра шейдеров в конструкторе шейдеров см. в разделе Previewing shaders in Конструктор шейдеров.

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

Применение эффекта градиента к трехмерной модели поверхности

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

См. также

Задачи

Практическое руководство. Применение шейдера к трехмерной модели

Практическое руководство. Экспорт шейдера

Практическое руководство. Моделирование трехмерного ландшафта

Практическое руководство. Создание шейдера текстуры с использованием оттенков серого

Основные понятия

Конструктор шейдеров

Другие ресурсы

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