URP deferred

I’ve spent a few hours changing the lighting model of built-in lighting model, it was hum… interesting.
So I have one request for the URP deferred, to lower the level of hum… interestingness:

make the changing of lighting model EASY

what this means practically:
wrap lambert should be no more than 4 nodes away: ndotl (yep should be a node so we don’t have to redo it 20 million times, since it’s used all the time), 0.5, mult and add

also, make multi pass composite possible so we can have inverse hull outlines.

2 Likes

hi, in which version you managed to use the deferred mode in URP?

the lighting model change was done in built-in, URP team is releasing deferred any-time-now™

How about the performance? I tried the deferred rendering in URP 9.0 with Unity 2020.2, seems every point light cause 3 extra non-batched draw call(Stencil Volume Pass + Lit Pass + Simple Lit Pass), not a big deal for PC, I did not see any framerate drops inside editor, but it’s a little bit scary…so I switch back to forward renderer…

So they are implementing deferred as it was 10 years ago, using stencil-based geometry draw calls instead of tiled/froxel compute-based shading. Why? Any GPU that doesn’t support compute shaders in 2020 is also very likely not capable of running 10+ referred rendered lights at an acceptable performance.

Hope that’s only a very basic implementation in 9.0, because I saw tile depth pass in 10.0.

1 Like

That’s reassuring. DeferredLights.cs is all about tiled lighting. Also nice to see many #if UNITY_SWITCH around the code, it means the team is actually testing their stuff on device or something. Oh, and seems they are trying to use burst inside SRPs now, so there is hope. For projects starting next year, but still.

1 Like

Nice. I’ll take a look at v10

how do you install v10?
I get this error

Z:\__TESTS\Graphics\com.unity.render-pipelines.universal\Editor\ShaderGUI\ParticleGUI.cs(319,106): error CS1061: 'ParticleSystemRenderer' does not contain a definition for 'supportsMeshInstancing' and no accessible extension method 'supportsMeshInstancing' accepting a first argument of type 'ParticleSystemRenderer' could be found (are you missing a using directive or an assembly reference?)

in 2020.1 and 2020.2

The currently latest URP version in the Graphics repository requires at least 2020.2a17. Which version are you on?

a18

Try checking out 10.0.0-preview.14. That should work with a18 :slight_smile:

Wait, URP gets a Deferred renderer?

NOOOOOO… all the shaders just get more complicated now, I thought the main idea of URP was it being forward renderers all the way down.

They want to replace built-in, and built-in has deferred, so…

I tried https://github.com/Unity-Technologies/Graphics/tree/v10.0.0-preview.18 which has urp 14 and https://github.com/Unity-Technologies/Graphics/tree/v10.0.0-preview.14 which has urp 10 < very confusing, needs consolidation to a same preview # even if URP team falls between sub releases.
None work with a18
6120218--666872--upload_2020-7-22_18-32-0.png
6120218--666875--upload_2020-7-22_18-32-6.png

Ok. I thought built-in was split into HDRP and URP, but ok. I think they should make a Deferred variant of URP though.

That was the original idea with LWRP and HDRP. But when Unity realized expecting their user base to write their own render pipelines was infeasible, LWRP became URP and its goals changed: it now has to do everything built-in did, plus do it faster, better and scaling all the way from low end mobile to next-gen consoles (this will take a while).

HDRP’s role in this scenario is uncertain, since the only features it will have over URP when it’s all said and done are volumetric lighting and ray tracing.

1 Like

There is no URP 14, they are both URP 10. I verified that those versions work together before replying to you, so it sounds like something is wrong in your setup. It looks like you have different versions of Core RP Library, Shader Graph, and Universal RP, which won’t work. When using local packages, all the dependencies of the local package must also be manually set up as local packages. So in this case, you have to also setup com.unity.render-pipelines.core and com.unity.shadergraph as local packages from the same repository.

URP deferred is on the way :slight_smile:

1 Like

that’s what I’m doing, what’s the github url of a repo that works for you in a18?

Ah okay, it’s just that your Package Manager screenshot is showing 3 different versions.

This one: https://github.com/Unity-Technologies/Graphics/tree/v10.0.0-preview.14