Unity3D 正确地把RT渲染到UI上

本文详细探讨了如何在Unity3D中将渲染目标(Render Texture)上的内容正确地与UI结合。通过数学公式解析,解释了如何处理背景颜色,确保在将RT内容显示到RawImage上时,仅替换黑色背景为UI背景,同时保留RT上的其他颜色信息。关键在于Shader的配置,包括Blending选项和Color Mask设置,以存储并重新计算最终的像素颜色。
摘要由CSDN通过智能技术生成

假设在RT上去渲染一个Pixel,RT的背景颜色是B,按顺序去写颜色,先写A1, 再写A2,那么最终的到的颜色

Art = (A1 Blend (A2 Blend B))

展开 :

A2 Blend B = A2 * f2 + B * f2'

A1 Blend (A2 Blend B) = A1 * f1 + (A2 * f2 + B * f2') * f1'

得到 :

Art = A1 * f1 + (A2 * f2 + B * f2') * f1' = A1 * f1 + A2 * f2 * f1' + B * f2' * f1'

C = A1 * f1 + A2 * f2 * f1' 

T = f2' * f1'

得到 Art= C + T * B


问题来了,如果你拿一张RT渲染到 RawImage 上,按照以上的公式来推导,得到:

Bi = UI 的背景颜色

A = Art Blend Bt = Art * frt + Bt * frt' =  (C + T * B) * frt + Bt * frt' 

但是实际上,我们真正需要的只是想把RT上的黑色背景替换为UI的背景,再覆盖到UI上而已,也就是

A = C + T * Bi


那我们要实现A = C + T * Bi,要怎么做。

这里的做法就是,把C, T 都存到RT上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值