作为一个初学者,最近开始研究Unity中的Shader,在研究一个案例《BlackSmith》时发现其使用render texture时所选择的格式为shadowmap,于是便打算研究一下这种存储格式。
首先,这里是在Unity官方文档中对shadowmap的介绍:
这是一种自带的shadowmap格式。
这种格式的数据可以GPU自动完成对这种数据格式的shadowmap比较计算。当设备支持时,Unity在内部使用这种数据格式进行阴影计算。需要注意的是,在某些平台或GPU不支持shadowmap格式的情况下,阴影将会使用RenderTextureFormat.Depth格式进行计算。
由于并不是所有显卡都支持shadowmap,使用SystemInfo.SupportsRenderTextureFormat方法去检查设备是否支持此格式。
从官方的描述中我们可以看出,shadowmap的数据格式应该和Depth格式相似,因此猜测shadowmap中也是存储的Depth值,且存储于R通道中,距离camera越近Depth值越小,距离Camera越远Depth值越大,camera近裁面D