【unity】 shader的渲染次序 實現,水只倒影 場景,不要倒影角色。
阿新 • • 發佈:2018-11-03
專案裡用了個比較簡化的水(手機上用的), 角色也會倒影在很遠的水面上。
因為用了
GrabPass{"_GrabTexture"} 接取相機的資料 再做水面效果的處理。
所以改了水和角色的 Queue配置。
這樣 水是2970 角色是2980 , 不能大於半透明,否則據說有些特效就會把角色蓋住。
因為用了
GrabPass{"_GrabTexture"} 接取相機的資料 再做水面效果的處理。
策劃希望只過濾掉 角色的影子。
本來想換相機 設一下mask 排除角色,用相機的RenderTexture ,網上有些例子就是這樣的。
http://www.ceeger.com/forum/read.php?tid=3162&fid=2
但開銷肯定變大不少。
後來請教了同事, 說shader 有渲染順序
參考 http://blog.csdn.net/candycat1992/article/details/37345251
渲染佇列 | 渲染佇列描述 | 渲染佇列值 |
Background | 這個佇列通常被最先渲染。 | 1000 |
Geometry | 這是預設的渲染佇列。它被用於絕大多數物件。不透明幾何體使用該佇列。 | 2000 |
AlphaTest | 通道檢查的幾何體使用該佇列。它和Geometry佇列不同,對於在所有立體物體繪製後渲染的通道檢查的物件,它更有效。 | 2450 |
Transparent | 該渲染佇列在Geometry和AlphaTest佇列後被渲染。任何通道混合的(也就是說,那些不寫入深度快取的Shaders)物件使用該佇列,例如玻璃和粒子效果。 | 3000 |
Overlay | 該渲染佇列是為覆蓋物效果服務的。任何最後被渲染的物件使用該佇列,例如鏡頭光暈。 | 4000 |
所以改了水和角色的 Queue配置。
這樣 水是2970 角色是2980 , 不能大於半透明,否則據說有些特效就會把角色蓋住。
渲染佇列 | 渲染佇列描述 | 渲染佇列值 |
Background | 這個佇列通常被最先渲染。 | 1000 |
Geometry | 這是預設的渲染佇列。它被用於絕大多數物件。不透明幾何體使用該佇列。 | 2000 |
AlphaTest | 通道檢查的幾何體使用該佇列。它和Geometry佇列不同,對於在所有立體物體繪製後渲染的通道檢查的物件,它更有效。 | 2450 |
Transparent | 該渲染佇列在Geometry和AlphaTest佇列後被渲染。任何通道混合的(也就是說,那些不寫入深度快取的Shaders)物件使用該佇列,例如玻璃和粒子效果。 | 3000 |
Overlay | 該渲染佇列是為覆蓋物效果服務的。任何最後被渲染的物件使用該佇列,例如鏡頭光暈。 | 4000 |