这是 Unity Shader Graph(着色器视图)的可视化速查表。该工具用于在流行的游戏引擎 Unity 中创建自定义着色器材质。
我们使用
输入
| - | - | - |
|---|---|---|
| / | 无输入 |
输出
| - | - | - |
|---|---|---|
Vector3 |
提供顶点位置 |
输入
| - | - | - |
|---|---|---|
| / | 无输入 |
输出
| - | - | - |
|---|---|---|
Vector3 |
提供表面法线 |
输入
| - | - | - |
|---|---|---|
| / | 无输入 |
输出
| - | - | - |
|---|---|---|
Vector3 |
世界空间位置 |
输入
| - | - | - |
|---|---|---|
| / | 无输入 |
输出
| - | - | - |
|---|---|---|
Vector3 |
局部空间位置 |
输入
| - | - | - |
|---|---|---|
| / | 无输入 |
输出
| - | - | - |
|---|---|---|
Vector4 |
屏幕空间位置 |
输入
| - | - | - |
|---|---|---|
| / | 无输入 |
输出
| - | - | - |
|---|---|---|
Vector3 |
摄像机世界空间位置 |
输入
| - | - | - |
|---|---|---|
| / | 无输入 |
输出
| - | - | - |
|---|---|---|
Float |
时间 (T) - 自着色器启动以来经过的总时间 | |
Float |
正弦时间 (T/8π) - 基于时间的正弦波 | |
Float |
余弦时间 (T/8π) - 基于时间的余弦波 | |
Float |
增量时间 - 上一帧与当前帧之间经过的时间 |
输入
| - | - | - |
|---|---|---|
Float Vector |
第一个值 | |
Float Vector |
第二个值 |
输出
| - | - | - |
|---|---|---|
| SAIT | 两个输入的和 |
输入
| - | - | - |
|---|---|---|
Float Vector |
被减数 | |
Float Vector |
减数 |
输出
| - | - | - |
|---|---|---|
| SAIT | 两个输入的差 |
输入
| - | - | - |
|---|---|---|
Float Vector Matrix |
第一个值 | |
Float Vector Matrix |
第二个值 |
输出
| - | - | - |
|---|---|---|
| SAIT | 两个输入的积 |
输入
| - | - | - |
|---|---|---|
Float |
底数 | |
Float |
指数 |
输出
| - | - | - |
|---|---|---|
Float |
底数相对于指数的幂的结果 |
输入
| - | - | - |
|---|---|---|
Float |
输入值 |
输出
| - | - | - |
|---|---|---|
Float |
输入的平方根 |
输入
| - | - | - |
|---|---|---|
Float Vector |
输入值 |
输出
| - | - | - |
|---|---|---|
| SAIT | 输入的绝对值 |
输入
| - | - | - |
|---|---|---|
Vector3 Vector4 |
第一个向量 | |
Vector3 Vector4 |
第二个向量 |
输出
| - | - | - |
|---|---|---|
Float |
点积结果 |
输入
| - | - | - |
|---|---|---|
Vector3 |
第一个向量 | |
Vector3 |
第二个向量 |
输出
| - | - | - |
|---|---|---|
Vector3 |
叉积结果 |
输入
| - | - | - |
|---|---|---|
Float |
输入(弧度) |
输出
| - | - | - |
|---|---|---|
Float |
输入的正弦值 |
输入
| - | - | - |
|---|---|---|
Float |
输入(弧度) |
输出
| - | - | - |
|---|---|---|
Float |
输入的余弦值 |
输入
| - | - | - |
|---|---|---|
Float Vector |
起始值 | |
Float Vector |
结束值 | |
Float Vector |
插值因子 (T) |
输出
| - | - | - |
|---|---|---|
| SAIT | 插值结果 |
输入
| - | - | - |
|---|---|---|
Float Vector |
阈值 | |
Float Vector |
输入 |
输出
| - | - | - |
|---|---|---|
| SAIT | 阶跃结果 |
输入
| - | - | - |
|---|---|---|
| / | 无输入 |
输出
| - | - | - |
|---|---|---|
Vector4 |
RGBA 颜色值 |
输入
| - | - | - |
|---|---|---|
Vector4 |
第一个颜色 | |
Vector4 |
第二个颜色 |
输出
| - | - | - |
|---|---|---|
Vector4 |
两个颜色的和 |
输入
| - | - | - |
|---|---|---|
Vector4 |
第一个颜色 | |
Vector4 |
第二个颜色 |
输出
| - | - | - |
|---|---|---|
Vector4 |
两个颜色的积 |
输入
| - | - | - |
|---|---|---|
Vector4 |
起始颜色 | |
Vector4 |
结束颜色 | |
Float |
插值因子 (T) |
输出
| - | - | - |
|---|---|---|
Vector4 |
插值后的颜色 |
输入
| - | - | - |
|---|---|---|
Vector4 |
输入颜色 | |
Float |
饱和度因子 |
输出
| - | - | - |
|---|---|---|
Vector4 |
调整后的颜色 |
输入
| - | - | - |
|---|---|---|
Vector4 |
输入颜色 | |
Float |
对比度因子 |
输出
| - | - | - |
|---|---|---|
Vector4 |
调整后的颜色 |
输入
| - | - | - |
|---|---|---|
Vector4 |
输入颜色 | |
Float |
色相偏移量 |
输出
| - | - | - |
|---|---|---|
Vector4 |
色相偏移后的颜色 |
输入
| - | - | - |
|---|---|---|
Vector4 |
输入颜色 |
输出
| - | - | - |
|---|---|---|
Vector4 |
反转后的颜色 |
输入
| - | - | - |
|---|---|---|
Vector4 |
输入颜色 | |
Vector4 |
目标颜色 | |
Vector4 |
替换颜色 |
输出
| - | - | - |
|---|---|---|
Vector4 |
替换值后的颜色 |
输入
| - | - | - |
|---|---|---|
Vector4 |
输入颜色 | |
Float |
色温值 | |
Float |
色调值 |
输出
| - | - | - |
|---|---|---|
Vector4 |
调整后的颜色 |
输入
| - | - | - |
|---|---|---|
Vector4 |
输入颜色 | |
Float |
红色通道乘数 | |
Float |
绿色通道乘数 | |
Float |
蓝色通道乘数 |
输出
| - | - | - |
|---|---|---|
Vector4 |
修改后的颜色 |
输入
| - | - | - |
|---|---|---|
Texture (sampler) |
纹理输入 | |
Vector2 |
UV 坐标 |
输出
| - | - | - |
|---|---|---|
Vector4 |
来自纹理的颜色数据 |
输入
| - | - | - |
|---|---|---|
| / | 无输入 |
输出
| - | - | - |
|---|---|---|
Vector2 |
UV 坐标 |
输入
| - | - | - |
|---|---|---|
Vector2 |
平铺值 | |
Vector2 |
偏移值 |
输出
| - | - | - |
|---|---|---|
Vector2 |
修改后的 UV 坐标 |
输入
| - | - | - |
|---|---|---|
Float |
扭曲强度 | |
Vector2 |
UV 坐标 |
输出
| - | - | - |
|---|---|---|
Vector2 |
扭曲后的 UV 坐标 |
输入
| - | - | - |
|---|---|---|
| Texture (sampler) | 输入纹理 | |
Vector2 |
UV 坐标 | |
Float |
深度值 |
输出
| - | - | - |
|---|---|---|
Vector2 |
调整后的 UV 坐标 |
步骤 1:在 Shader Graph 中添加自定义函数节点
步骤 2:在 Shader Graph 中配置节点
设置节点的名称。
如果使用 “File”,请确保外部 HLSL 文件名与 HLSL 文件中定义的函数名完全匹配。这可确保在 Shader Graph 管道中正确引用该函数。
CustomFunction.hlsl,则其中的函数也应命名为 CustomFunction。
步骤 3:在 Shader Graph 中添加输入/输出
在 Shader Graph 中为自定义函数定义所需的 Inputs 和 Outputs。这些将自动为您生成端口以连接其他节点。
Float (时间), Vector3 (位置)Vector3 (新位置)在自定义 HLSL 代码中,in 和 out 参数对应于这些输入和输出:
in 表示进入函数的数据(例如,time、position)。out 定义返回值(例如,修改后的 position)。步骤 4:编写 HLSL 代码
如果使用 “String” 选项:
直接在 Shader Graph 中的自定义函数节点编辑器内编写 HLSL 代码。
确保 in 和 out 参数与您在 Shader Graph 中定义的输入和输出匹配。
float3 CustomPosition(in float time, in float3 position, out float3 newPosition) {
newPosition = position + float3(sin(time), cos(time), 0.0);
return newPosition;
}
如果使用 “File” 选项:
在外部 .hlsl 文件中编写 HLSL 代码,并在 Shader Graph 中引用该文件。
1. 创建一个 HLSL 文件,名为 CustomPosition.hlsl。
2. 在文件中编写自定义函数。in 和 out 参数应与 Shader Graph 输入和输出匹配。
float3 CustomPosition(in float time, in float3 position, out float3 newPosition) {
newPosition = position + float3(sin(time), cos(time), 0.0);
return newPosition;
}
3. 将文件保存在您的项目目录中,例如 Assets/Shaders/CustomPosition.hlsl。
4. 在 Shader Graph 中链接文件:
CustomPosition.hlsl。步骤 5:在 Shader Graph 中使用节点
将自定义函数节点的输入端口连接到其他节点(例如 Time 和 Position),以将数据馈送到自定义函数中。
连接输出端口以在 Shader Graph 管道中应用函数结果。
Time (浮点型) 和 Position (向量)Modified Position (带有新位置的向量)这将使自定义节点根据着色器中的时间更新对象的位置。