Смешивание нескольких образцов Glsl для зеркального освещения

#opengl #glsl #alpha #lighting #specular

#opengl #glsl #альфа #Освещение #зеркальный

Вопрос:

Как я могу смешать диффузную текстуру с зеркальной, какую функцию gL Blend мне следует использовать и когда. Мое зеркальное освещение основано на специальной текстуре, которая обладает прозрачностью. На данный момент я просто изменяю яркость пикселя относительно альфа-значения и объединяю результат с диффузной текстурой:

 "texture(SH_MAP, TextureCoords).rgba * texture(SH_MAP, TextureCoords).a"
vec4 m_TotalColor = m_DiffuesColor   m_SpecularColor;
  

Есть ли лучший способ добиться этого с помощью смешивания?

Ответ №1:

Обычно уравнение с уменьшением освещенности является (LightColor / DistanceSquared) * (DiffuseColor Specular)

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

Удачного затенения!