UnityShader內(nèi)置著色器變量
內(nèi)置著色器變量
Unity 的內(nèi)置文件包含著色器的全局變量:當(dāng)前對(duì)象的變換矩陣、光源參數(shù)、當(dāng)前時(shí)間等等。就像任何其他變量一樣,可在著色器程序中使用這些變量,但如果已經(jīng)包含相關(guān)的 include 文件,則不必聲明這些變量。
有關(guān) include 文件更多信息,請(qǐng)參閱內(nèi)置 include 文件。
變換
所有這些矩陣都是?float4x4
?類(lèi)型,并且是列主序的。
攝像機(jī)和屏幕
這些變量將對(duì)應(yīng)于正在渲染的攝像機(jī)。例如,在陰影貼圖渲染中,它們?nèi)詫⒁脭z像機(jī)組件值,而不是用于陰影貼圖投影的“虛擬攝像機(jī)”。
_WorldSpaceCameraPos
float3、攝像機(jī)的世界空間位置。
_ProjectionParams
float4、
x
?是 1.0(如果當(dāng)前使用翻轉(zhuǎn)投影矩陣進(jìn)行渲染,則為 –1.0),y
?是攝像機(jī)的近平面,z
?是攝像機(jī)的遠(yuǎn)平面,w
?是遠(yuǎn)平面的倒數(shù)。_ScreenParams
float4、
x
?是攝像機(jī)目標(biāo)紋理的寬度(以像素為單位),y
?是攝像機(jī)目標(biāo)紋理的高度(以像素為單位),z
?是 1.0 + 1.0/寬度,w
?為 1.0 + 1.0/高度。_ZBufferParams
float4、用于線性化 Z 緩沖區(qū)值。
x
?是 (1-遠(yuǎn)/近),y
?是 (遠(yuǎn)/近),z
?是 (x/遠(yuǎn)),w
?是 (y/遠(yuǎn))。unity_OrthoParams
float4、
x
?是正交攝像機(jī)的寬度,y
?是正交攝像機(jī)的高度,z
?未使用,w
?在攝像機(jī)為正交模式時(shí)是 1.0,而在攝像機(jī)為透視模式時(shí)是 0.0。unity_CameraProjection
float4x4、攝像機(jī)的投影矩陣。
unity_CameraInvProjection
float4x4、攝像機(jī)投影矩陣的逆矩陣。
unity_CameraWorldClipPlanes[6]
float4、攝像機(jī)視錐體平面世界空間方程,按以下順序:左、右、底、頂、近、遠(yuǎn)。
時(shí)間
時(shí)間以秒為單位,并由項(xiàng)目?Time 設(shè)置中的時(shí)間乘數(shù) (Time multiplier) 進(jìn)行縮放。沒(méi)有內(nèi)置變量可用于訪問(wèn)未縮放的時(shí)間。
_Time
float4、自關(guān)卡加載以來(lái)的時(shí)間 (t/20, t, t*2, t*3),用于將著色器中的內(nèi)容動(dòng)畫(huà)化。
_SinTime
float4、時(shí)間正弦:(t/8, t/4, t/2, t)。
_CosTime
float4、時(shí)間余弦:(t/8, t/4, t/2, t)。
unity_DeltaTime
float4、增量時(shí)間:(dt, 1/dt, smoothDt, 1/smoothDt)。
光照
光源參數(shù)以不同的方式傳遞給著色器,具體取決于使用哪個(gè)渲染路徑, 以及著色器中使用哪種光源模式通道標(biāo)簽。
前向渲染(ForwardBase
?和?ForwardAdd
?通道類(lèi)型):
_LightColor0
(在 UnityLightingCommon.cginc 中聲明)fixed4光源顏色。
_WorldSpaceLightPos0float4
方向光:(世界空間方向,0)。其他光源:(世界空間位置,1)。
unity_WorldToLight
(在 AutoLight.cginc 中聲明)float4x4世界/光源矩陣。用于對(duì)剪影和衰減紋理進(jìn)行采樣。
unity_4LightPosX0、unity_4LightPosY0、unity_4LightPosZ0
float4(僅限 ForwardBase 通道)前四個(gè)非重要點(diǎn)光源的世界空間位置。
unity_4LightAtten0
float4(僅限 ForwardBase 通道)前四個(gè)非重要點(diǎn)光源的衰減因子。
unity_LightColor
half4[4](僅限 ForwardBase 通道)前四個(gè)非重要點(diǎn)光源的顏色。
unity_WorldToShadow
float4x4[4]世界/陰影矩陣。聚光燈的一個(gè)矩陣,方向光級(jí)聯(lián)最多有四個(gè)矩陣。
延遲著色和延遲光照,在光照通道著色器中使用(全部在 UnityDeferredLibrary.cginc 中聲明):
_LightColor
float4、光源顏色。
unity_WorldToLight
float4x4、世界/光源矩陣。用于對(duì)剪影和衰減紋理進(jìn)行采樣。
unity_WorldToShadow
float4x4[4、]世界/陰影矩陣。聚光燈的一個(gè)矩陣,方向光級(jí)聯(lián)最多有四個(gè)矩陣。
為?ForwardBase
、PrePassFinal
?和?Deferred
?通道類(lèi)型設(shè)置了球諧函數(shù)系數(shù) (由環(huán)境光和光照探針使用)。這些系數(shù)包含由世界空間法線求值的三階 SH 函數(shù)(請(qǐng)參閱?UnityCG.cginc?中的?ShadeSH9
)。 這些變量都是 half4 類(lèi)型、unity_SHAr
?和類(lèi)似名稱。
頂點(diǎn)光照渲染(Vertex
?通道類(lèi)型):
最多可為?Vertex
?通道類(lèi)型設(shè)置 8 個(gè)光源;始終從最亮的光源開(kāi)始排序。因此,如果您希望 一次渲染受兩個(gè)光源影響的對(duì)象,可直接采用數(shù)組中前兩個(gè)條目。如果影響對(duì)象 的光源數(shù)量少于 8,則其余光源的顏色將設(shè)置為黑色。
unity_LightColor
half4[8]、光源顏色。
unity_LightPosition
float4[8]、視圖空間光源位置。方向光為 (-direction,0);點(diǎn)光源/聚光燈為 (position,1)。
unity_LightAtten
half4[8]、光源衰減因子。x?是 cos(spotAngle/2) 或 –1(非聚光燈);_y_ 是1/cos(spotAngle/4) 或 1(非聚光燈);_z_ 是二次衰減;_w_ 是平方光源范圍。
unity_SpotDirection
float4[8]、視圖空間聚光燈位置;非聚光燈為 (0,0,1,0)。
光照貼圖
unity_Lightmap
Texture2D包含光照貼圖信息。
unity_LightmapST
float4[8]、縮放 UV 信息并轉(zhuǎn)換到正確的范圍以對(duì)光照貼圖紋理進(jìn)行采樣。
霧效和環(huán)境光
unity_AmbientSky
fixed4、梯度環(huán)境光照情況下的天空環(huán)境光照顏色。
unity_AmbientEquator
fixed4、梯度環(huán)境光照情況下的赤道環(huán)境光照顏色。
unity_AmbientGround
fixed4、梯度環(huán)境光照情況下的地面環(huán)境光照顏色。
UNITY_LIGHTMODEL_AMBIENT
fixed4、環(huán)境光照顏色(梯度環(huán)境情況下的天空顏色)。舊版變量。
unity_FogColor
fixed4、霧效顏色。
unity_FogParams
float4、用于霧效計(jì)算的參數(shù):(density / sqrt(ln(2))、density / ln(2)、–1/(end-start) 和 end/(end-start))。x?對(duì)于 Exp2 霧模式很有用;_y_ 對(duì)于 Exp 模式很有用,_z_ 和?w?對(duì)于 Linear 模式很有用。
其他
unity_LODFade
float4、使用?LODGroup?時(shí)的細(xì)節(jié)級(jí)別淡入淡出。x?為淡入淡出(0 到 1),_y_ 為量化為 16 級(jí)的淡入淡出,_z_ 和?w?未使用。
_TextureSampleAdd
float4、根據(jù)所使用的紋理是 Alpha8 格式(值設(shè)置為 (1,1,1,0))還是不是該格式(值設(shè)置為 (0,0,0,0))由 Unity?僅針對(duì) UI?自動(dòng)設(shè)置。