內置的材質包含文件 .cginc


Unity中包含幾個文件,可以用於你的Shader程序,里面包含了預定義的變量和輔助函數。使用它需要用 #include指令

CGPROGRAM
// ...
#include "UnityCG.cginc"
// ...
ENDCG

 Shader包含的文件在Unity中后綴為.cginc,內置的文件為:

  • HLSLSupport.cginc - (自動包含) 為跨平台的着色器編譯宏和定義提供幫助。
  • UnityShaderVariables.cginc - (自動包含)常用的全局變量。
  • UnityCG.cginc - 常用的輔助函數
  • AutoLight.cginc - 照明&陰影功能,如表面着色器在內部使用這個文件
  • Light.cginc - 標准表面着色器照明模式,當你寫surface shaders時自動包含。
  • TerrainEngine.cginc - 對地形和植被着色器的輔助函數

這些文件在Unity文件夾({unity install path}/Data/CGIncludes/UnityCG.cginc on Windows,           /Applications/Unity/Unity.app/Contents/CGIncludes/UnityCG.cginc on Mac),如果你想看看究竟是什么樣的輔助代碼。

HLSLSupport.cginc

在編譯Shader時自動包含。它聲明了各種預處理器宏在多平台材質發展輔助。

UnityShaderVariables.cginc

在編譯Shader時自動包含。它宣稱各種內置的着色器中常用的全局變量。

UnityCG.cginc

這個文件經常在Unity Shader中包含,帶來許多輔助方法。

  Data結構在UnityCG.cginc 

  • appdata_base:頂點着色器輸入與位置,法線,紋理坐標
  • appdata_tan:頂點着色器輸入與位置,法線,切線,一個紋理坐標
  • appdata_full:頂點着色器輸入與位置,法線,切線,頂點顏色和兩個紋理坐標
  • appdata_img:頂點着色器輸入與坐標和一個紋理坐標

  泛型的方法在UnityCG.cginc

  • float3 WorldSpaceViewDir(float4 v) - 返回世界空間向量(沒有進行歸一化的)從給定對象空間頂點位置對着鏡頭
  • float3 ObjSpaceViewDir(float4 v) - 返回對象空間向量(沒有進行歸一化的)從給定對象空間頂點位置對着鏡頭
  • float2 Parallaxoffset(half h, half height, half3 viewDir) - 為正常視差映射計算UV偏移
  • fixed Luminance(fixed3 c) - 將顏色轉換為亮度(灰度)
  • fixed3 DecodeLightmap(fixed4 color) - 從Unity的光照映射中解析顏色(RGBM或dLDR取決於平台)
  • float4 EncodeFloatRGBA(float4 v) - 編碼[0 . . 1)浮動范圍為RGBA顏色,用於存儲在低精度渲染目標
  • float DecodeFloatRGBA(float4 enc) - 解碼RGBA顏色到一個浮點數
  • float2 EncodeFloatRG(float v) 和 float DecodeFloatRG(float2 enc)使用兩個顏色通道
  • float2 EncodeViewNormalStereo(float3 n) - 將視圖空間發現編碼為0~1范圍內
  • float3 DecodeViewNormalStereo(float4 enc4) - 從enc.xy中解碼為視圖空間法線

  正向渲染方法在UnityCG.cginc

  這些方法只有在使用正向渲染(forward rendering)時才有用(ForwardBase或ForwardAdd通過類型)。

  • float3 WorldSpaceLightDir (float4 v) - 計算世界空間向量(沒有歸一化的)的光,給定對象空間頂點位置。
  • float3 ObjSpaceLightDir(float4 v) - 計算物體空間向量(沒有歸一化的)的光,給定對象空間頂點位置。
  • float3 Shade4PointLights(....) - 計算照明從四個點光源,光數據緊密到向量,正向渲染使用這個去計算per-vertex(每個頂點)的燈光

  頂點照亮方法在UnityCG.cginc

  這些方法只有在使用pre-vertex lit

  • float3 ShadeVertexLights(float4 vertex, float3 normal) - 計算照明從四個per-vertex 光照和環境從給予的物體空間坐標和法線


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM