HDRP vs URP what is the tradeoff?

HDRP was in this state not too long ago, but it’s much better now as the pipeline has matured. Not so many breaking changes anymore. I was able to update from 20.3 to 21.2 (for the clouds) without any shaders breaking.
Started this project on Unity 2018. I think I’m done updating now haha

Hello, apart from “shipped with” HDRP shaders and premade configuration options, is there anything one can achieve or has with HDRP and URP one can’t by custom shaders in Standard built-in?

Not sure, but all the graphical features like volumetric fog/lighting, clouds, etc are possible with custom shaders.
The way you extend both RP’s is different though, I believe URP has some limitations or lacks some rendering info that you’d need for some shaders where HDRP has it, but I don’t know much about that particular case so for extending render pipelines you’ll be better off hearing about it from someone else.

x.com seems like unity has improved the main thread performance… Did anyone got any performance boost in the new versions??

If you have expert render engineers you can probably almost achieve the same
HDRP has very good scaling for high demanding scenes. You can use deferred and forward at the same time

Overall HDRP has about all the graphical things you need on high quality and is quite stable (although 2021 LTS now broke TAA and Decals, 2020 LTS is stable and feels quite complete) but HDRP has quite the CPU Cost and no switch support.

In terms of GPU, HDRP looks way better than built in + assets or URP, and these don’t have DLSS so its likely even less costly on GPU than those (once it works I guess)

You can buy in a lot with assets but assets are generally ticking time bombs and the more you have the more unstable your project. URP seems like the worst of both worlds. With HDRP you can at least compete with Unreal, with URP why would I pick this engine over unreal or Godot if im not making mobile.

Because you are professional in Unity but in Godot or UE, you are zero and you dont want to start over.

2 Likes

People that moved to Unreal say they need about a month to be able to get up to speed and feel as productive.

Learning C++ on the senior level and UI workflow taking 1 month ? Yeah sure.

10 Likes

I don’t know why you think you need to learn C++ to a senior level to make a game in Unreal.

Also, the things you should be becoming professional is game design and art and learning how to learn things, and those transfer regardless of software. The rest you can pick up.

It’s not as if continuing to use Unity doesn’t invalidate old know-how. I know how to bake good lightmaps in Enlighten, I can shove that knowledge up my arse now.

And if I want to do high performance big worlds in Unity in the future, I need to deep dive in the whole DOTS ecosystem.

Knowing where the buttons are and how the menus are organised is not that big a deal.

Provided that you are thinking of using HDRP for realistic graphical style,

In my experience, the ultimate difference between HDRP and URP is graphical fidelity.
HDRP → DLSS
URP → TAA, things just breakdown when camera is moving

The second major difference is how reflection looks really dated in URP.
HDRP → Bent Normal Specular Occ + Physically based sky + RTReflections
URP → None (but maybe it can be implemented?) just PBR sky + reflection probes

Lastly, enabling raytracing just keeps the two SRPs a good generation apart
HDRP → RTGI, Reflection, Shadows(Huge difference)
URP → Best you can do is apply some Screen Space AO

Few things that made me not give up on HDRP

  • HDRP does have a higher overhead, especially CPU, but same scene in URP performed about the same. Maybe like 10% higher FPS in some angles. But it had more stutters. Didn’t spend too much time on it so fingers crossed. I feel like URP is just faster on an empty/small scene. Add a realistic amount of environment and I think HDRP outperforms URP (Provided they are doing the same graphical work) as long as you offload as many things to the GPU. It might be more accurate to say that URP doesn’t perform in bigger scenes but I digress.
  • Having a building interior with proper realtime lighting (Time of the day) in the middle of an open terrain is impossible in Unity unless you go HDRP + raytracing.
  • HDRP requires less third party assets to do basic stuff (volumetric fog, water, SSS) hence no need to spend time making multiple assets work together. Unity HDRP keeps everything working.
  • Provided that Raytracing is to be supported, (if not, then just go URP) HDRP performs surprisingly well.
  • DLSS3 will probably come to HDRP only which will largely workaround the CPU overhead anyway
  • No lightmap baking with SSGI (really meh but still) or RTGI + RT shadows
  • Decent Subsurface shading
  • Crappy stuff on HDRP is also crappy on URP - like terrain, terrain details

