Практическое руководство. Создание простейшего шейдера освещения с использованием модели Ламберта
В этом документе показывается, как использовать конструктор шейдера и Язык шейдера направленного графа (DGSL) для создания шейдера освещения, реализующего классическую модель освещения Ламберта.
Этот документ демонстрирует эти действия:
Добавление узлов в граф шейдеров
Отсоединение узлов
Соединение узлов
Модель освещения Ламбера
Модель освещения Ламбера включает внешнее и направленное освещение для затенения объектов в трехмерной сцене. Внешние компоненты предоставляют базовый уровень освещенности в трехмерной сцене. Направленные компоненты предоставляет дополнительное освещение из направленных (удаленных) источников света. Внешнее освещение влияет на все области в сцене одинаково, независимо от их ориентации. Для данной поверхности, это будет произведением окружающего цвета поверхности и цвета и интенсивности окружающего освещения в сцене. Направленное освещение влияет на каждую поверхность сцены по-разному, в зависимости от направленности поверхности относительно направленности источника света. Это продукт диффузного цвета и ориентации поверхности, а также цвета, интенсивности и направления источников света. Поверхности, обращенные непосредственно к источнику света, получают максимальный вклад, а поверхности, обращенные непосредственно от него, не получают никакого вклада. В модели освещения Ламберта, окружающий компонент и один или несколько направленных компонентов объединяются, чтобы определить общий вклад диффузного цвета для каждой точки объекта.
Перед началом убедитесь, что отображаются окно Свойства и Панель элементов.
Создать шейдера Ламберта
Создайте построитель текстуры DGSL, с которым будете работать. Дополнительные сведения о добавлении построителя текстуры DGSL в проект см. в подразделе "Начало работы" раздела Конструктор шейдеров.
Отключите узел Point Color от узла Final Color. Выберите терминал RGB узла Point Color, а затем выберите Break Links. Оставьте Alpha терминал подключенным.
Добавление узла Ламберт к диаграмме. В разделе Панель элементов в области Служебная программа выберите Ламберт и переместите ее на поверхность разработки. Узел Ламбера вычисляет полный вклад диффузного цвета пикселя, основываясь на внешних и диффузных параметрах освещения.
Присоедините узел Point Color к узлу Lambert. В режиме Select переместите терминал RGB узла Point Color к терминалу Diffuse Color узла Lambert. Это подключение предоставляет узел Ламбера с интерполированным диффузным цвета пикселя.
Присоедините вычисленное значение цвета к окончательному цвету. Переместите терминал Output узла Lambert к терминалу RGB узла Final Color.
На следующей иллюстрации показан готовый граф шейдеров и предварительный просмотр шейдера, применяемого к модели чайника.
Примечание
Для лучшей демонстрации эффекта шейдера на этом рисунке оранжевый цвет определен с помощью параметра шейдера MaterialDiffuse.Игра или приложения могут использовать этот параметр, чтобы указать уникальное значение цвета для каждого объекта.Дополнительные сведения о параметрах материалов см. в разделе Предварительный просмотр шейдеров в Конструктор шейдеров.
Некоторые фигуры могут предоставить лучший предварительный просмотр для некоторых шейдеров. Дополнительные сведения о предварительном просмотре шейдеров в конструкторе шейдеров см. в разделе Предварительный просмотр шейдеров Конструктор шейдеров
На следующей иллюстрации показан описанный в этом документе шейдер, примененный к трехмерной модели.
Дополнительные сведения о применении построителя текстуры к трехмерной модели см. в разделе Практическое руководство. Применение шейдера к трехмерной модели.
См. также
Задачи
Практическое руководство. Применение шейдера к трехмерной модели
Практическое руководство. Экспорт шейдера
Практическое руководство. Создание простейшего шейдера освещения по методу Фонга