Stage3D中的阴影投射着色器

时间:2013-12-06 11:26:59

标签: actionscript-3 fragment-shader vertex-shader stage3d agal

我一直在使用AGAL顶点和片段着色器进行大量工作。我已经正确点亮了单个对象(包括镜面着色),但我想让对象在其他对象上投射阴影。我已经在网上看了,但我认为大多数直接使用AGAL的人都建立了自定义的Stage3D库,并且阴影投射解决方案似乎不属于公共领域。有人愿意改变吗?
我想知道如何让一个物体在另一个物体上投下阴影。我无法发布我尝试过的内容,因为我无法理解这个问题的起点。你如何将信息(其他物体是否阻挡光线)传递到另一个物体的着色器中? 感谢。

1 个答案:

答案 0 :(得分:0)

IT称为延迟着色,您必须执行2遍顶点和片段着色器。 在第一遍中,你积累了关于距离,法线,遮挡的信息...... 在第二遍中,您渲染并应用第一遍的信息来制作阴影。

另一个选项是ShadowMapping:

基本阴影贴图

基本阴影贴图算法包含两个过程。首先,从光的角度渲染场景。仅计算每个片段的深度。接下来,场景将照常渲染,但通过额外的测试可以看到当前片段处于阴影中。

“在阴影中”测试实际上非常简单。如果当前样本远离光线而不是同一点的阴影贴图,则表示场景包含更接近光线的对象。换句话说,当前片段处于阴影中。