Unity的阴影

Unity中使用一个LightMode设置为ShadowCaster的Pass来收集计算出阴影映射纹理(深度纹理),如果你的Shader中没有定义这样的Pass,Unity就是在Fallback中去找,知道找到或则没有Fallback为止,没有找到的话就不会参与阴影的投射但可以接受阴影。

屏幕空间的阴影映射技术,Unity5中使用了这种技术,需要显卡支持MRT。首先通过LightMode为ShadowCaster的Pass来得到可投射阴影的光源的阴影映射纹理和摄像机的深度纹理来得到屏幕空间的阴影图。如果摄像机的深度图中记录的表面深度大于转换到阴影映射纹理中的深度值,就说明该表面虽然是可见的但是却处于该光源的阴影中,这样的话,阴影图就包含了屏幕空间中所有有阴影的区域。由于阴影图是屏幕空间下的,我们将表面坐标从模型空间变换到屏幕空间中,然后使用这个坐标对阴影图进行采样即可。


首页 我的博客
粤ICP备17103704号