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

顯示不全,到個人Github: https://github.com/garsonlab/RenderTuxture-AlphaBlendphp

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

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

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

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

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

以上便可完整獲得完整的渲染圖,避免重現對位置,單對不一樣的混合就又尷尬了,須要從新計算3d

附上一個自動建立RenderTexture的腳本:GRender,需配合GRenderShader一塊兒使用code

以及原代碼 AnimationToPNGget

相關文章
相關標籤/搜索