Unity shader中真的可以动态关闭Stencil Test吗?

这个问题很多年前就有人问了:

https://discussions.unity.com/t/how-to-disable-the-stencil-block-via-shader-properties/600273/1

最后的答案是:

set [_StencilComp] to CompareFunction.Disabled to disable the Stencil Op completely.

但是我测试了一下,Disabled只出现在了Frame Debugger中,使用RenderDoc截帧分析(DX11),设置的渲染状态仍然是StencilEnabled True:

但是我没有测试移动平台和DX12,但这应该是RHI无关的逻辑吧。

另外,如果Shader中根本不包含Stencil这段,则Stencil Eanble为false。

可是Stencil这段没法动态关闭。

由此可知,如果我上面的测试是正确的,UGUI的 UI/Default shader由于包含了Stencil,那么Stencil Test对于所有的UGUI Drawcall都是开启的。那么使用Mask似乎也不会额外影响性能了是吧,那还优化个啥呢

相关推荐
空中海2 小时前
第二篇:Unity中级阶段(核心开发能力)
unity·游戏引擎
DaLiangChen8 小时前
Unity 实用工具:动态绘制物体边界包围盒(支持屏幕固定线宽)
unity·游戏引擎
张老师带你学9 小时前
Unity 食物 农产品相关
科技·游戏·unity·游戏引擎·模型
mxwin9 小时前
Unity Custom Interpolators与半透明阴影的原理与实战
unity·游戏引擎·shader
晴夏。9 小时前
UE5第三人称模板实现及相关引擎源码分析
unity·ue5·游戏引擎·ue
HAPPY酷9 小时前
解决 Unreal Engine 编译报错 MSB4018:三个核心排查方向
游戏引擎·虚幻
晴夏。13 小时前
UE原生MovementBase实现分析
游戏引擎·ue·3c
天人合一peng14 小时前
Unity工程发布hololens需安装, MRTK安装
unity·游戏引擎·hololens
weixin_4093831215 小时前
godot 调用class方法得用实例 不能用脚本引用
游戏引擎·godot
风酥糖15 小时前
Godot游戏练习01-第32节-国际化
游戏·游戏引擎·godot