你可以将全方位灯光与阴影贴图混合使用吗?

时间:2011-10-17 09:54:49

标签: glsl shader shadow

我为我的RPG实现了PSSM(并行分割阴影贴图)。它只使用“太阳”(一个方向灯高于上方。

所以我的问题是,是否有一种特殊的技术可以将最大4个全向灯添加到像素着色器?

它可以在某些方面起作用:

At the shadowmap application (or maybe at its creation):
if in light: do as usual

else: check if any light is close enough to light this pixel (and if, don't shadow it).

也许这甚至可以在阴影贴图生成中完成(因此过滤也将应用于那些泛光灯)

热烈欢迎任何提示或提示!

1 个答案:

答案 0 :(得分:3)

这个问题的答案是如此明显,以至于问题本身表明你已经走得太远了3D图形的黑客,需要记住所有这些实际应该做的事情。

阴影贴图是一种判断曲面上特定位置是否相对于场景中特定光线的阴影的方法。阴影贴图回答了问题:“表面上的点与光源之间是否存在固定的东西?”

如果此问题的答案为“是”,那么该光源对该点的照明计算没有贡献。如果答案是“否”,则确实如此。

表面上的点的颜色基于来自所有光源的入射光和表面上该点的表面特征(漫反射颜色,镜面光泽度,法线等)。每个灯光的所有计算都相互加入,以产生该点所代表的最终颜色值。

你一般也有各种黑客攻击。环境术语通常用于表示大量间接照明。光照贴图可以取代您未在着色器中动态计算的其他光源。等等。但最终,它们都只是灯光。

您的光照等式采用光参数(颜色,方向/位置,或仅环境光的环境强度)和表面特征(如上所述),并产生从表面反射的光量。由于来自一盏灯的反射率不受其他灯光反射率的影响,您可以为每盏灯独立计算。

所有这些值都加在一起以产生最终值。

您可以通过阴影贴图测试将其中一个的计算短路这一事实与整体方案无关。只需将各种照明术语相互添加,这就是您的答案。这样做没有“特殊技术”;你就是这样做的。