https://www.zhihu.com/question/60898307
https://www.jianshu.com/p/e953e937e210
在学习冯乐乐的《Unity Shader入门精要》时有了一个疑问:
为什么半透明模型的渲染要使用深度测试而关闭深度写入?
深度测试与混合的大概流程
深度测试与深度写入是什么关系?
深度测试的意义在于舍弃片元与否。
深度写入的意义在于深度测试的基础上,要不要覆盖深度缓冲,即重新设立深度测试的标准。
因此,结论如下:
进行半透明渲染需要开启深度测试的原因是,如果半透明物体被不透明物体挡住了,那么该fragments是不需要写入到帧缓冲的,也就是说开启深度测试是为了保证不透明物体和半透明物体之间正常的遮挡关系;
而关闭深度写入也很好理解,因为开启深度写入后我们会得到这样一种错误的结果,那就是近处的半透明fragme