URP中的ShaderLibrary
- 使用URP時咱們一般不去引用核心庫的文件,而是引用URP package中的ShaderLibrary文件夾下的hlsl文件,這裏整理而且概括一下各個文件包含的內容,方便以後翻看和定位。
Core.hlsl
- 定義了一些經常使用數據結構和一些經常使用的獲取函數
- 例如將模型空間的座標轉換爲各個空間座標的函數:
VertexPositionInputs GetVertexPositionInputs(float3 positionOS)
DeclareDepthTexture.hlsl
float SampleSceneDepth(float2 uv)
float LoadSceneDepth(uint2 uv)
- 這兩個函數都用於獲取深度信息,其區別爲:
-
- Texture Sample 是紋理採樣,會應用紋理尋址和紋理過濾
-
- Texture Load是加載某一特定位置的texel
-
-
- 後者使用的是[0,textureSizeX/Y]範圍的整數形式的參數
-
- 一般gles3.0以上的設備都建議使用LOAD_TEXTURE的方式獲取深度值
DeclareOpaqueTexture.hlsl
- 降採樣貼圖的採樣
- 裏面的兩個函數參考深度貼圖的採樣
- 引入了一些經常使用的變量及函數
- 例如:燈光信息、座標系轉換函數、GPUInstancing庫
Lighting.hlsl
- 光照計算相關函數
- 包含:
-
- URP實現的PBR光照模型、BlinnPhong模型
-
-
-
-
Shadows.hlsl
Particles.hlsl
- 粒子系統相關函數
- 例如:粒子顏色混合、切線空間的法線貼圖採樣等
ShaderGraphFunctions.hlsl
ShaderTypes.cs.hlsl