Unity3D -- shader光照常用函數和變量
阿新 • • 發佈:2018-06-21
ace mod 因子 htm cookie dbase final pac ase
上一篇記錄了shader常用函數和變量,這篇記錄一些光照計算時常用函數和變量
1、內置的光照變量
_LightColor0 float4 //該Pass處理的逐像素光源的顏色
_WorldSpaceLightPos0 float4 //_WorldSpaceLightPos0.xyz是該Pass處理的逐像素光源的位置。如果該光源是平行光,那麽_WorldSpaceLightPos0.w是0,其他光源類型是1
_LightMatrix0 float4x4 //從世界空間到光源空間的變換矩陣,可以用於采樣cookie和光強衰減紋理
unity_4LightPosX0,unity_4LightPosY0,unity_4LightPosZ0 float4 //僅用於Base Pass,前4個非重要的點光源在世界空間中的位置
unity_4LightAtten() float4 //僅用於Base Pass, 存儲了前4個非重要的點光源的衰減因子
unity_LightColor half4[4] //僅用於Base Pass,存儲了前4個非重要的點光源的顏色
2 、LightMode標簽支持的渲染路徑設置選項
Always //不管使用哪種渲染路徑,該Pass總會被渲染,但是不會計算任何光照
ForwardBase //用於前向渲染,該Pass會計算環境光,最重要的的平行光,逐頂點/SH光源和Lightmaps
ForwardAdd //用於前向渲染,該Pass會計算額外的逐像素光源,每個Pass對應一個光源
Deferred //用於延遲渲染,該Pass會渲染G緩沖(G_buffer)
ShadowCaster //把物體的深度信息渲染到陰影映射紋理或一張深度紋理中
PrepassBase //用於遺留延遲渲染,該Pass會渲染法線和高光反射的指數部分
PrepassFinal //用於遺留延遲渲染,該Pass通過合並紋理、光照、自發光來渲染得到的最後的顏色
Vertex,VertexLMRGBM和VertexLM //用於遺留的頂點照明渲染
3、頂點照明渲染路徑中可以使用的內置變量
unity_LightColor half4[8] //光源顏色
unity_LightPosition float4[8] //xyz分量是視角空間中的光源位置,如果光源是平行光,那麽z分量值為0,其他光源類型z分量值為1
unity_LightAtten half4[8] //光源衰減因子,如果光源是聚光燈,x分量是cos(spotAngle/2),y分量是1/cos(spotAngle/4);如果是其他光源,x分量是-1,y分量是1,z分量是衰減的平分,w分量是光源範圍開根號的結果
unity_SpotDirection float4[8] //如果光源是聚光燈的話,值為視角空間的聚光燈的位置,如果是其他類型的光源,值為(0,0,1,0)
4、頂點照明渲染路徑中可以使用的內置函數
float3 ShadeVertexLights(float4 vertex,float normal) //輸入模型空間中的頂點位置和法線,計算四個頂點光源的光照以及環境光
float3 ShadeVertexLightsFull(float4 vertex, float3 normal, int lightCount, bool spotLig
Unity3D -- shader光照常用函數和變量