URP中的ShaderLibrary

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,1]範圍的浮點數形式的參數
    • 後者使用的是[0,textureSizeX/Y]範圍的整數形式的參數
  • 一般gles3.0以上的設備都建議使用LOAD_TEXTURE的方式獲取深度值

DeclareOpaqueTexture.hlsl

  • 降採樣貼圖的採樣
  • 裏面的兩個函數參考深度貼圖的採樣

Input.hlsl

  • 引入了一些經常使用的變量及函數
  • 例如:燈光信息、座標系轉換函數、GPUInstancing庫

Lighting.hlsl

  • 光照計算相關函數
  • 包含:
    • URP實現的PBR光照模型、BlinnPhong模型
    • Global Illumination 相關函數
    • BDRF結構
    • Light結構
    • more

Shadows.hlsl

  • 投影相關函數和結構
  • 計算各類光的投影強度

SurfaceInput.hlsl

  • 定義表面信息的結構和一些幫助函數
  • 例如:
    • 透明度處理
    • 採樣反照率透明度
    • 採樣法線貼圖
    • 採樣自發光

UnityInput.hlsl

  • 包含了從Unity傳入的數據

MetaInput.hlsl

  • MetaPass相關處理函數

Particles.hlsl

  • 粒子系統相關函數
  • 例如:粒子顏色混合、切線空間的法線貼圖採樣等

ShaderGraphFunctions.hlsl

  • ShaderGraph相關函數

ShaderTypes.cs.hlsl

  • 自動生成的文件,不要手動修改
相關文章
相關標籤/搜索