GPU渲染流程学习_02_阴影

来源:互联网 发布:windows api大全 编辑:程序博客网 时间:2024/06/16 13:32

1:投射阴影

               如果我们想要一个物体向其他物体投射阴影,就必须把该物体加入到光源的阴影映射纹理的计算中(从而让其他物体在对阴影映射纹理采样时可以得到该物体的相关信息,并接收阴影)。在unity中,这个过程是通过为该物体执行LightMode为ShadowCaster的Pass来实现的。如果使用了屏幕空间的投影映射技术,unity还会使用这个Pass产生一张摄像机的深度纹理。


2:接收阴影

              如果我们想要一个物体接收来自其他物体的阴影,就必须在Shader中对阴影纹理映射(包括屏幕空间的阴影图)进行采样,把采样结果和最后的光照结果相乘来产生阴影效果。


3:产生阴影的过程的理解

               假设放一个摄像机与光源重合,那么场景中该光源的阴影区域就是那些摄像机看不到的地方。计算并得到他的阴影映射纹理(shadowmap),本质上也是一张深度图。
       通过摄像机(Main Camera)的深度图计算出屏幕像素的三维位置,然后转换为世界坐标位置-->光源坐标位置,与光源空间的阴影映射纹理比较,如果某一个像素的摄像机的深度图中记录的深度大于光源空间下的阴影映射纹理,则说明该像素在阴影下。


原创粉丝点击