Unity Shader - sahder变体剔除

141 篇文章 31 订阅


吐槽

我之所以单独写这边文章,是因为之前写的一篇: Unity Shader - Built-in管线下优化变体,编辑后,无法保存,一直提示:操作超时。
在这里插入图片描述

等了差不多 30S~60S,就出现: 操作超时请重试。
在这里插入图片描述

已经能确定的是,这个问题,100% 必现。从上周就出现,到现在,就是比我不再使用 XSDN。

打开CSDN首页里面的连接,是秒开的,到底怎么回事,看来准备博客搬家。


优化方案 - 目前最靠谱的方式


shader

注意尾部我们增加了一些 CUSTOM_SKIP_START(xxx)CUSTOM_SKIP_END 注释来方便剔除的

Shader "xxx"
{
	Properties {}
	XXXPROGRAM
	...
	#pragma multi_compile _ A
	#pragma multi_compile _ B
	#pragma multi_compile _ C
	ENDXXX
}

// jave.lin :
// completely_match_group : 完全吻合的变体,就是不多也不少的匹配规则
// CUSTOM_SKIP_START(completely_match_group)
A C
// CUSTOM_SKIP_END(xxx)

// jave.in :
// any_match_group : 只要变体中 同时存在 A B 的
// CUSTOM_SKIP_START(any_match_group)
A B
// CUSTOM_SKIP_END(xxx)

// jave.lin :
// pass_type : 剔除整个 pass_type 类型
// CUSTOM_SKIP_START(pass_type)
ForwardAdd
// CUSTOM_SKIP_END

// jave.lin :
// 其他的规则可以自行添加
// 如果是想要剔除 多个变体,只要包含,就剔除,可以使用unity shaderlab自带的: #pragma skip_variants xxx1 xxx2 xxx3

csharp

IPreprocessShaders 接口实现中,我们要对 shader 的 CUSTOM_SKIP_START(xxx)CUSTOM_SKIP_END 提取
然后这个 shader 变体是否需要剔除

这里的代码我就不写了,具体可以参考:Unity Shader - Built-in管线下优化变体里面的 IPreprocessShaders 接口的使用

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值