Математика освещения (Direct3D 9)

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

Global Illumination = Ambient Light + Diffuse Light + Specular Light + Emissive Light 

Внешнее освещение (Direct3D 9) — это постоянное освещение. Он является постоянным во всех направлениях и цветом всех пикселей объекта одинаково. Вычислить такое освещение очень быстро, однако объекты выглядят плоскими и нереалистичными. Сведения о расчете внешнего освещения с помощью Direct3D см. в разделе Ambient Lighting (Direct3D 9).

Диффузное освещение (Direct3D 9) зависит как от направления света, так и от нормальной поверхности объекта. Он изменяется на поверхности объекта в результате изменения направления света и изменения вектора числа поверхности. Для расчета рассеянного света требуется больше времени, поскольку он различается для каждой вершины объекта, однако преимущество его использования заключается в том, что он придает объектам оттенки и трехмерную глубину. Сведения о расчете рассеянного освещения в Direct3D см. в разделе Диффузное освещение (Direct3D 9).

Зеркальное освещение (Direct3D 9) определяет яркие зеркальные блики, возникающие, когда свет попадает на поверхность объекта и отражается обратно в сторону камеры. Он более интенсивный, чем рассеянный свет, и падает быстрее по всей поверхности объекта. На расчет отраженного освещения уходит больше времени чем на рассеянное освещение, однако его применение добавляет поверхности больше заметных деталей. Чтобы узнать, как вычисляется зеркальное освещение в Direct3D, см. статью Зеркальное освещение (Direct3D 9).

Излучающее освещение (Direct3D 9) — это свет, излучаемый объектом; например, свечение. Чтобы узнать, как вычисляется излучающее освещение в Direct3D, см. раздел Emissive Lighting (Direct3D 9).

Реалистичного освещения можно достичь путем применения каждого из этих типов освещения в трехмерных сценах. Значения, рассчитанные для фонового, излучаемого и рассеянного компонентов, выводятся как рассеянный цвет вершины, а значение для отраженного компонента освещения выводится как отраженный цвет вершины. Значения фонового, рассеянного и отраженного освещения могут меняться в зависимости от коэффициента затухания и узкой направленности источника. Дополнительные сведения о том, как работает затухание, см. в разделе Attenuation and Spotlight Factor (Direct3D 9).

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

Освещение вычисляется в пространстве камеры. Чтобы узнать, как вычисляются преобразования освещения, см. статью Преобразование пространства камеры (Direct3D 9). Оптимизированное освещение можно вычислить в пространстве модели, если существуют особые условия: нормальные векторы уже нормализованы (D3DRS_NORMALIZENORMALS имеет значение True), смешивание вершин не требуется, матрицы преобразования являются ортогональными и т. д.

Свет и материалы