URP and Built-in RP feature mapping

URP Documentation has this feature comparison table showing feature parity with Built-in RP,
e.g. telling what is supported and not yet supported.

This blog post shows the comparison in terms of usage.
Based on Unity 2020.2.2f1 + URP 10.2.2

FeatureBuilt-in RPUniversal RP (URP)
Renderer / Object
Rendering Callbacks
Called on Renderer:
■ OnWillRenderObject
■ OnBecameVisible
■ OnBecameInvisible

Called on GameObject:
■ OnRenderObject
same as Built-in RP.
Camera
Rendering Callbacks
Called on Camera:
■ OnPreCull
■ OnPreRender
■ OnPostRender
■ OnRenderImage
use RenderPipelineManager
■ beginFrameRendering
■ beginCameraRendering
■ endCameraRendering
■ endFrameRendering
see below for more callbacks.
Rendering EventsCameraEvent + Camera.AddCommandBuffer

LightEvent +
Light.AddCommandBuffer
create ScriptableRendererFeature & ScriptableRenderPass, and use RenderPassEvent. See example.
Add this RendererFeature to a ForwardRendererData asset.
Script Execution OrderSee DocumentationSee here
Dynamic Batching
checkbox
located in ProjectSettings > Playerlocated on UniversalRenderPipeline asset
Shadows settingslocated in ProjectSettings > Qualitylocated on UniversalRenderPipeline asset
Default shader
(Lit)
Standard shader
and all the other legacy / mobile lit shaders
Universal Render Pipeline/Lit shaders
Default shader
(Unlit)
all the Unlit shadersUnlit shaders that works in built-in RP still works in URP.
but recommended to use URP’s own unlit shaders:
Universal Render Pipeline/Unlit shaders
Custom ShaderNeed to write shader code.
ProjectView > Create > Shader:
■ Standard Surface Shader
■ Unlit Shader
■ Image Effect Shader
These 2 shader templates still works in URP, as long as they don’t do lighting.
ProjectView > Create > Shader:
■ Unlit Shader
■ Image Effect Shader

Create ShaderGraph (node-based shader editor).
ProjectView > Create > Shader > Universal Render Pipeline
Shader PassesName “FORWARD”
Tags { “LightMode” = “ForwardBase” }

Name “FORWARD_DELTA”
Tags { “LightMode” = “ForwardAdd” }

Name “ShadowCaster”
Tags { “LightMode” = “ShadowCaster” }

Name “DEFERRED”
Tags { “LightMode” = “Deferred” }

Name “META”
Tags { “LightMode”=”Meta” }

(from Standard shader)
Name “ForwardLit”
Tags{“LightMode” = “UniversalForward”}

Name “ShadowCaster”
Tags{“LightMode” = “ShadowCaster”}

Name “GBuffer”
Tags{“LightMode” = “UniversalGBuffer”}

Name “DepthOnly”
Tags{“LightMode” = “DepthOnly”}

Name “DepthNormals”
Tags{“LightMode” = “DepthNormals”}

Name “Meta”
Tags{“LightMode” = “Meta”}

Name “Universal2D”
Tags{ “LightMode” = “Universal2D” }

(from URP Lit shader)
Shader Property Names_MainTexture
_Color

(from Standard shader)
_BaseMap
_BaseColor

(from URP Lit shader)
Camera Texturesuse DepthTextureMode
■_CameraDepthTexture
■_CameraDepthNormalsTexture
■_CameraMotionVectorsTexture
enable Depth Texture checkbox
on UniversalRenderPipeline asset
■_CameraDepthTexture

enable Opaque Texture checkbox
on UniversalRenderPipeline asset
■_CameraOpaqueTexture

Leave a comment