顯示不全,到我的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
