3

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

4

1 回答 1

0

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

另一个选项是 ShadowMapping:

基本阴影贴图

基本的阴影贴图算法包括两个通道。首先,从灯光的角度渲染场景。仅计算每个片段的深度。接下来,场景像往常一样被渲染,但是通过额外的测试来查看当前片段是否在阴影中。

“在阴影中”测试实际上很简单。如果当前样本在同一点上比阴影贴图更远离灯光,这意味着场景包含更靠近灯光的对象。换句话说,当前片段处于阴影中。

于 2014-08-10T13:46:40.577 回答