AppendVector(追加矢量)
AppendVector(追加矢量)表達式允許您將通道組合在一起,以創建通道數比原始矢量更多的矢量。例如,您可以使用兩個 常量 值並進行追加,以建立雙通道 Constant2Vector(常量 2 矢量) 值。這有助於將單個紋理中的通道重新排序,或者將多個灰階紋理組合成一個 RGB 彩色紋理。
項目 |
說明 |
---|---|
輸入 |
|
A |
接收作爲追加目標的值。 |
B |
接收要追加的值。 |
示例:對 0.2 和 0.4 執行追加的結果是 (0.2,0.4);對 (0.2,0.4) 和 (1.6) 執行追加的結果是 (0.2,0.4,1.6)。
ComponentMask(分量蒙版)
ComponentMask(分量蒙版)表達式允許從輸入中選擇通道(R、G、B 和/或 A)的特定子集以傳遞到輸出。嘗試傳遞輸入中不存在的通道將導致錯誤,除非輸入是單個常量值。在這種情況下,會將單個值傳遞到每個通道。選擇傳遞的當前通道將顯示在表達式的標題欄中。
項目 |
說明 |
---|---|
屬性 |
|
R |
如果選中此項目,那麼會將輸入值的紅色通道(第一個通道)傳遞到輸出。 |
G |
如果選中此項目,那麼會將輸入值的綠色通道(第二個通道)傳遞到輸出。 |
B |
如果選中此項目,那麼會將輸入值的藍色通道(第三個通道)傳遞到輸出。 |
A |
如果選中此項目,那麼會將輸入值的阿爾法通道(第四個通道)傳遞到輸出。 |
示例:如果 ComponentMask(分量蒙版)的輸入爲 (0.2,0.8,1.4) 並選中 R 和 B 通道,那麼將輸出 (0.2,1.4)。
CrossProduct(矢量積)
CrossProduct(矢量積)表達式計算兩個三通道矢量值輸入的矢量積,並輸出所產生的三通道矢量值。給定空間中的兩個矢量,矢量積是與兩個輸入都垂直的矢量。
項目 |
說明 |
---|---|
輸入 |
|
A |
接收三通道矢量值。 |
B |
接收三通道矢量值。 |
用法示例:CrossProduct(矢量積)通常用來計算與另外兩個方向都垂直的方向。
DeriveNormalZ(派生法線 Z)
DeriveNormalZ(派生法線 Z)表達式在給定 X 和 Y 分量的情況下派生切線空間法線的 Z 分量,並輸出所產生的三通道切線空間法線。Z 計算方法爲:Z = sqrt(1 - (x x + y y));
項目 |
說明 |
---|---|
輸入 |
|
輸入 XY(InXY) |
以雙通道矢量值形式接收切線空間法線的 X 和 Y 分量。 |
DotProduct(標量積)
DotProduct(標量積)表達式計算標量積,即一個矢量投射到另一個矢量上的長度。許多技術使用此計算來計算衰減。DotProduct(標量積)要求兩個矢量輸入具有相同數目的通道。
項目 |
說明 |
---|---|
輸入 |
|
A |
接收一個值,或接收任意長度的矢量。 |
B |
接收一個值,或接收任意長度的矢量。 |
Normalize(規範化)
Normalize(規範化)表達式計算並輸出其輸入的規範化值。這表示該輸入的每個分量都會除以矢量的 L-2 範數(長度)。
Transform(轉換)
Transform(轉換)表達式將三通道矢量值從一種參考座標系轉換到另一種參考座標系。
默認情況下,材質的所有着色器計算都在切線空間中完成。矢量常量、攝像機矢量和光線矢量等在材質中使用之前,都會轉換到切線空間。Transform(轉換)表達式允許將這些矢量從切線空間轉換到全局空間、局部空間或視圖空間座標系。另外,它允許將全局空間和局部空間矢量轉換到任何其他參考座標系。
項目 |
說明 |
---|---|
屬性 |
|
源(Source) |
指定要轉換的矢量的當前座標系。這可以是以下其中一項:全局(World)、局部(Local)或切線(Tangent)。 |
目標(Destination) |
指定要將矢量轉換到的目標座標系。這可以是以下其中一項:全局(World)、視圖(View)、局部(Local)或切線(Tangent)。 |
Transform(轉換)節點會對鏡像 UV 加以考慮,例如,以使凸顯僅影響人物的右側邊緣。
對於生成全局空間法線以便對立方體貼圖進行取樣,Transform(轉換)節點非常有用。法線貼圖可轉換到全局空間。以下示例將法線轉換到全局空間,以便對立方體貼圖進行取樣:
將法線轉換到視圖空間可用於創建邊緣效果。這可通過使用網格法線生成紋理座標(通常稱爲“球面映射”)來實現。使用這種方法,正對着攝像機的法線將映射到紋理座標的中心,而垂直於攝像機的法線將映射到紋理座標的邊緣。以下是球面映射示例:
值爲 (0,0,1) 的 Constant3Vector(常量 3 矢量)輸送到設置了 TRANSFORM_View 的 Transform(轉換),接着將結果傳遞到 ComponentMask(分量蒙版)(僅傳遞 R 和 G)。因爲 Transform(轉換)將輸出 -1 到 1 範圍內的值,我們必須使這些值偏離以使其處於 0-1 範圍內。實現方法是乘以 0.5 再加上 0.5。然後,直接將結果連接到紋理的“座標”(Coordinates)。任何紋理都有效;我建立了包含三個環形的紋理,以使效果明顯。
要將此效果與法線貼圖配合使用,只需將 Constant3Vector(常量 3 矢量)替換爲法線貼圖紋理。
在以下示例中,將此球面映射材質應用於團狀岩石網格:
TransformPosition(轉換位置)
TransformPosition(轉換位置)表達式可將屏幕空間中的任何位置轉換到表達式的 TransformType 變量所指定的目標空間。目前只支持轉換到全局空間。此表達式可用來獲取材質中的全局空間座標。要顯現全局位置,您可以將它直接連接到“自發光”(Emissive):