UI上使用RenderTexture顯示模型+AlphaBlend特效


顯示不全,到我的Github: https://github.com/garsonlab/RenderTuxture-AlphaBlend

解決Unity粒子在使用AlphaBlend模式時,在攝像機拍攝渲染RenderTexture時與相機背景融合問題

與背景混合的渲染 未與背景混合的渲染

UGUI研究院之在UI上使用RenderTexture顯示模型+AlphaBlend特效(二十五)
有一個解決方案,但是實測效果非常非常不理想,位置對不上,尤其是當模型和特效需要顯示在一個透明背景上時,幾乎是無解的。

故,另辟蹊徑,參考AnimationToPNG
設計思路:

Blend SrcAlpha OneMinusSrcAlpha // Traditional transparency

顏色混合方程式:C = Cs*scrA + Cd*(1-srcA) //式1

//如果,在相機渲染時,分別設置相機的背景為 Cd=(0,0,0,1) 和 Cd=(1,1,1,1)
//就可以得到兩個C,分別為Cblack, Cwhite, 即:

Cblack = Cs*srcA + (0,0,0)*(1-srcA) = Cs*srcA //式2
Cwhite = Cs*srcA + (1,1,1)*(1-srcA) = Cblack + (1,1,1)*(1-srcA) //式3

//即:
Cwhite.r = Cblack.r + (1-srcA) //式4
srcA = 1 - (Cwhite.r-Cblack.r) //式5

//此處求得原Alpha, 帶入上 //式2
Cs = Cblack/srcA

以上即可完整得到完整的渲染圖,避免重現對位置,單對不同的混合就又尷尬了,需要重新計算

附上一個自動創建RenderTexture的腳本:GRender,需配合GRenderShader一起使用

以及原代碼 AnimationToPNG


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM