Приложения для установки источников освещения
Рассмотрим наше приложение, демонстрирующее установку освещения. В приложении используется модель тора, кольца, загружаемая из внешнего файла. Данная модель уже имеет набор нормалей, так что дополнительно их рассчитывать не нужно. В приложении устанавливается несколько источников освещения, координаты их динамически меняются и передаются в шейдер. Рассмотрим все вхождения в коде, касающиеся источников освещения. В начале установим переменную для буфера констант шейдера.
Далее мы создадим структуру ConstantBuffer. Эта структура будут хранить вместе с остальными константами шейдера, нужные нам массивы координат и цветов для нескольких источников освещения:
Теперь всё готово, чтобы при каждом вызове функции Render устанавливать наши источники освещения. Сначала заполним их значениями. В качестве координат источников света используем динамически меняющиеся орбитальные координаты:
Всего установим три источника освещения. Координаты рассчитаны, теперь осталось предать значения координат в шейдер:
Теперь перейдем от нашего приложения к коду шейдера. Рассмотрим вершинныйшейдер для нашего приложения.
Обратите внимание на строку, в которой в цикле рассчитывается переменная output.Color. Данная строка полностью соответствует формуле, рассмотренной ранее в данном уроке: В пиксельном шейдере просто передадим данные о цвете, пришедшие из вершинногошейдера. Таким образом, код пиксельногошейдера просто копирует входящие данные о цвете из вершинного шейдера. Обзор приложения Теперь можно скомпилировать и запустить наше приложение. Исходный код данного приложения, а также само приложение вы можете скачать тут. В приложении используется три источника освещения. Вообще количество источников неограниченно. В шейдере приложения используется формула из этого урока для расчета интенсивности освещения объекта. В качестве освещаемого объекта используется тор, так как эта геометрическая фигура, ввиду сложного расположения нормалей, не может быть освещена корректно, если метод и расчет освещения неверен. Но наша формула замечательно функционирует, и, таким образом, из этого урока мы точно узнали, где находится Кольцо и кто на самом деле является его Властелином; сегодня это шейдеры. ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|