URP和内建管线的一些编程上的差异
Table of Contents
请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com
SubShader代码中的Tags
新增加了RenderPipeline关键字
SubShader的Tags段中需添加 "RenderPipeline" = "UniversalPipeline"
语句段
光照模式(LightMode)关键字的对应替换
Built-in | URP | 作用 |
---|---|---|
ForwardBase |
UniversalForward |
|
ForwardAdd |
开启关键字_ADDITIONAL_LIGHTS 解决 |
|
ShadowCaster |
ShadowCaster |
|
MotionVectors |
尚未支持 | |
Always |
不再支持 | |
PrepassBase |
不再支持 | |
PrepassFinal |
不再支持 | |
Vertex |
不再支持 | |
VertexLMRGBM |
不再支持 | |
VertexLM |
不再支持 | |
URP新增 | DepthOnly |
|
URP新增 | Meta |
用于烘焙光照贴图 |
URP新增 | Universal2D |
用于2D的前向渲染 |
URP新增 | UniversalGBuffer |
Deferred Rendering(延迟渲染)中使用,目前URP不支持延迟渲染,暂时用以兼容HDRP |
URP新增 | UniversalForwardOnly |
用于在Deferred Rendering(延迟渲染)中,表示这个Pass使用Forward Rendering(前向渲染) |
变体相关的指令
内建管线中,提供了multi_compile_fwdbase
来编译所有ForwardBasePass所需要的变体,multi_compile_fwdadd
来编译ForwardAddPass所需要的所有变体,类似如下代码:
#pragma multi_compile_fwdbase
而在URP中,需要自己判断需要编辑哪些变体,用户又更大的灵活性,类似如下(参考Lit.Shader):
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE
#pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS
#pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS
#pragma multi_compile _ _SHADOWS_SOFT
#pragma multi_compile _ _MIXED_LIGHTING_SUBTRACTIVE