Shader Forge 参数详解
发表于2017-12-07
ShaderForge作为一款可视化编辑工具,有什么想实现的Shader,都可以直接用ShaderForge来编写,不过在这之前,大家需要熟悉了解Shader Forge 参数,这样才能更好的去使用它。
Main (主要)
这是您的所有其他节点最终将链接到的节点。它拥有为不同目的服务的多个输入。 以下动画图像显示所有输入及其随时间变化的行为。大部分输入会在 0 和 1(黑色和白色)之间来回绘制动画。 Diffuse (漫反射) 这是着色器的主要颜色。漫反射颜色将根据出光的法线角度接收光线或衰减光线,以及被阴影遮罩。 Diffuse Power (漫反射力道) 这是光法线角度衰减的指数。可在使用大于 1 的值时获得额外的金属外观。请注意,无论何时启用,它都相当消耗效能。 Specular (镜面反射) 这是着色器镜面高光的颜色。值越高就越明亮,黑色完全不受着色器影响。 Gloss (光泽) 这是镜面高光的指数。值越高光泽度越高,值趋近于 0 时将变得没有光泽。请注意,如果您取消选中光泽重映射,则应避免使用低于 1 的光泽值。 Normal (法线) 这是切线空间法线方向,您可在此连接法线贴图或自定义法线向量。 Emission (自发光) 这是无论光照条件如何始终都会添加到着色器的光线。 Transmission (透射) 此选项在光源位于当前渲染的表面背后时控制有多少光线可以通过。这对于薄型材料十分有用,例如布料或植被。 Light Wrapping (环绕光) 这是控制出光法线角度衰减偏移的一种方法,可用于获得与次表面散射相似的效果。对于平滑对象最有用。输入偏红色的值将让红色通道比其他通道更多地“环绕”对象,这样看起来就像是光线传递到网格中并携带红色波长出来,与遮罩皮肤的方法类似。 Diffuse Ambient Light (漫反射环境光) 此选项将光线添加到着色器,受漫反射影响。可以与立方体贴图(使用基于图像的光照 (IBL) 的法线方向)或环境光等一起使用 Specular Ambient Light (镜面反射环境光) 此选项将光线添加到着色器,受镜面反射影响。可以与立方体贴图(使用基于图像的光照 (IBL) 的视图反射方向)等一起使用 Diffuse Ambient Occlusion (漫反射环境光遮蔽) 此选项抑制间接漫反射光线,例如光探头、间接光线和漫反射环境光 Specular Ambient Occlusion (镜面反射环境光遮蔽) 此选项可抑制间接镜面反射光线,例如反射探头和镜面反射环境光 Custom Lighting (自定义照明) 此输入在着色器设置为不打光时处于活动状态,可让您定义自定义照明行为。您在此处根据光线放置节点。 Opacity (不透明度) Opacity(不透明度)控制最终像素的透明度。请注意,部分透明度通常很难设置正确,特别是在使用延迟渲染时。 Opacity Clip (不透明度剪切) Opacity Clip(不透明度剪切)是控制是否应该绘制当前像素/片段的一种方法。始终对需要透明度的对象使用硬剪切,但不要对部分透明度使用硬剪切,因为 Opacity Clip(不透明度剪切)可以轻松排序,但是 Opacity(不透明度)不可以。 Refraction (反射) Refraction(反射)是用于折射背景像素的屏幕空间 UV 偏移。请确保在使用前将 Opacity(不透明度)设置为低于 1 的值,以便折射效果可见。 Outline Width (描边宽度) 此选项将向着色器添加描边,渲染为具有反面法线的偏移网格。请注意,硬边将损坏描边。 Outline Color (描边颜色) 此选项控制描边的颜色。 Vertex Offset (顶点偏移) 此选项可用于随时间变化对着色器进行动画,或在不同条件下更改对象的形状。您只需插入每个顶点所需偏移量的 XYZ 坐标即可。 DX11 Displacement (DX11 位移) 此选项和 Vertex Offset(顶点偏移)的作用非常类似,但是与 DX11 曲面细分一起使用。(请注意,DirectX 仅适用于 Windows,需要 DX11 GPU 且必须在 Unity 设置中启用) DX11 Tessellation (DX11 曲面细分) 此选项控制您要将三角形分割为多少个细分。(请注意,DirectX 仅适用于 Windows,需要 DX11 GPU 且必须在 Unity 设置中启用) |
Add (加法)
A + LMB
Subtract (减法)
S + LMB
Multiply (乘法)
M + LMB
Divide (除法)
D + LMB
Power (乘方)
E + LMB
Sqrt (平方根)
输出其输入的平方根 |
Log (对数)
输出其输入的对数。您可以在下拉菜单中切换对数底 |
Min (最小值)
Max (最大值)
Abs (绝对值)
Sign (正负零取值)
值大于 0 时输出 1
值等于 0 时输出 0
值小于 0 时输出 -1
Ceil (进位取整)
Round (四舍五入取整)
Floor (舍位取整)
Trunc (取整)
Step (A <= B) (比较 (A <= B))
If (条件)
I + LMB
[A] 大于 [B] 时,输出 [A>B] 输入 [A] 等于 [B] 时,输出 [A=B] 输入 [A] 小于 [B] 时,输出 [A<B] 输入 |
Frac (取小数)
Fmod (取模)
输出 [A] 除以 [B] 的余数 |
Clamp (范围)
输出其主输入的值,不小于 [Min] 且不大于 [Max] |
Clamp (Simple) (范围(简单))
跟 Clamp(范围)一样,但为最小值和最大值使用数字输入,而不使用节点接口 |
Clamp 0-1 (范围 0-1)
Lerp (线性插值)
L + LMB
Lerp(线性插值)用于混合两个值或颜色。 如果 [T] 为 0,则将输出 A 如果 [T] 为 0.5,则将输入 [A] 和 [B] 的分半混合 如果 [T] 为1,则将输出 B 如果 [T] 为两者间的任一值,则将输入两者的线性混合。 |
Lerp (Simple) (线性插值(简单))
与 Lerp(线性插值)一样,但为 [A] 和 [B] 使用数字输入,而不使用节点接口 |
Posterize (色调分离)
Blend (混合)
B + LMB
Remap (重映射)
Remap (Simple) (重映射(简单))
R + LMB
Noise (噪波)
根据两分量输入(例如 UV 坐标)生成伪随机点 |
One Minus (1 减)
O + LMB
Negate (取反)
Exp (指数)
选定 Exp(指数)时:输出 e 到其输入的幂 选定 Exp 2(指数 2)时:输出 2 到其输入的幂 |
Value (值)
1 + LMB
数字值,也可称为“Vector 1”(向量 1)。还提供属性版本。值可以与 Append(附加)节点一起用于创建拥有多个分量的向量。值还可以与向量/颜色相乘。例如,向量 (3,1,0) 乘以 0.5 会输出向量 (1.5,0.5,0) |
Vector 2 (向量 2 )
2 + LMB
具有两个分量/值的向量。通常与 UV 坐标一起使用。将 Vector 2(向量 2) 添加到 UV 坐标会转换 UV 坐标。将 UV 坐标与 Vector 2(向量 2)相乘会缩放 UV |
Vector 3 (向量 3 )
3 + LMB
具有三个分量/值的向量。通常用作颜色、位置或方向 |
Vector 4 (向量 4 )
4 + LMB
具有四个分量/值的向量。通常用作具有 Alpha 通道的颜色,或用作在第四个通道中有一些额外数据的位置。检视器中有两个参数可供曝光。Color(颜色)和 Vector 4(向量 4)参数 |
Texture 2D (2D 纹理)
T + LMB
Texture Asset (纹理资源)
Value (Property) (值(属性))
数字值;与 Value(值)一样,但在材质检视器中曝光 |
Vector 4 (Property) (向量 4(属性))
具有四个分量/值的向量,与 Vector 4(向量 4)一样,但在材质检视器中作为 4 个单独的 X、Y、Z 和 W 值曝光 |
Color (颜色)
具有四个分量/值的向量,与 Vector 4(向量 4)一样,但在材质检视器中作为取色器曝光 |
Cubemap (立方体贴图)
包含对立方体的引用,并将使用特定 MIP 级别在特定方向对其进行采样(如果已连接)。输出 [RGB] 以及单独的通道 |
Slider (滑动条)
让您能够轻松地在最小值和最大值之间调整某个值。也向检视器曝光 |
Dot Product (点积)
输出 [A] 和 [B] 之间的点积。对于两个归一化的向量而言,它实质上输出两个向量指向之间的距离。如果它们指向相同方向,则输出 1;如果它们互相垂直,则输出 0;如果它们指向相反方向,则输出 -1。 下拉选择: 标准 – 常规点积 正数 – 让所有负值为 0 负数 – 让所有正值为 0 绝对值 – 让所有负值为正 归一化 – 在 0 到 1(而不是 -1 到 1)的范围内输出 下图显示使用两个归一化向量时不同模式的行为。 在 X 轴上可以得到其夹角,在 Y 轴上可以得到输出值: |
Cross Product (叉积)
输出 [A] 和 [B] 的叉积。它实质上输出垂直于两个输入向量的向量 |
Reflect (反射)
输出入射向量 [I] 的反射向量,就像在具有法线 [N] 的表面上反射/反弹一样 |
Normalize (归一化)
N + LMB
输出输入向量的归一化版本。实质上将向量长度设置为 1,并保持相同方向 |
Append (附加)
Q + LMB
Component Mask (分量遮罩)
C + LMB
Desaturate (去色)
Channel Blend (通道混合)
输出遮罩的每个分量乘以对应颜色输入后的和。对于三平面混合十分有用 |
Normal Blend (法线混合)
合并两个法线方向,其中基础法线被细节法线扰乱 |
Distance (距离)
Length (长度)
Transform (转换)
将向量从一个空间转换到另一个空间。您可以在世界/本地/切线/视图之间切换。内置向量在世界空间中。法线输入的方向在切线空间中。 |
Vector Projection (向量投影)
输出向量 [A] 到向量 [B] 的投影 |
Vector Rejection (向量拒识)
输出从向量 [B] 拒识的向量 [A] |
Panner (平移器)
P + LMB
输出输入 [UV] 坐标,按 [Dist] 距离,以 U 参数和 V 参数指定的方向/速度进行平移/偏移 |
Rotator (旋转器)
Parallax (视差)
输出输入 [UV] 坐标,具有从 [Hei] 输入派生的视差偏移,深度为 [Dep],引用高度为 [Ref]。 [Ref] 高度为 0 表示其视差效果为高度贴图看似从网格中突出 [Ref] 高度为 1 表示其视差效果为高度贴图看似向下进入网格中 |
UV Coordinates (UV 坐标)
U + LMB
输出几何图形该部分的指定 UV 坐标。下拉选择可让您选择 UV 通道 0 或 UV 通道 1。请注意,光照贴图网格为其光照贴图 UV 使用 UV1 |
Object Position (对象位置)
Screen Position (屏幕位置)
World Position (世界位置)
Vertex Color (顶点颜色)
V + LMB
Fresnel (菲涅尔)
Normal Direction (法线方向)
Bitangent Direction (双切线方向)
Tangent Direction (切线方向)
View Direction (视图方向)
View Reflection (视图反射)
Light Color (光色)
Light Attenuation (光线衰减)
Ambient Light (环境光)
Light Direction (光线方向)
Half Direction (折半方向)
Light Position (光线位置)
[Pnt] 如果当前要渲染的光线是点光线,则输出 1,否则输出 0
Time (时间)
[t/20] 以 1/20 倍速率输出时间
[t] 输出当前时间
[t*2] 以 2 倍速率输出时间
[t*3] 以 3 倍速率输出时间
View Position (视图位置)
Projection Parameters (投影参数)
[Sign] 为 -1,如果当前使用倒装投影矩阵渲染,否则为 1
[Near] 是当前摄像机的近平面距离
[Far] 是当前摄像机的远平面距离
[1/Far] 是远平面距离的倒数
Screen Parameters (屏幕参数)
[pxW] 是以像素为单位的屏幕宽度
[pxH] 是以像素为单位的屏幕高度
[1+1/W] 是 1 加像素宽度的倒数
[1+1/H] 是 1 加像素高度的倒数
Scene Color (场景颜色)
包含渲染此对象前的场景渲染的纹理。默认其 UV 位于屏幕空间中,从而让每个像素都代表对象背后的颜色。这可用于更加高级的混合/透明度效果,或作为 UV 改变时形成折射的其中一种手动方法 |
Scene Depth (场景深度)
摄像机到当前像素背后的场景的深度。您需要在混合设置中关闭深度缓冲编写, 并且需要使用渲染深度纹理的摄像机 |
Depth Blend (深度混合)
它根据距离输入输出 0 和 1 之间的值,具体取决于此像素距背景几何图形多近。对于水边缘的淡出或光轴相交几何图形的软化很有用。注意:您需要在混合设置中关闭深度缓冲编写,并且需要使用渲染深度纹理的摄像机 |
Depth (深度)
这是摄像头近平面到对象的距离 |
Pi (π,Pi)
Tau (τ,Tau)
Phi (Golden ratio) (φ,Phi(黄金比例))
Root 2 (√2)
e (Euler's Constant) (e,欧拉常数)
Sin (正弦)
输出其输入的正弦 |
Cos (余弦)
输出其输入的余弦 |
Tan (正切)
输出其输入的正切 |
ArcSin (反正弦)
以弧度输出其输入的反正弦 |
ArcCos (反余弦)
以弧度输出其输入的反余弦 |
ArcTan (反正切)
以弧度输出其输入的反正切 |
ArcTan2 (双变量反正切)
Code (代码)
Relay (中继)