Unity Universal Render Pipeline


Make a backup of any projects before upgrading to URP, the new project is not reversible. Projects previously made with Post Processing Stack must remove all the PPS elements, uninstall PPS through the Window->Package manager. Projects made with HDRP are not compatible.

The real-time lighting is limited, the only light that can cast shadows in realtime is the directional light. Directional lights work by angling the light, not by position. No more than one light can cast shadows unless you bake the lights, this adds a lot of time to the render baking..

WebGL publish works with URP, but Post Processing is much faster to set up and can look better. Not to mention, it takes too long to bake with URP. You do not need to bake Post Processing.

URP Render, WebGL 1.0 there is no anti-aliasing, Guy Debord model from McKenzie Wark

Maya modeling suggestions:
Keep inner floors, ceilings and walls separate. Combine outer walls. Use Mesh->Triangulate all models.
UV Settings for models in Maya:  (especially if you see light map UV errors.)
     Select your object
     Select UV->Automatic->option.jpg
          Percentage space: .5

Install URP
Select Window->Package Manager
Select Universal RP
Select Install  (wait)

Select Shader Graph  (This was automatically installed with URP)
     Select Procedural Patterns click Import into project.

Create a URP Pipeline Asset
Select Assets->Create->Rendering->Universal     Render Pipeline->Pipeline Asset
   This creates UniversalRenderPipelineAsset and  UniversalRenderPipelineAsset_Renderer in Assets.

Add the URP Asset to your Graphics Settings
Select Edit->Project Settings...
     Select Graphics
          Under Scriptable Render Pipeline Settings add UniversalRenderPipelineAsset
     Uncheck all Levels except Ultra
     Select Quality
          Under Rendering change none to UniversalRenderPipelineAsset

Upgrade Materials
Select Edit->Render Pipeline->Universal Pipeline->Upgrade Project Materials to UniversalRP Materials
(This is not reversible.)

Add a Post-process Volume
Select Game-Object->Volume->Global Volume
Name it Post-process Volume
     In the Inspector
click New
     Click Add Override 
          Click the right arrow and select a Post-processing filter such as:
               Check Threshold 1
               Check Intensity 2+, try 20
          Lift Gamma Gain
               Check Gamma
                    Adjust the slider

Camera Setup
Select your Camera
     Set FOV Axis to Horizontal
     Select Post Processing
     Select Anti-aliasing->Fast Appoximate Anti-aliasing

Light Setup
Select your Directional light
Keep  Mode set to Mixed   (default Mixed, this light does not like to be baked.)
Lower the Strength of your Realtime Shadows to make them lighter (default 1)
Change Near Plane to .1 (default .2)

When you use a Point Light the Mode should be Baked for shadows.

Make a new SkyBox

Select Assets-Create->Material
In the Inspector change the Shader to Skybox/Procedural
Play with the color settings

Lighting Settings
Select Window->Rendering->Lighting Settings  (Or click the button lower right of screen.)
     Change the Skybox Material
to your new SkyBox
     (Leave Baked Global Illumination checked)
     Change Mixed Lighting to Baked Indirect   (default Shadowmask)
     Change Indirect Samples to 256 (default 512)
     Change Environment Samples to 256 (default 512)
     Change Lightmap Resolution to 32  (default 40)
     Change Lightmap Size to 1024
     Select Ambient Occlusion     (This adds light map baking time)
     Change Direct Contribution to .3   (default 0)
     Change Directional Mode to Non-Directional
(default Directional)
     Select Fog
     Change Density to .04 (default .01)

Universal Render Pipeline Settings
Select the UniversalRenderpipelineAsset from your Assets
Use the Inspector to change:
     Turn on HDR
     Change Anti Aliasing (MSAA) to 8x (default none)
     Select Cast Shadows
     Set Shadow Distance to 40   (default 50)
     Change Cascades to Two Cascades

     Select Soft Shadows

Add Light Bounce Calculations to Walls and large objects
For indoor scenes, choose any large objects, walls, ceilings, floors
Select Contribute Global Illumination
This effect needs to baked, expect long wait times..
Do not make your objects Static, this tool will do it automatically. Static will cause more baking than you want.

UV Problems
You may need to re-work the UV mapping on these objects for the Global Illumination lightmaps, you will see error messages in the Inspector.
     In Maya: Adjust UV Settings
          Select your object
          Select UV->Automatic->option.jpg
               Percentage space:  .5

Camera Script
If you are not using SteamVR this is a nice script to WASD,QE and mouse rotate the camera.
Download SimpleCameraController.zip

     PC: Right mouse Extract All... to unzip
     Place in your Assets folder.
Drag and drop the script onto your camera

Publish to WebGL 1.0

You can put this folder on a website server and access via the internet

File->Build Settings...
     Select WebGL
Select Player Settings...
    Select Player section
Resolution and Presentation
          Select Minimal WebGL Template
     Under Other Settings
          Change Color Space to Gamma  (Linear which makes WebGL 2.0 does not work with Safari and Explorer.)
          Select Auto Graphics API

     Close the Project Settings window
     Select Switch Platform
          Select Build And Run button
          Create a new folder outside of your Unity project, name it
          Save to the folder... 

WebGL 1.0 works on all platforms, URP does not publish anti-aliasing or Post Processing Effects with WebGL 1.0.
WebGL2.0 will not play in Safari or Explorer, it does work in Chrome and Firefox. If you want all browsers to have anti aliasing and effects, use Post Processing rather than URP.