Three.js - 使用延迟渲染为区域光添加阴影

时间:2013-02-23 07:47:20

标签: rendering three.js webgl deferred shadows

我正在使用WebGLDeferredRenderer创建一个简单的场景(由模拟房间的立方体和两个小立方体来测试阴影),但是我无法显示场景中使用的区域光所产生的任何阴影!

this demo中有3个区域灯,但没有一个灯在单个物体上产生阴影(它们只照亮“房间”)。

我可以用任何特定的着色器来解决这个问题吗?或者更好......有没有机会在延迟渲染中投射阴影? :)

4 个答案:

答案 0 :(得分:3)

使用WebGLDeferredRenderer的延迟渲染,three.js r.56目前不支持阴影。

以下是两个示例,其中点光源和聚光灯使用three.js中的延迟渲染投射阴影,但它们使用修改版本的库

http://alteredqualia.com/three/examples/webgl_deferred_shadowmap.html

http://alteredqualia.com/three/examples/webgl_deferred_shadowmap_point.html

然而,还没有区域灯的例子。

所以你想要的是可行的,尚未支持,而不是区域灯。

three.js r.56

答案 1 :(得分:0)

使用定向或点光源。区域灯不会投射阴影。

答案 2 :(得分:0)

我认为区域光阴影尚未实现,尽管有人可能正在研究它,以便将来可能实现。你可以尝试自己做,但这需要一些严肃的编程技巧,这不是一个容易解决的问题:)

我认为目前你可以在延迟渲染器中使用点光源和方向光影,甚至可以使用点光源。

你可以通过使用低强度的不同灯光类型来伪造阴影,但这可能看起来有点不稳定。

答案 3 :(得分:0)

我认为你必须根据区域的大小来推回你的阴影贴图来源...你也可以根据你需要多长时间推动你的影子过滤器的近距离过滤来预测它。