文章目录
一.Screenspace Shadow Map技术与传统Shadow Map技术区别
二.Screenspace Shadow Map简介
2.1Screenspace Shadow Map概括
2.2UpdateDepthTexture
2.3RenderShadowMap
2.4CollectShadows
一.Screenspace Shadow Map技术与传统Shadow Map技术区别
《Unity Shader入门精要》中P197页对二者的阐述如下
●传统Shadow Map
在传统的Shadow Map实现中,会在正常渲染的Pass中将顶点位置变换到光源空间中,使用其xy分量对ShdowMap进行采样,将得到的深度与该顶点的深度信息(由z分量得来)比较,若小于,则该点处于阴影中。
●Screenspace Shadow Map
Unity5中使用了屏幕空间的阴影映射技术(ScreenSpace ShadowMap),在Light Mode为ShadowCaster的pass中分别得到摄像机的深度纹理和光源的ShadowMap,从而得到一张屏幕空间的阴影图,通过对这张阴影图采样,就可以得到对应的阴影效果。
二者的区别可以概括为:
Screenspace Shadow Map会先计算所有的阴影结果,并将这些结果保存在一张屏幕空间的阴影纹理中,在渲染某个物体时,如果其开启了接收阴影选项,其阴影来源于对这张屏幕空间阴影纹理的采样。而传统Shadow Map技术不会提前