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
“It turns the dark and strange arts of shader programming into something understandable and non-evil”
Nicklas 'Nifflas' Nygren, developer of the Knytt series

搜索框


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 (中繼)
輸出其輸入,對於組織節點連接十分有用