var nodeList = new Array();nodeList[0] = "main"; nodeList[1] = "add"; nodeList[2] = "subtract"; nodeList[3] = "multiply"; nodeList[4] = "divide"; nodeList[5] = "reciprocal"; nodeList[6] = "power"; nodeList[7] = "sqrt"; nodeList[8] = "log"; nodeList[9] = "min"; nodeList[10] = "max"; nodeList[11] = "abs"; nodeList[12] = "sign"; nodeList[13] = "ceil"; nodeList[14] = "round"; nodeList[15] = "floor"; nodeList[16] = "trunc"; nodeList[17] = "step (a <= b)"; nodeList[18] = "smoothstep"; nodeList[19] = "if"; nodeList[20] = "frac"; nodeList[21] = "fmod"; nodeList[22] = "clamp"; nodeList[23] = "clamp (simple)"; nodeList[24] = "clamp 0-1"; nodeList[25] = "lerp"; nodeList[26] = "lerp (simple)"; nodeList[27] = "inverselerp"; nodeList[28] = "posterize"; nodeList[29] = "blend"; nodeList[30] = "remap"; nodeList[31] = "remap (simple)"; nodeList[32] = "noise"; nodeList[33] = "one minus"; nodeList[34] = "negate"; nodeList[35] = "exp"; nodeList[36] = "hue"; nodeList[37] = "hsv to rgb"; nodeList[38] = "rgb to hsv"; nodeList[39] = "value"; nodeList[40] = "vector 2"; nodeList[41] = "vector 3"; nodeList[42] = "vector 4"; nodeList[43] = "texture 2d"; nodeList[44] = "texture asset"; nodeList[45] = "value (property)"; nodeList[46] = "vector 4 (property)"; nodeList[47] = "color"; nodeList[48] = "cubemap"; nodeList[49] = "slider"; nodeList[50] = "switch"; nodeList[51] = "toggle"; nodeList[52] = "dot product"; nodeList[53] = "cross product"; nodeList[54] = "reflect"; nodeList[55] = "normalize"; nodeList[56] = "append"; nodeList[57] = "component mask"; nodeList[58] = "desaturate"; nodeList[59] = "channel blend"; nodeList[60] = "normal blend"; nodeList[61] = "distance"; nodeList[62] = "length"; nodeList[63] = "transform"; nodeList[64] = "vector projection"; nodeList[65] = "vector rejection"; nodeList[66] = "ddx"; nodeList[67] = "ddy"; nodeList[68] = "ddxy"; nodeList[69] = "panner"; nodeList[70] = "rotator"; nodeList[71] = "parallax"; nodeList[72] = "uv tile"; nodeList[73] = "uv coordinates"; nodeList[74] = "object position"; nodeList[75] = "object scale"; nodeList[76] = "screen position"; nodeList[77] = "world position"; nodeList[78] = "vertex color"; nodeList[79] = "fresnel"; nodeList[80] = "normal direction"; nodeList[81] = "bitangent direction"; nodeList[82] = "tangent direction"; nodeList[83] = "view direction"; nodeList[84] = "view reflection"; nodeList[85] = "face sign"; nodeList[86] = "light color"; nodeList[87] = "light attenuation"; nodeList[88] = "ambient light"; nodeList[89] = "light direction"; nodeList[90] = "half direction"; nodeList[91] = "light position"; nodeList[92] = "time"; nodeList[93] = "view position"; nodeList[94] = "projection parameters"; nodeList[95] = "screen parameters"; nodeList[96] = "pixel size"; nodeList[97] = "fog color"; nodeList[98] = "scene color"; nodeList[99] = "scene depth"; nodeList[100] = "depth blend"; nodeList[101] = "depth"; nodeList[102] = "pi"; nodeList[103] = "tau"; nodeList[104] = "phi (golden ratio)"; nodeList[105] = "root 2"; nodeList[106] = "e (euler's constant)"; nodeList[107] = "sin"; nodeList[108] = "cos"; nodeList[109] = "tan"; nodeList[110] = "arcsin"; nodeList[111] = "arccos"; nodeList[112] = "arctan"; nodeList[113] = "arctan2"; nodeList[114] = "matrix 4x4"; nodeList[115] = "matrix 4x4 property"; nodeList[116] = "multiply matrix"; nodeList[117] = "transpose"; nodeList[118] = "code"; nodeList[119] = "relay"; nodeList[120] = "set"; nodeList[121] = "get"; function scrollTo(hash) { location.hash = "#" + hash; } function OnUpdateSearchField(){ var searchString = document.getElementsByName("searchfield")[0].value.toLowerCase().trim(); searchString = searchString.replace(/\s+/g, ''); var alwaysShow = true; if(searchString.length > 0) alwaysShow = false; var matchedAny = false; for(var i=0;i Shader Forge
“Shader Forge has completely changed my outlook on working with Unity; As an artist, having the power to create my own shaders without learning code is an absolute must, and with SF I discovered a tool that goes above and beyond every other node-based editor”
Robert Briscoe, artist & designer on Dear Esther

搜索框


Eng - 简体字 - 正體字
入门教程
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
输出 [A] + [B] 之和
Subtract (减法)
S + LMB
输出 [A] - [B] 之差
Multiply (乘法)
M + LMB
输出 [A] * [B] 之积
Divide (除法)
D + LMB
输出 [A] / [B] 之商
Power (乘方)
E + LMB
输出 [Val] ^ [Exp] 之幂
Sqrt (平方根)
输出其输入的平方根
Log (对数)
输出其输入的对数。您可以在下拉菜单中切换对数底
Min (最小值)
输出 [A] 和 [B] 的最小值
Max (最大值)
输出 [A] 和 [B] 的最大值
Abs (绝对值)
输出其输入的绝对值。它实质上让负值变为正值
Sign (正负零取值)
输出其输入的符号。
值大于 0 时输出 1
值等于 0 时输出 0
值小于 0 时输出 -1
Ceil (进位取整)
输出时将其输入向上舍入为最近整数
Round (四舍五入取整)
输出时将其输入四舍五入为最近整数
Floor (舍位取整)
输出时将其输入向下舍入为最近整数
Trunc (取整)
输出时将其输入向零四舍五入到最近整数。它实质上去掉小数,留下整数
Step (A <= B) (比较 (A <= B))
如果 [A] 小于或等于 [B],则输出 1,否则输出 0
If (条件)
I + LMB
[A] 大于 [B] 时,输出 [A>B] 输入
[A] 等于 [B] 时,输出 [A=B] 输入
[A] 小于 [B] 时,输出 [A<B] 输入
Frac (取小数)
输出其输入的小数部分。它实质上移除整数部分,仅保留小数部分。如果输入为 4.32,则会输出 0.32。此节点在与 Time(时间)节点一起使用时非常有用,会随时间变化带来锯齿波
Fmod (取模)
输出 [A] 除以 [B] 的余数
Clamp (范围)
输出其主输入的值,不小于 [Min] 且不大于 [Max]
Clamp (Simple) (范围(简单))
跟 Clamp(范围)一样,但为最小值和最大值使用数字输入,而不使用节点接口
Clamp 0-1 (范围 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 (色调分离)
基于经过 [Steps] 的值对值进行四舍五入取整。[Steps] 值为 5 时将在 0 到 1 的范围内创建 5 段
Blend (混合)
B + LMB
使用指定方法混合 [A] 和 [B]
Remap (重映射)
将值从一个范围重映射到另一个范围。与 Remap (Simple)(重映射(简单))一样,但使用输入而不是数值常数
Remap (Simple) (重映射(简单))
R + LMB
将值从一个范围重映射到另一个范围。例如,如果节点期望 -1 到 1 的值,但您想要它输出 2 到 5 的值,那么您可以在第一行键入-1 和 1,在第二行键入 2 和 5
Noise (噪波)
根据两分量输入(例如 UV 坐标)生成伪随机点
One Minus (1 减)
O + LMB
输出 1 减去其输入。与颜色输入一起使用时,将反转颜色
Negate (取反)
输出其主输入乘以 -1。实质上让正值变负,让负值变正
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
包含对纹理的引用,并将使用特定 MIP 级别在特定 UV 坐标上对纹理进行采样(如果已连接)。如果 [Tex] 输入由 Texture Asset(纹理资源)节点连接,则它将不再是检视器中的参数。输出 [RGB] 以及单独的通道
Texture Asset (纹理资源)
包含对纹理的引用。用于对单个纹理进行多次采样 – 仅可连接到 Texture 2D(2D 纹理)节点的 [Tex] 输入。这也将在材质的检视器中反映出来,因此用户只需要分配一个纹理
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
从多个输入值/向量输出单个向量。例如,如果 [A] 是向量 2,[B] 是 Value (Vector 1)(值(向量 1)),则节点将输出 Vector 3(向量 3),其中 [A] 在红色和绿色通道中,而 [B] 在蓝色通道中
Component Mask (分量遮罩)
C + LMB
分量遮罩可用于重新排序或提取向量的通道
Desaturate (去色)
输出输入 [Col] 的去色版本。[Des] 确定去色程度。值为 1 表示完全去色,值为 0.5 表示半去色,值为 0 表示不去色
Channel Blend (通道混合)
输出遮罩的每个分量乘以对应颜色输入后的和。对于三平面混合十分有用
Normal Blend (法线混合)
合并两个法线方向,其中基础法线被细节法线扰乱
Distance (距离)
输出两个输入点 [A] 和 [B] 之间的距离
Length (长度)
输出其输入向量的长度/幅度
Transform (转换)
将向量从一个空间转换到另一个空间。您可以在世界/本地/切线/视图之间切换。内置向量在世界空间中。法线输入的方向在切线空间中。
Vector Projection (向量投影)
输出向量 [A] 到向量 [B] 的投影
Vector Rejection (向量拒识)
输出从向量 [B] 拒识的向量 [A]
Panner (平移器)
P + LMB
输出输入 [UV] 坐标,按 [Dist] 距离,以 U 参数和 V 参数指定的方向/速度进行平移/偏移
Rotator (旋转器)
输出输入 [UV] 坐标,绕轴心点 [Piv] 按 [Ang] 弧度旋转。如果 [Ang] 未连接或连接到时间节点,[Spd] 将控制旋转速度
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 (屏幕位置)
输出网格当前部分的屏幕位置,可在屏幕空间贴图时用作 UV 坐标。在下拉框中,“Normalized”(归一化)会将 {0,0} 放在屏幕中心,将 {1,1} 放在右上方。“Tiled”(平铺)也会将 {0,0} 放在中心,但将根据纵横比在 X 轴上缩放
World Position (世界位置)
在世界空间中输出网格当前部分的位置
Vertex Color (顶点颜色)
V + LMB
输出顶点颜色。如果您在顶点颜色中烘焙了环境光遮蔽,或要使用喷涂颜色为网格染色,或要将顶点颜色用于其他对象,那么这就是您需要的节点
Fresnel (菲涅尔)
输出表面法线和视图方向之间的点积。如果想要使用自定义法线,则会使用 [Nrm]。默认使用扰乱法线。[Exp] 更改输出的指数。值越高,菲涅尔越薄。
Normal Direction (法线方向)
在世界空间中输出网格法线的方向。Perturbed(扰乱)复选框使其在应用 Main(主要)节点的“Normal”(法线)输入后使用法线,例如法线贴图。
Bitangent Direction (双切线方向)
在世界空间中输出网格双切线的方向
Tangent Direction (切线方向)
在世界空间中输出网格切线的方向
View Direction (视图方向)
在世界空间中输出从几何图形当前部分到摄像机的方向
View Reflection (视图反射)
输出视图的方向,就像根据表面法线反弹那样。这可用作完美反射的立方体贴图的输入
Light Color (光色)
输入当前要渲染的光线的颜色
Light Attenuation (光线衰减)
输出光线衰减。此节点同时包含光线衰减和阴影
Ambient Light (环境光)
输出要在其中渲染着色器的场景的环境光
Light Direction (光线方向)
输出当前要渲染的光线的方向
Half Direction (折半方向)
输出折半方向。这是指向视图和光线向量中间的方向,通常在 blinn-phong 镜面反射模型中使用
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)
输出 π 的值,圆的周长与直径的比值(约为 3.141593)
Tau (τ,Tau)
输出 τ 的值,圆的周长与半径的比值(约为 6.283185)
Phi (Golden ratio) (φ,Phi(黄金比例))
输出 φ 的值,黄金比例(约为 1.618034)
Root 2 (√2)
输出 2 的算术平方根(约为 1.414214)
e (Euler's Constant) (e,欧拉常数)
输出欧拉常数e(约为 2.718282)
Sin (正弦)
输出其输入的正弦
Cos (余弦)
输出其输入的余弦
Tan (正切)
输出其输入的正切
ArcSin (反正弦)
以弧度输出其输入的反正弦
ArcCos (反余弦)
以弧度输出其输入的反余弦
ArcTan (反正切)
以弧度输出其输入的反正切
ArcTan2 (双变量反正切)
以弧度输出其两个输入的反正切。ArcTan2 输出介于 –π 和 π 之间的特定角度
Code (代码)
用于在着色器内部执行自定义代码的节点。在左侧的示例中,节点与线性插值的工作方式类似,在到达 [end] 之前向 [mid] 弯曲
Relay (中继)
输出其输入,对于组织节点连接十分有用