【发布时间】:2013-08-14 04:20:53
【问题描述】:
我正在制作一个 2D 横向卷轴游戏,我目前正在实现灯光。灯光只是在地形顶部渲染的灯光渐变纹理,相乘以使其照亮该区域。但是,我不知道怎么做,也不知道怎么做环境光。下图总结了我所拥有的,底部是我想要的。
我愿意接受有关着色器的答案,因为我知道如何使用它们。
【问题讨论】:
-
环境光很简单,它是在没有任何光源的情况下的基础照明颜色。它在您的整个材质中是均匀的,并且由于它没有方向,您可以将它与光照模型中累积的漫反射项结合起来。如果您要进行多通道照明,您将首先执行一个通道,其中地形由您的恒定环境项调制,然后为每个附加光的漫反射/镜面反射贡献进行加法混合。
-
所以当我渲染地形原始纹理的三角形时,我需要将它通过环境光照着色器?
-
有点。实际上,您想要做的是累积每个灯光的所有光照项(加上全局环境项),然后在最后用这个值调制基础纹理颜色。所以你真的会按照这个顺序进行加法混合:环境、Light0、Light1、Light2、...、Light N,然后是使用基础纹理颜色的最后一次乘法混合。它是:(Ambient + Diffuse
)* Base Color -
只是为了澄清术语。环境光是间接照明的粗略近似。由于间接光只能增加亮度,因此您不希望它达到底部图像。要使图像中的某个区域变暗,您可以简单地减少光照图中的相应因子
-
非常好,这很有帮助。