Unity - URP记一次 UGUI Mask无效的问题(自己挖坑自己填)


问题

正常 UGUI ScrollView 中的 Viewport 对带有 Mask 组件的功能,其实就是 write stencil buffer 1

然后后续的 渲染对象 equal stencil 1 才通过而已,然后所有子对象绘制完后,会再试绘制 viewport 对应的区域重置这些像素的 stencil,具体可以查看我之前的一篇:Unity - 搬砖日志 - RenderDoc 分析为何 UGUI ScrollView 下 Stencil 不能与 其他 3D 层的对象有交互?(Mask 组件的问题)

下面是我们项目中的一个使用到 UGUI ScrollView 的某块区域,下面是 Built-in RP 下渲染是正常的:
在这里插入图片描述

下面是在 URP 中 自己挖坑后,显示不正常,如下:
在这里插入图片描述


分析

然后使用 Frame Debug 来分析

先来分析一下,Built-in RP 中正常的数据:
在这里插入图片描述

再来看看,切换到 URP 中的异常数据:
在这里插入图片描述

怎么样?发现问题在哪了吗?

OK,这里就不考验大家眼里,直接给出答案:
在这里插入图片描述


然后我想起了,之前在玩弄:Universal Render Pipeline Asset 和 Forward Renderer 或是 Renderer Feature 的时候,记得有一些 Overrides 是包含了 Stencil 的覆盖设置的

所以啊,我就定位大概是这个方向

如下图:
在这里插入图片描述

可以看到 Overrides/Stencil 的 Value == 0, Compare Function == Always

确实是和 Frame Debug 查看到渲染异常状态的数据是一直的:
在这里插入图片描述


解决

将上面那个:Overrides/Stencil 去掉就修复好了
在这里插入图片描述


挖坑起因

因为项目需要将 Built-in RP 升级到 URP

但是,我们项目算是开发得七七八八的

然后中途换的话,我之前又没去了解过 URP

所以文档啊,什么资料啊,能看的基本上都看了


但是啊,之前为了学习、研究:

我在创建的 Universal Render Pipeline Asset 资源 后,对生成的 Forward Renderer 配置资源的:
Override/Stencil 不小心勾上了,然后忘记去掉了

就导致一系列的 Stencil 问题,虽然这篇文章写着的是 UGUI Mask 无效,但其实,会对整个渲染管线中,只要 Camera 的 Renderer 设置为这个 Overrides/Stencil 够上了的相机渲染时用到 Stencil 功能都可能会异常

UGUI Mask 刚刚好是一个发现这个错误的契机

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值