URP | Shader预定义UI

目的
学习ShaderUI基础语法。
对不同种类的整理
基础语法
Enum类(枚举)
枚举,最多可指定 7 个名称。常用的枚举类如下。
当然也可以自定义枚举,可以通过KeyWrod来控制。
混合模式
注意:用法

效果

深度开关
ZWriteMode是没有内置的,实际上也只有on和off两个状态,所以用Toogle其实也可以,我这里是直接用[Enum(Off, 0, On, 1)]这样的写法声明了个新的自定义Enum

剔除模式
是系统默认的是否开启 双面设置

Off 开启双面
Front 背面
Back 正面
深度测试
这个定义是系统默认的

颜色通道写入遮罩
这里第一个输出颜色通道

效果

这样就可以使用到,一张贴图不同通道的输出。
代码用法
IntRange
显示一个适用于 Range 着色器属性的整数滑动条。
效果

Header
显示一个头部名称。
[Header()]
注意:
不支持汉字,数字以及大部分符号
在着色器属性之前创建一个标题文本。
效果

Space
在两个变量之间增加空白
两种使用方法,一种是单独一行,也可以增加到属性变量前。
效果

KeywordEnum
关键字枚举,并启用相应的着色器关键字。它可在着色器中与“#pragma multi_compile”配合使用,以启用或禁用部分着色器代码。**每个名称都将 采用“属性名”+ 下划线 +“枚举名”**这种形式的大写着色器关键字。最多可提供 9 个名称。
注意:大写


Toggle类(开关)
以开关形式显示浮点值。属性值为 0 或 1,具体取决于开关状态。当开关处于打开状态时,将设置一个带有大写属性名称 +“_ON” 的着色器关键字,或者一个显式指定的着色器关键字。
效果

PowerSlider
显示一个具有对应于 Range 着色器属性的非线性响应的滑动条。意思就是,让Range滑杆更加方便调整细微的值。以
[PowerSlider(1.0)]
为分界,当值为1.0时,效果与range一致。当值<1.0时,值越大可调整的范围越大。当值>1.0时,值越小可调整的范围越大。可以更精细地在这些区间进行微调。当值为0.1时

我们可以看到他们俩的位置是不一样的,上面的会更精细的调整。
当值为10时

当值为0.1的时

总结:PowerSlider值类似曲线的控制值,值越大,小值的范围越好调整,值越小,大值的可调整范围越大。
总结
效果
面板属性

全代码
全代码