我最近在 OpenGL 4.3 中使用体素锥体跟踪实现了软阴影,方法是在光的方向上跟踪一个锥体并累积不透明度值。
我试图解决或隐藏的关键是当被遮挡的表面更接近遮挡物时非常体素化的阴影效果,以及由于表面体素化而隐藏阴影中的清晰点。我正在使用 64x64x64 的低分辨率体素;然而,即使我使用了更高分辨率的体素,一些较高 mip-map 级别的低分辨率体素仍会在跟踪中捕获。
所以这是我的第一个想法:我希望能够保留最远的阴影最柔和的部分,并用阴影贴图替换更靠近遮挡物的阴影部分。阴影贴图会随着它远离每个遮挡物而褪色,我会以某种方式将它与锥形跟踪阴影混合。
谁能想到一种方法来根据与每个对象的距离为阴影贴图淡化阴影,然后让它平滑地融合到锥形跟踪阴影中?
我的另一个想法是以某种方式在更接近遮挡物的表面上跟踪阴影,但这可能太昂贵了。
或者,我欢迎任何其他想法来帮助改进我的软阴影算法。
我还放了一段视频来展示它的动态:
https://www.youtube.com/watch?v=SUiUlRojBpM
仍然没有找到解决阴影问题的方法。