BlackBody(黑體)
BlackBody(黑體)表達式用來在材質中模擬 黑體輻射 效果。用戶輸入開氏溫度,產生的顏色和強度可用來驅動“底色”(Base Color)和“自發光”(Emissive)值,以獲得在物理上準確的結果。
BumpOffset(凹凸貼圖偏移)
BumpOffset(凹凸貼圖偏移)是虛幻引擎 4 術語,就是通常所謂的“視差貼圖”。BumpOffset(凹凸貼圖偏移)表達式可以使材質產生深度錯覺,而不需要額外的幾何體。BumpOffset(凹凸貼圖偏移)材質使用灰階 高度貼圖 來提供深度信息。高度貼圖中的值越亮,材質的“凸出”效果越明顯;當攝像機在表面上移動時,這些區域將產生視差(移位)。高度貼圖中較暗的區域將顯得“距離較遠”,其移位程度最小。
項目 |
說明 |
---|---|
屬性 |
|
高度比(HeightRatio) |
從 高度貼圖 中取得的深度的乘數。這個值越大,深度越極端。典型值的範圍是 0.02 到 0.1。 |
參考平面(ReferencePlane) |
指定紋理空間中要應用此效果的近似高度。值爲 0 將使紋理完全離開表面,而值 0.5(默認值)表示部分表面凸起而部分區域凹陷。 |
輸入 |
|
座標(Coordinate) |
接收此表達式所要修改的基本紋理座標。 |
高度(Height) |
接收要用作高度貼圖的紋理(或值)。 |
高度比輸入(HeightRatioInput) |
從 高度貼圖 中取得的深度的乘數。這個值越大,深度越極端。典型值的範圍是 0.02 到 0.1。如果使用此輸入,那麼它將取代“高度比”(Height Ratio)屬性中的任何值。 |
ConstantBiasScale(常量偏差比例)
ConstantBiasScale(常量偏差比例)表達式接收輸入值,加上偏差值,然後乘以比例縮放係數並輸出結果。例如,要將輸入數據從 [-1,1] 轉換到 [0,1],請使用偏差值 1.0 和比例縮放係數 0.5。
項目 |
說明 |
---|---|
屬性 |
|
偏差(Bias) |
指定要與輸入相加的值。 |
比例(Scale) |
指定偏差結果的乘數。 |
DDX
DDX 表達式公開 DDX 導數計算,這是像素着色器計算中使用的一項 GPU 硬件功能。
DDY
DDY 表達式公開 DDX 導數計算,這是像素着色器計算中使用的一項 GPU 硬件功能。
DepthFade(深度消退)
DepthFade(深度消退)表達式用來隱藏半透明對象與不透明對象相交時出現的不美觀接縫。
項目 |
說明 |
---|---|
屬性 |
|
消退距離(Fade Distance) |
這是應該發生消退的全局空間距離。未連接 FadeDistance(FadeDistance)輸入時,將使用此距離。 |
輸入 |
|
不透明(Opacity) |
接收深度消退前對象的現有不透明度。 |
FadeDistance(消退距離) |
這是應該發生消退的全局空間距離。 |
DepthOfFieldFunction(視野深度函數)
DepthOfFieldFunction(視野深度函數)表達式使美工能夠控制當視野深度使材質模糊時,材質所發生的情況。它輸出介於 0 與 1 之間的值,其中 0 代表“清晰”,而 1 代表“完全模糊”。例如,這對於在紋理的清晰版本與模糊版本之間進行插值非常有用。“深度”(Depth)輸入允許您使用其他計算來覆蓋場景視野深度計算所產生的現有結果。
Desaturation(去飽和度)
Desaturation(去飽和度)表達式對其輸入進行去飽和度,即根據特定百分比將其輸入的顏色轉換爲灰色陰影。
項目 |
說明 |
---|---|
屬性 |
|
亮度係數(Luminance Factors) |
指定每個通道對去飽和度顏色的影響量。此屬性確保在去飽和度之後,綠色比紅色亮,而紅色比藍色亮。 |
輸入 |
|
小數(Fraction) |
指定要應用於輸入的去飽和度數量。此百分比的範圍是 0.0(完全去飽和度)到 1.0(完全原始顏色,不去飽和度)。 |
Distance(距離)
Distance(距離)表達式計算兩個點/顏色/位置/矢量之間的歐氏距離,並輸出結果值。此表達式可作用於單分量、雙分量、三分量和四分量矢量,但此表達式的兩個輸入必須具有相同數目的通道。
項目 |
說明 |
---|---|
輸入 |
|
A |
接收一個值,或接收任意長度的矢量。 |
B |
接收一個值,或接收任意長度的矢量。 |
僞代碼:
Result = length(A - B)
低級 HLSL 代碼:
float Result = sqrt(dot(A-B, A-B))
FeatureLevelSwitch(功能級別開關)
FeatureLevelSwitch(功能級別開關)節點允許您建立簡化的材質,以用於功能不太強大的設備。
用法示例:您可能有一個採用 10 個重疊紋理及複雜數學運算的材質,但僅將單個靜態紋理用於移動設備(功能級別 ES2)。
項目 |
說明 |
---|---|
輸入 |
|
默認值(Default) |
默認功能級別。 |
ES2 |
由 OpenGL ES2 的核心功能定義的功能級別。 |
ES3.1 |
由金屬級設備的功能定義的功能級別。 |
SM4 |
由 DX10 Shader Model 4 的核心功能定義的功能級別。 |
SM5 |
由 DX11 Shader Model 5 的核心功能定義的功能級別。 |
Fresnel(菲涅爾)
Fresnel(菲涅爾)表達式根據表面法線與攝像機方向的標量積來計算衰減。當表面法線正對着攝像機時,輸出值爲 0。當表面法線垂直於攝像機時,輸出值爲 1。結果限制在 [0,1] 範圍內,以確保不會在中央產生任何負顏色。
項目 |
說明 |
---|---|
屬性 |
|
指數(Exponent) |
指定輸出值的衰減速度。值越大,意味着衰減越緊或越快。 |
基本反射小數(Base Reflect Fraction) |
指定從正對表面的方向查看表面時,鏡面反射的小數。值爲 1 將有效地禁用菲涅耳效果。 |
輸入 |
|
指數輸入(ExponentIn) |
指定輸出值的衰減速度。值越大,意味着衰減越緊或越快。如果使用此輸入,那麼值將始終取代“指數”(Exponent)屬性值。 |
基本反射小數(Base Reflect Fraction) |
指定從正對表面的方向查看表面時,鏡面反射的小數。值爲 1 將有效地禁用菲涅耳效果。如果使用此輸入,那麼值將始終取代“指數”(Exponent)屬性值。 |
法線(Normal) |
接收三通道矢量值,該值代表表面在全局空間中的法線。要查看應用於菲涅耳對象表面的法線貼圖的結果,請將該法線貼圖連接到材質的“法線”(Normal)輸入,然後連接一個 (PixelNormalWS(像素全局空間法線))[Engine/Rendering/Materials/ExpressionReference/Vector#PixelNormalWS] 表達式到 Fresnel(菲涅爾)上的此輸入。如果未指定任何法線,那麼將使用網格的切線法線。 |
GIReplace(GI 替換)
GIReplace(GI 替換)允許美工指定另一個表達式鏈(通常較爲簡單),以便在材質用於 GI 時使用。
用法示例:光照系統靜態 GI 和 LPV 動態 GI 使用此表達式。
項目 |
說明 |
---|---|
輸入 |
|
默認值(Default) |
默認 GI。 |
靜態間接(StaticIndirect) |
用於烘焙間接照明。 |
動態間接(DynamicIndirect) |
用於動態間接照明。 |
觀察下圖中的兩個紅色方塊 - 其中一個反射爲綠色(而非紅色)。
使用新材質表現可獲得此效果。
通常而言不需要設置完全不同的顏色,使用較深、較亮、或 細微的顏色調節即可。
LightmassReplace(光照系統替換)
LightmassReplace(光照系統替換)表達式用來在編譯材質以用於正常渲染用途時傳遞“實時”(Realtime)輸入,並在導出材質到光照系統以用於全局照明時傳遞“光照系統”(Lightmass)輸入。使用此表達式可以避免使用導出版本無法正確處理的材質表達式,例如 WorldPosition(全局位置)。
項目 |
說明 |
---|---|
輸入 |
|
實時(Realtime) |
接收要傳遞以用於正常渲染的值。 |
光照系統(Lightmass) |
接收在導出材質到光照系統時要傳遞的值。 |
LinearInterpolate(線性插值)
LinearInterpolate(線性插值)表達式根據用作蒙版的第三個輸入值,在兩個輸入值之間進行混合。您可以將其想像成用於定義兩個紋理之間的過渡效果的蒙版,例如 Photoshop 中的層蒙版。蒙版“阿爾法”(Alpha)的強度確定從兩個輸入值獲取顏色的比例。如果“阿爾法”(Alpha)爲 0.0/黑色,那麼將使用第一個輸入。如果“阿爾法”(Alpha)爲 1.0/白色,那麼將使用第二個輸入。如果“阿爾法”(Alpha)爲灰色(介於 0.0 與 1.0 之間的值),那麼輸出是兩個輸入之間的混合。請記住,混合按通道進行。因此,如果“阿爾法”(Alpha)爲 RGB 顏色,那麼“阿爾法”(Alpha)的紅色通道值定義 A 與 B 的紅色通道之間的混合,而與“阿爾法”(Alpha)的綠色通道 無關,該通道定義 A 與 B 的綠色通道之間的混合。
項目 |
說明 |
---|---|
屬性 |
|
常量 A(Const A) |
映射到黑色 (0.0) 的值。僅當未連接 A 輸入時才使用。 |
常量 B(Const B) |
映射到白色 (1.0) 的值。僅當未連接 B 輸入時才使用。 |
常量阿爾法(Const Alpha) |
接收要用作蒙版阿爾法的值。僅當未連接“阿爾法”(Alpha)輸入時才使用。 |
輸入 |
|
A |
接收映射到黑色 (0.0) 的值。 |
B |
接收映射到白色 (1.0) 的值。 |
阿爾法(Alpha) |
接收要用作蒙版阿爾法的值。 |
程序員需知:LinearInterpolate(線性插值)根據參數值“阿爾法”(Alpha)在 A 與 B 之間執行按通道插值。
Noise(噪聲)
Noise(噪聲)表達式建立過程式噪聲場,以使您能夠控制其生成方式。
項目 |
說明 |
---|---|
屬性 |
|
比例(Scale) |
更改噪聲單元的整體大小。數字越小,噪聲越大。 |
質量(Quality) |
外觀/性能設置。0 表示速度最快。較大的值將導致速度下降,但外觀可能較好。 |
功能(Function) |
控制要計算的噪聲類型。選項包括“單形”(Simplex)、“柏林”(Perlin)和“梯度”(Gradient)。 |
干擾(Turbulence) |
是否計算多個級別、彼此疊加的噪聲。 |
級別數(Levels) |
要組合的不同噪聲級別數。僅當激活“干擾”(Turbulence)後纔有用。 |
最小輸出(Output Min) |
噪聲計算的最低值輸出。 |
最大輸出(Output Max) |
噪聲計算的最高值輸出。 |
級別比例(Level Scale) |
控制激活“干擾”(Turbulence)後各個級別的比例。默認值爲 2,但較大的值可確保更高效率地使用少量級別。 |
Inputs |
|
位置(Position) |
允許通過 3D 矢量來調整紋理大小。 |
過濾寬度(FilterWidth) |
實際上,控制應用於噪聲紋理的模糊量。 |
QualitySwitch(質量開關)
QualitySwitch(質量開關)表達式允許根據引擎在不同質量級別之間的切換使用不同的表達式網絡,例如在較低端的設備上使用較低的質量。
項目 |
說明 |
---|---|
輸入 |
|
默認值(Default) |
此輸入用於針對默認視覺質量而設計的網絡。 |
低(Low) |
此輸入用於針對較低視覺質量而設計的網絡。 |
高(High) |
此輸入用於針對較高視覺質量而設計的網絡。 |
RotateAboutAxis(繞軸旋轉)
RotateAboutAxis(繞軸旋轉)表達式在給定旋轉軸、該軸上的某個點以及旋轉角度的情況下,旋轉三通道矢量輸入。此表達式適合於使用 WorldPositionOffset(全局位置偏移)產生質量優於簡單剪切的動畫。
項目 |
說明 |
---|---|
輸入 |
|
規範化旋轉軸(NormalizedRotationAxis) |
接收一個規範化 (0-1) 矢量,它代表對象的旋轉軸。 |
旋轉角度(RotationAngle) |
旋轉角度。值 1 表示完全 360 度旋轉。 |
樞軸點(PivotPoint) |
接收代表樞軸點的三通道矢量,對象將繞着該樞軸點旋轉。 |
位置(Position) |
接收代表對象位置的三通道矢量。創建 RotateAboutAxis(繞軸旋轉)表達式時,將自動創建一個 WorldPosition(全局位置)表達式並將其連接至此輸入。 |
在以上示例中,預覽平面將顯示爲繞着它的垂直軸旋轉。
SphereMask(球體蒙版)
SphereMask(球體蒙版)表達式根據距離計算來輸出蒙版值。如果某一個輸出是某個點的位置,而另一輸入是具有某半徑的球體的中心,那麼蒙版值將是 0(位於球體外部)和 1(位於球體內部),並存在一定的過渡區域。此表達式可作用於單分量、雙分量、三分量和四分量矢量。
項目 |
說明 |
---|---|
屬性 |
|
衰減半徑(Attenuation Radius) |
指定用於距離計算的半徑。 |
硬度百分比(Hardness Percent) |
指定過渡區域大小。此項目類似於 Photoshop 的筆刷硬度值。0 表示硬過渡,100 表示最大化過渡區域(軟過渡)。 |
輸入 |
|
A |
接收一個值,該值代表要檢查的點的位置。 |
B |
接收一個值,該值代表球體中心。 |
在此示例中,當攝像機距離預覽對象超過 256 個單位時,該對象將平滑地漸變爲黑色。
AntialiasedTextureMask(抗鋸齒紋理蒙版)
AntialiasedTextureMask(抗鋸齒紋理蒙版)表達式允許您使用軟(抗鋸齒)過渡蒙版來創建材質。此蒙版可用來在兩個複雜材質屬性之間混合,或者使阿爾法混合材質淡出(適合與“軟屏蔽”配合使用)。您只需指定在其中一個通道(紅色、綠色、藍色或阿爾法)中指定了蒙版的材質,在此表達式中設置所使用的通道,並指定比較值。假設該通道存儲 0(黑色)到 1(白色)範圍內的灰階值,比較功能將定義產生的蒙版是應該爲 0 還是 1。此表達式是一個參數,這使 紋理(Texture)屬性可以由子材質實例覆蓋。
項目 |
說明 |
---|---|
屬性 |
|
閾值(Threshold) |
指定用作像素範圍中的分界點的值。小於此值的像素範圍值將變爲黑色,大於此值的像素範圍值將變爲白色。 |
通道(Channel) |
指定要用作蒙版的紋理通道。 |
紋理(Texture) |
指定要使用的蒙版紋理。 |
輸入 |
|
UVs |
接收要應用於紋理蒙版的紋理座標。 |
僞代碼:
Result = 1
if TextureLookup < Threshold then Result = 0
實際實現略微複雜,因爲它會嘗試根據實際像素範圍來返回介於 0 與 1 之間的值,以消除鋸齒。
示例(爲了確保質量最佳,這個 128x128 的小紋理未進行壓縮):
用作正常紋理(左上角),以及與說明的材質表達式配合使用(右下角):
這種技術最適合在進行放大時使用,並可作用於模糊的輸入內容。壓縮會導致質量大幅下降,因此,請嘗試使用未經壓縮的低分辨率紋理。
DistanceToNearestSurface(與最近表面的距離)
DistanceToNearestSurface(與最近表面的距離)材質表達式節點允許材質對“全局距離場”關卡中的任何點進行取樣。 這個材質表達式將輸出從距離場到場景中最近遮擋體的帶符號距離(以全局空間單位計)。
項目 |
說明 |
---|---|
位置(Position) |
如果未輸入任何內容,那麼默認爲當前全局位置。 |
以下是作用中的 DistanceToNearestSurface(與最近表面的距離)材質表達式示例。
在此示例中,DistanceToNearestSurface(與最近表面的距離)輸送到材質上的“不透明”(Opacity)輸入,而該材質應用於放在關卡地板正上方的“靜態網格”平面。 DistanceToNearestSurface(與最近表面的距離)的作用是告訴材質,“靜態網格”平面僅從紅色區域開始與場景中的其他“靜態網格”相交。
DistanceFieldGradient(距離場梯度)
DistanceFieldGradient(距離場梯度)材質表達式節點進行規範化後,將輸出對象在距離場中的 X,Y,Z 移動方向。 這使 DistanceFieldGradient(距離場梯度)材質表達式節點非常適合於需要模擬液體流的材質。
項目 |
說明 |
---|---|
位置(Position) |
如果未輸入任何內容,那麼默認爲當前全局位置。 |
這裏是在材質中使用 DistanceFieldGradient(距離場梯度)材質表達式的示例。 在此示例中,請務必注意,DistanceFieldGradient(距離場梯度)首先進行規範化,然後輸入到“蒙版通道”(Mask Channel)節點。 這樣做的原因是,如果不首先對 DistanceFieldGradient(距離場梯度)進行規範化,您將無法獲得方向性數據。 爲了方便在材質實例中進行 RGB 通道切換,添加了“蒙版通道”(Mask Channel)參數。
以下是作用中的 DistanceFieldGradient(距離場梯度)示例。 下圖顯示啓用各種 RGB 後 DistanceFieldGradient(距離場梯度)將會使用的數據。
編號 |
說明 |
---|---|
1 |
啓用 R 通道並禁用所有其他通道。 |
2 |
啓用 G 通道並禁用所有其他通道。 |
3 |
啓用 B 通道並禁用所有其他通道 |