用于镜面照明的Glsl多样本混合

问题描述

如何将漫反射纹理与高光混合,应该何时使用gL Blend函数。 我的镜面照明基于具有透明度的特殊纹理。 现在,我只是改变相对于alpha值的像素亮度,并将结果与​​漫反射纹理相结合:

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

有没有更好的方法来实现这一目的?

解决方法

通常带有光衰减的方程为(LightColor / DistanceSquared) * (DiffuseColor + Specular)

加法是混合镜面反射色和漫反射色的正确方法,只要它在某个时刻与浅色相乘即可。使用线性颜色时,请记住所有操作后都转换为伽玛空间。

快乐的阴影!