Here is a screenshot of my wip open world game (projected shipping date of late 2024 earliest) running at 1440p. RTGI, RTR, RT Shadows. DLSS quality. Its on a 4x4km terrain. It is in early level layout stage so only big objects placed. Not optimized at all - just basic LOD at 50% scaling per screenspace size. All high quality assets, 2k~4k textures (Diffuse, Mask, Normal, Thickness, Bent Normal and Detail).


The best part of HDRP (Raytraced) is that things look natural just out of the box. No need to add in excessive post processing, no need to shove SSAO hard to make it look less “empty” or overpower normal strength. No need to make things too shiny to retain “reflectiveness”. As long as the material’s physical properties are within reasonable range, the end result simply requires good composition. The ride is just smooth enough.

But it doesn’t mean that it doesn’t have issues - it has major problems like terrain- but it is the same with URP anyway, so yup. Take it with a grain of salt.

Bonus (Time of the Day) by just changing sun angle - nothing else. No baking, no nothing other than change angle in the editor inspector



13 Likes

If you want to make supermario in unreal then yeah, you dont need senior level of coding. If you want to make an RTS or space-sim, you better be senior level.

4 Likes

Coolio.

1 Like

Nice. Do you have any fallbacks for people without RT cards? Lumen, RTGI etc. are cool, but one thing that sorta scares me is how big an impact they have in terms of gameplay, paired with how few who will/can use it.
Its a non-issue when talking about things like reflections, but in the case of GI, a room might become pitch black without - or vise versa.

1 Like

Yes, it can use the default unity SSGI, but

the game won’t run very well on older cards anyway, so chances are we will not support non RTX cards. For example, 1080Ti won’t be enough, no matter how hard I try - unless I make a potato version of the game. VRAM alone just won’t cut it. Also, AMD cards will run like crap anyway with RT anyway as well.

Also, imho, lumen is meant to work with hardware Raytracing, in software mode, it is as crap and slow as Unity SSGI. Just look at the latest UE5 games and their performance. Realistically, realtime GI really needs RT hardware. So, really, in that sense, I don’t really see a performance/quality difference between UE and Unity. There is Nanite but I think it is a bit hard for indies to reach. The tech is nice and easy, but the assets required is just too far away at the moment. Especially for foliage.

The project - at least for its target window - assumes that the user has a decent RT-able card. It would be in the region of RTX3080, RTX4070 now for the minimum (for 1080p, 60FPS+ experience), but that is in 2 years and probably 3. So, I am not too worried about the hardware requirements.

I am developing this project with a RTX4090, and my internal goal is to achieve 120FPS (dlss quality) @ 1440p with this rig - under maximum settings. My gut tells me that I won’t be able to keep this goal, and probably will have to adjust but at the moment that is the target performance goal.

Why so high ?
Do you plan to make it for VR later ?

btw. Awesome results you have.

