【URP趟坑】Unity在URP中使用RenderTexture在UI中渲染带透明相机背景的PostProcessing场景

文章介绍了在Unity的URP环境下,如何通过两个相机和Shader融合技术,克服RenderTexture不支持PostProcessingAlpha通道的问题,实现在UI中显示动态角色模型并保持透明背景的方法。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

最近有个需求,需要使用Unity的URP通用管线来开发项目,其中有个场景是需要在UI中显示动态的角色模型,而且背景是透明的。初闻这个需求感觉挺简单的,普通管线下使用Rendertexture输出相机视角的内容输入到RawImage中可以很轻松解决,不过在URP中Unity官方为了体现出可编程管线(SRP)的自由性,RenderTexture渲染PostProcessing的Alpha值全部都默认返回1,简单解释就是PostProcessing在Rendertexture中显示不再有半透明通道。


一、实现思路

在查询大量资料后也找到几种解决方案,虽然亲测后全都无用,不过也给我提供了一个思路:虽然PostProcessing在Rendertexture中不返回Alpha通道,不过只要不显示PostProcessing的相机就可以正常为Rendertexture输出Alpha,那就用两个相机,一个相机开启PostProcessing渲染,一个相机不开启PostProcessing,使用Shader将两个相机输出的RenderTexture的像素相乘,即可过滤带PostProcessing的Rendertexture中的背景,最后讲输出的图片显示在UI上即可。

二、开发环境

Unity2021.3.13f1c1
URP12.1.7
Amplify Shader Editor v1.9.1.5

三、使用步骤

1.创建像素融合的Shader

创建Shder我选择的是ASE第三方Shader可视化编辑器(操作简单适合Shader新手):

  1. 因为我是要显示在UI上,所以就创建一个UI默认shader:Create/Amplify Shader/UI/Default;
  2. 原理比较简单,这里就不作赘述,见下图:
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安东尼王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值