概括
1 2 3 4 5 6 7 8 9 10 11 12
| // URP核心库文件 #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" // 灯光相关 #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" // 矩阵、输入相关 #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl" // 空间变换 #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/SpaceTransforms.hlsl" // 深度图 #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl" // 一些工具函数,包含Linear01Depth等 #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
|
区别
SRP Batch
不同材质使用同一个shader会进行合批,有利于减少cpu向gpu数据准备的时间。
要使用SRP Batch
shader必须要使用CBUFFER
,而且需要是静态Mesh
,不可以是SkinnedMeshRender
。
纹理与采样器分离
贴图纹理的设置不在影响shader,shader里面可以使用纹理的任意模式而不需要重新拷贝一张纹理来设置纹理的模式来满足shader。
例如以往纹理设置了point
repeat
等,shader的在使用纹理的时候模式就已经固定,但是在urp
里面,可以在shader里面觉得使用什么模式来采用纹理而不受纹理的设置控制。
real修饰符
在移动和switch平台会使用half
代替,其他平台用float
代替。
光照pass更少
urp可以一个pass处理所有的光照,在内置shader需要每个像素光都增加一个pass渲染。
在urp里面,光照的亮度会明显比内置shader弱,同样大小的Intensity
在urp里面会更暗,大概需要增强5倍才可达到内置渲染关心的Intensity
效果。
参考链接
项目升级到urp
urp后处理