着色器参数控件
用 // @param 在 Layer Settings 中添加字段。WhimTex 自动创建 uniform 和控件;修改声明或代码后点击 Apply。
从数字和颜色开始
// @param float _Amount = 1 [0 .. 1]
// @param color _Tint = #FFAA66
float4 ApplyFX(float2 uv, float4 color)
{
return float4(lerp(color.rgb, color.rgb * _Tint.rgb, _Amount), color.a);
}
此效果为 RGB 染色,保持 Alpha 不变。_Amount 初始为 1,滑块范围为 0–1。
输入纹理、坐标空间和全部参数类型见 HLSL 参考。
标签与标题栏控件
| 指令 | 用途 |
|---|---|
// @param label(Tint Strength) float _Strength = 1 |
设置易读的标签。包含括号时使用引号。 |
参数声明中的 hidden |
隐藏普通字段行,不改变数值或 HLSL 行为;可放在 label(...) 前或后。 |
// @control(_Opacity) |
在 FX 标题栏 ⋮ 前显示一个已有参数。 |
// @header(Lighting) |
在下一个参数前添加不可折叠的加粗标题。 |
// @helpbox(提示文字。) |
在下一个参数前添加信息提示。 |
将 @control 放在 // @whimtex-effect Category/Name 后紧接的一行;没有目录标记时放在第一行。
支持 bool、enum、float、color 和 float2/3/4。不使用 hidden 时,标题与正文控件修改同一数值。
不支持的类型不会改变标题。重复指令会发出警告,以最后一个为准。
这些指令只描述界面:透明度控件不会自动添加混合。 没有后续参数的标题和提示会被忽略。预设和导出代码会保留这些元数据。
条件与分组
使用 @if 仅显示当前模式需要的选项:
// @param enum _Mode = 0 { Basic: 0, Advanced: 1 }
// @if _Mode == 1
// @param float _Detail = 0.5 [0 .. 1]
// @param bool _UseExtra = false
// @endif
条件支持数值 == 和 != 比较,引用的 float、bool 或 enum 必须无条件声明。
条件不可嵌套。隐藏的值仍存在并影响 HLSL;若模式应改变计算,也要在着色器内分支。
预设导出保留条件。
用 // @group(Tint; _Parameter) 和 // @endgroup 组织相关字段。
关联参数必须在该组内无条件声明。
| 参数类型 | 标题栏行为 |
|---|---|
| bool | 标题左侧复选框,只改变数值;用 @if 隐藏依赖字段。 |
| enum、float、color、float2/3/4 | 标题右侧紧凑字段,以组名为标签;拖动 float 标题可调整数值。 |
| 不支持或多行类型 | 留在正文,标题保持普通样式。 |
关联的紧凑字段不再出现在正文中。hidden 不隐藏受支持的关联标题控件;未关联的隐藏字段仍不可见。
条件隐藏所有正文行后,只保留标题。
组内可以有 @if,但不能嵌套其他组。
// @group(Advanced) 创建普通标题组,// @group 创建无标题边框。
曲线默认值
例如,// @param curve _Profile = easeInOut 创建一个曲线字段。
| 默认值 | 形状 |
|---|---|
linear |
从 (0,0) 到 (1,1) 的直线。 |
easeInOut |
相同端点,两端平滑趋于水平。 |
easeIn / easeOut |
0→1 二次曲线,缓慢起步 / 结束。 |
one |
恒为 1,关键点时间为 0 和 1。 |
重命名参数
将 // @formerlyserializedas(_OldName) 放在新的 // @param 声明紧前面。
Apply 会转移兼容的已保存数值及参数标识。多个旧名称可重复声明;HLSL 中使用新的 uniform 名称。
预设导出保留这些别名。
坐标与时间
LayerToLocal(uv) 让程序化形状跟随图层变换。详见坐标约定。
输入和参数不变时,FX 与 Shader Processor 缓存结果。
依赖时间的效果应使用显式参数。Unity 时间输入(_Time、_SinTime、_CosTime、_TimeParameters、unity_DeltaTime)不受支持:
虽然允许声明,但 Apply 会警告并为该结果停用缓存。