blend關於透明度的弊端和其alphatest的取捨

首先需要說明的是,計算機在渲染一個模型的時候,並不存在什麼混合模式可以選擇,這個會對我們開發遊戲的過程帶來一個麻煩。比如:如果一個模型有兩層,最終渲染出來結果是前面一層擋住了了後面一層,各位看官可能會覺得擋住就擋住啊,反正看不見,可是當前面一層是帶透明度的時候呢,怎麼辦,這時候計算機會將前面一層模型的像素在緩衝區裏取代後面一層模型之前在緩衝區中的緩存,也就是說渲染完這個模型後,計算機記錄下來的像素就是前面一層的像素,可是前面一層的像素是帶透明度的,那麼計算機就會把這個模型的這一部分當成了透明的來處理了。說了這麼多,我們看一下這個麻煩造成的實例:


按照現實中的常理,上圖的中間部分,應該是看到了背後的翅膀,可是現在的事實卻是看到了後面的一個白色物體,就是由於上述的原因造成,計算機只記錄了中間部分位於前方的顏色值。

博主覺得最好的解決方案應該是放棄blend模式,改用alphatest直接捨棄顏色值,當透明度小於閾值的時候,直接捨棄透明的顏色,計算機自然不會記錄下透明顏色。當然還有其他解決方案,比如渲染兩次,不過覺得消耗太高

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章