I’m adding my grain of sand to the discussion, as I’ve done the opposite jump: from UE5 to Unity. Maybe it can be useful to some, as UE is not all that shining gold some speak about.
Some time ago I decided I wanted to create my own open world game. I’ve been a software developer for over 20 years (mostly C#, but also C on Unix a long LONG time ago). But had 0 experience with games whatsoever (actually I had developed a small game in 1997 with turbo C, but it was another thing). After looking at both UE and Unity and I’ve understood that Unity would be more familiar because of C#, but Unreal (UE5 was just launched back then) had a lot of tools for open worlds that would make my life easier, so I decided to study UE. Of course UE5, because, and this was not that clear to me back then, now Epic is deprecating UE4 and less and less marketplace assets support it. So I bought a number of courses (actually a Humble Bundle, very convenient) and started off my journey. Which at the beginning was awesome. All that good stuff out of the box, Lumen, and Nanite and World partition. Wow. Awesome… on paper. The reality is that when you start digging a bit, you realize 2 main things:

  1. Unreal optimization is a nightmare
  2. Unreal engine 5 is a freaking bug with an engine around it.
    Terrain LODs are not working. As simple as that. And world partition relies on LODs to stream the terrain. So the whole basis of the open world is not working. I was never able to build LODs from the engine. Tesselation is deprecated in UE5 in favor of Virtual heightfield Mesh, which, again, is buggy and not working as expected. Moreover, after spending some good bucks in awesome assets, Epic updated the engine, and you need to wait for the assets to update to the latest version, or you can’t install them. Same goes for DLSS, which was updated to UE5.1 right after UE5.2 came around.
    You can work around some of the bugs only if you dig in the engine source code, which means you either are a AAA studio or you are f***d. Nanite foliage is awesome, until you add some wind, in which case, Lumen needs to rebuild the whole shadow cache and FPS plummets of a good 30%. The engine native tools to build big terrains is ridiculous, and you must rely on external tools. Procedural tools are adding up, but they take time and effort to be used properly. I thought my biggest problems would be on the C++ side, but I was wrong. That is actually pretty easy (if you know your way in C or C++ and once you get familiar with the libraries). I was really frustrated regarding the barebones of the engine.

So after spending some good money to buy the assets for my game, I am coming back to Unity. Giving it a chance. And I find that overall, even if productivity in UE5 is definitely higher (you can do more in less time), Unity is more stable. It doesn’t mean there is no bugs or limits. But you are able to overcome them thanks to some things you can only build yourself in UE5: optimization tools. Surprisingly, from the marketplace, I was able to find awesome tools to overcome some of the engine limitations like terrains, floating point on big maps, lack of optimization etc. After giving a try to their free versions, I decided to invest in some awesome tools (some of them 50% off atm) and optimizers, which help to overcome the base engine limitations. I am now able to build more or less the same 8k map I built in UE with even slightly better performance (1040p) but so much faster! I still find UE5 a notch above Unity (especially nanite is truly awesome, and also Lumen with no wind in the scene), but Unity allows a solo developer to do what you can do only with a bigger team or a lot of expertise in UE. Oh, and not to mention I have tesselation back :smile:

So yes, this Unity has some limitations and bugs, but there’s ways around it without you to be a NASA engineer. At least this is my experience on both sides of the force :slight_smile:

EDIT in 2024
As UE5.3 was released many bugs have been fixed, among which the terrain LoD system. They added terrain tesselation (virtual heightfield mesh), but it’s still experimental and not production-ready. Same for many other things like nanite terrains. So in the end, overall, the above review is still valid: huge amount of time and resources are needed to develop in UE with the latest goodies (Lumen and Nanite). If you have a beefy machine and have time to fix build errors, then it could be a viable solution. If, like most of us, you have a laptop as main dev machine, then you’ll find if VERY difficult to build a full game.

10 Likes

fair on you. Any product that has to be as flexible as a game engine is will have pros and cons for a game, and/or person/team. I tried unreal, there were some things I did kinda like about it… But to me they kinda are a pair, its like ones metric ones imperial, neither necessarily better or worse than the other, but if you look at small sections perhaps UE does that better, or unity this… Sadly no ones taken both, mushed them together and taken out the best of both.

2 Likes

I built my game in unity 2022.3.0

DX11, 1440p

URP: 120-140 fps (not so nice)
HDRP: 50-55 fps (beautiful)

Is it normal?

in URP I have only minimalistic fogs and fake volumetric, Beautify, bloom, etc

in HDRP I have almost everything, sky and fogs, volumetric, bloom, etc

What do you mean with “normal”? You cannot compare performance between pipelines without a complete list of settings and post processing used. One heavy post processing like SSGI (just an example) can bring the FPS drastically down. You need to to profiling to find out what costs what in terms of GPU and CPU, then you can start drawing conclusions.

Sorry my mistake:

I have more camera with rendertextures and HD Additional settings was on…