AlphaTest與AlphaBlend對(duì)比

先說(shuō)說(shuō)使用場(chǎng)景吧。
假如場(chǎng)景中要做一顆有很多樹葉的大樹,那么可能會(huì)有兩種做法。

  • 每個(gè)樹葉做成真實(shí)模型,使用非透明貼圖
    會(huì)導(dǎo)致面數(shù)極大的增加

  • 每個(gè)樹葉做成一個(gè)片面,使用透明貼圖
    這會(huì)極大的減少面數(shù)

然后使用透明貼圖, 又可以分成兩種做法

  • 使用AlphaBlend
    就是普通的透明物體渲染,也會(huì)存在透明物體渲染的問題(交叉物體的透明渲染問題)

參見這里 http://www.itdecent.cn/p/e953e937e210

  • 使用AlphaTest
    將透明的像素剔除,只保留非透明的像素。不會(huì)出現(xiàn)交叉物體的透明渲染問題,但會(huì)造成性能問題(所有被其它物體遮擋,或者被自身遮擋的像素都會(huì)執(zhí)行片元著色)

參見文尾 http://www.itdecent.cn/p/fa94dd910a1b

那么到底使用哪種方案比較好呢,先總結(jié)一下:

方案 缺點(diǎn)
1. 非透明渲染 面數(shù)太多
2. AlphaBlend 深度問題
3. AlphaBlend 寫深度 多一個(gè)Pass
4. AlphaTest 所有像素都會(huì)執(zhí)行片元著色

那么,對(duì)于大樹這個(gè)需求,哪個(gè)方案比較合適呢?繼續(xù)分析。

  • 如果面數(shù)不會(huì)很多,那么方案1是最好的
  • 如果交叉物體的透明渲染問題可以接受,那么方案2是透明貼圖方案中最好的
  • 方案3不太適用于樹葉這個(gè)需求,因?yàn)闃淙~是一個(gè)面片,第一個(gè)Pas中寫了深度會(huì)導(dǎo)致樹葉透明部分會(huì)遮擋后面的樹葉,而且多一個(gè)Pass。DrawCall翻倍。
  • 方案4雖然使用了透明貼圖,但實(shí)質(zhì)上與非透明物體渲染一致(隊(duì)列不同)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容