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