1. 程式人生 > >Unity Camera Clear Flags

Unity Camera Clear Flags

今天對Camera的Clear Flags 各個引數進行分析,懂的原理:

通過設定Camera的Clear Flags引數,在攝像機進行渲染前,對顏色緩衝及深度緩衝,進行不同控制操作。

Skybox :清除顏色緩衝和深度緩衝,沒有物體遮擋的背景,用天空盒子填充。

Solid Color :清除顏色緩衝和深度緩衝,沒有物體遮擋的背景,用 Camera 的另一個屬性Background的顏色填充。

Depth Only:只清除深度快取。

Don't Clear:顏色緩衝和深度緩衝都不清除。

在Unity中建一個場景,建立兩個攝像機CubeCamera、SyphereCamera,一個專門渲染Cube,一個專門渲染Sphere,設定CubeCamera的Depth為3,SyphereCamera的depth為2。Unity中,depth大的後渲染。

擺放Cube、Sphere、CubeCamera、SyphereCamera位置如下:



1.設定SyphereCamera的Clear Flags為Solid Color,Background為藍色,設定CubeCamera的Clear Flags為Solid Color,Background為黃色:

因為SyphereCamera先渲染,會先渲染球體,背景顏色為藍色。CubeCamera的Clear Flags為Solid Color,要渲染之前會先把顏色緩衝跟深度緩衝都清除,然後渲染到螢幕上是Cube,背景顏色是黃色。

2.設定SyphereCamera的Clear Flags為Solid Color,Background為藍色,設定CubeCamera的Clear Flags為Depth Only,Background為黃色:

因為SyphereCamera先渲染,會先渲染球體,背景顏色為藍色。CubeCamera的Clear Flags為Depth Only,要渲染之前先把深度快取清除,而顏色快取不會清楚,因為深度緩衝都被清除了,Cube的深度直接寫入到深度快取中,Cube就會把與Syphere重合的地方覆蓋掉。,背景顏色是藍色。結果如下:



3.設定SyphereCamera的Clear Flags為Solid Color,Background為藍色,設定CubeCamera的Clear Flags為Don't Clear,Background為黃色:

因為SyphereCamera先渲染,會先渲染球體,背景顏色為藍色。CubeCamera的Clear Flags為Don't Clear,在渲染前不會清除顏色快取和深度快取,這樣Cube被Sphere遮擋的部分,因為深度測試不通過,不會顯示出來。背景顏色為藍色。結果如下:

  


其他情況,讀者可以自己試驗一下。。。