剔除和深度測試是渲染法線中的一個流程
Cull:默認情況下,Unity中給的所有Shader都是單面的,它都把反面的渲染給關閉掉了,如果你在開發的過程中需要使用到雙面,只要把cull關閉(off)即可!
ZWrite:深度緩存ZWrite默認情況下都是開啟的,因為我們3D場景中的模型非常多,那么模型與模型之間的前后關系就是由ZWrite來控制的,所以默認情況下要開啟,前面已經介紹過它了
直接看效果來介紹
Cull:Unity中給的所有Shader都是單面的,它都把反面的渲染給關閉掉了,我們來看下圖就知道什么回事了,我們來新建一個Plane,看下它就知道了,
這是cull back時的效果,前面被繪制了,后面被剔除了,unity中默認也是這樣的
當cull為fornt時,只有后面繪制了,前面被剔除了,效果為:
當cull為off時,正反兩面都被繪制了,效果為:
ZTest:對這個了解的還不是很透徹,先這樣理解吧,后面了解了,會更新!
如上所述,默認為LEqual,就是繪制前面的對象與現有對象有一段距離的對象,隱藏現有對象后面的對象
LEqual為lessEqual小於等於,可以理解為如果自己的深度小於或者等於某些物體時,就繪制這些物體,反之,進行隱藏處理!
如果為greater時,就繪制那些深度小於自己的物體,而自己所有面積都隱藏,而如果深度大於自己的話,那么自己顯示的面積為:自己和深度大於自己的物體相交的面積部分,而深度大於自己的物體面積全顯示
實例:場景中新建一個cube,再新建一個capsule,分別為兩個物體創建兩個默認的shader,兩個物體的x和y軸是一樣的,
而capsule更靠近攝像機,而cube是會被capsule遮擋的,如圖所示
此時我們設置capsule的ztest為greater,效果如下:
always:表示無論被不被遮住,都一直繪制,一般用在當人物被牆壁等物體遮擋時,要以一種描邊的效果展示: