【本系列文章系学习 唐福幸《Unity ShaderLab 新手宝典》的笔记,包含个人理解,如有错误欢迎批评指出
透明效果
一句话总结:Unity在渲染不透明物体的时候会先渲染离相机近的物体,并记录物体每个片段的深度值,然后渲染远处的物体时,会先判断该片段的深度值是否是最小的,不是的话就把这部分片段丢了
7.1 不透明物体的渲染顺序
重叠绘制:从后往前(物体A、物体B)渲染,这种方法就会导致物体A有部分重复渲染,虽然渲染结果没有任何差错,但当场景中有许多物体的时候,这种重复渲染就会导致性能急剧降低。
实际上Unity对不透明物体的渲染顺序设定为:近处的物体优先绘制,再绘制远处的物体(当然不是跟上面一样直接绘制,那样不仅不能解决问题,还可能导致物体消失)
所以,引入新名词:深度值(Depth),又称Z值(存放在屏幕空间顶点坐标z分量上)。
第一步:渲染的时候,显卡会计算每个片段(还没像素化)与摄像机之间的距离(深度值),然后存储在深度缓存中,离相机越近,深度值越小,反之越大。
第二步:然后进行深度测试(ZTest),绘制图像的时候,显卡会将每一个片段的深度值与深度缓存中的值进行对比ÿ