Search Unity

The High Definition Render Pipeline: Focused on visual quality

, março 16, 2018

In a recent blog post, we introduced the concept of Scriptable Render Pipelines. In short, SRP allows developers to control how Unity renders a frame in C#. We will release two built-in render pipelines with Unity 2018.1: the Lightweight Pipeline and High Definition Render Pipeline. In this article, we’re going to focus on the High Definition Render Pipeline or HDRP.

HDRP aims to provide developers with tools to achieve high definition visuals.

Its design follows three principles:

  • Physically based rendering
  • Unified and coherent lighting
  • Features independent of the rendering path

Physically based rendering relies on three pillars: Lighting, Material, and Camera. Lighting and material rely on physical interaction and there should be a clear decoupling between them to get a coherent result under various lighting conditions. The camera interprets how the resulting lighting will be displayed on the screen. The goal is to make it easier for the artists to achieve a plausible result.

Unified lighting means that all objects and participating media in the scene should receive the same lighting. There shouldn’t be any distinction between opaque, transparent or volumetric materials. Coherent lighting means that a material must interact correctly with the lighting produced by any light sources (reflection probe, area lights…), even when modified by a Decal for example. This results in a more coherent look.

There are various rendering passes used in real-time rendering: Deferred/Forward, SinglePass/Multipass, Tile/Cluster… It is common in game development that the selection of a rendering path limits the set of graphics features. For HDRP we have tried to get the same set of graphics features whatever the rendering path. The result is that the choice of a rendering path is solely based on performance and not on which features are required for a game.

During the development of HDRP, we have followed this principle as closely as possible.

Who is it for?

The HDRP targets high-end PCs and consoles and prioritizes stunning, high definition visuals. We wanted to bring AAA graphics features in the hands of smaller teams. It assumes at least a DX11 level features set and makes heavy use of compute shaders. The tradeoff here is that the HDRP will not work on less powerful platforms. The target supported APIs are D3D11, D3D12, GNM (PlayStation 4), Metal and Vulkan. VR support is planned, but not implemented in the currently available preview.

Moreover, HDRP comes with a full new set of features and behaviors and there will be learning and re-tooling required. We’re providing a conversion tool to upgrade a project from Built-in Unity to HDRP, but it only helps you to quickly re-setup materials and textures. All the lighting, all the post-processing, scene settings, graphics settings and custom shaders will need to be re-worked.

Example of Viking Village project upgrade.

Lastly, HDRP is in Preview state, which means that it’s currently not suitable for production.

Lighting improvement

HDRP comes with a new lighting architecture: It uses a hybrid Deferred / Forward – Tile / Cluster renderer. These words mean that it scales way better than built-in Unity rendering with the number of lights in the scene. This new lighting architecture is focused on performance.

Debug mode to visualize tiled light list.

Additionally, HDRP comes with various additional light properties and a new light editor: It is possible to fade the light, affect only diffuse or specular lighting or use color temperature to set up the color of the light. Spotlights have now control on inner angles and can have different shapes (cone, box or pyramid). Colored cookies are supported.

HDRP allows the use of real-time area lights (no shadow or baking currently), like rectangle light.

Finally, the light follows physical inverse square attenuation and uses physical light Unit. The lighting and the control of the light are fully linear, there is no Built-in Unity ‘Gamma mode’ anymore. The Sun Light intensity is defined in term of lux at the ground level and point and spot are defined in Lumen.

On image based lighting side, reflection probes get a big upgrade in HDRP. It is now possible to use oriented bounding box or sphere shape, the proxy shape (area approximating the scene geometry) and influence shape (an area where pixels are affected) are separated, there is various influence fading option (per face, based on normal orientation…).

Material Rendering

HDRP has its own version of the Standard Shader called Lit Shader. The Lit Shader comes with a good amount of features and allows richer material than what is possible with Built-in Unity rendering. A double-sided option is available and connected to Global Illumination automatically and various mapping options are now possible like planar and tri-planar. Advanced effects like parallax occlusion mapping or tessellation are now available in one click!

But the strongest addition to material rendering is its lighting model.
HDRP uses the following BRDF: Isotropic multi scattering GGX for specular Layer and Disney Diffuse for diffuse Layer. The difference with Built-in Unity is the multi-scattering part.

Gold metallic ball going from Smooth (Left) to Rough (right):

Isotropic single scattering GGX (Similar to Built-in Unity)

Isotropic multi scattering GGX of HDRP means that rougher materials are not darker but more saturated.

The default parametrization is Metallic/Smoothness, but it is possible to switch to SpecularColor/Smoothness within the same shader.

HDRP allows us to enhance or replace this initial model. Various options are available to:

  • Replace isotropic GGX by anisotropic GGX
  • Add subsurface scattering to Disney Diffuse
  • Add transmission
  • Add iridescence effect
  • Add a clear coat GGX

This variation of the lighting model helps us achieve various complex looks.

Mushroom picture relying on transmission and subsurface scattering (courtesy of Laurent Harduin).

HDRP also allows a new set of options for transparent materials, like backface then front face rendering to help sorting, Depth post pass to help with depth of field effect on transparent and more.

Example of iridescence effect with double-sided transparent render back face then front face.

Base on the Lit shader, HDRP provides a Layered Lit shader allowing to mix various Lit shaders together. Read this full blog post to get more information on Layered Lit.

Another addition to HDRP is Decal support. Decals are supported on both opaque and transparent material (and are still in development) and correctly affect the sampling of Global Illumination (lightmap/light probe).

Example of a chalk drawing on a floor with Decal.

Debug

The most important feature added to HDRP is its debugging tool. Debugging is extremely important to understand data authoring and performance problems.

HDRP comes with a new customizable debug window that allows to control debug view mode and render pipeline settings. This debug window can be used both in the Unity Editor or in any Player. Yes, it is now possible to have all the debug functionality on any of the target devices like PlayStation 4.

Example of debug window in Unity Editor with normal property display.

The debug windows allow to display any material properties for both opaque and transparent materials, either with deferred or forward render path.

It allows lighting debug view: Diffuse lighting only, Specular lighting only. It also allows you to override properties for the whole scene like normal, albedo, smoothness. It can display intermediate render targets like motion vector, depth buffer. It can highlight properties like objects using lightmap or tessellation, having a NaN checker and many more.

Example of a debug windows in Player with diffuse lighting mode and albedo override.

One interesting mode is also a color picker mode to read the current on-screen value or HDR value before postprocessing is applied.

The debug window can easily be extended to support any debug tool that your game may request like AI or Animation debugging tool.

New behavior

HDRP comes with a new behavior that is different from Built-in Unity rendering pipeline.

Deferred and rendering path support the same set of features. Subsurface scattering, Screen space ambient occlusion, Decals work the same for both paths. There is no need to choose a specific rendering path for using a particular feature.

HDRP uses camera relative rendering. This means that there is a good rendering precision even far away from the origin of the world. This has an impact on all the shaders used with HDRP.

Your camera can control which lighting architecture is used (It is possible to mix deferred and forward renderer path in a scene) and which features are enabled for this rendering. It is possible to disable fog, shadow, post-processing etc.

To setup scene settings, there is a whole new system based on volume settings similar to what is available for post processing. The scene settings (Sky, Sunlight cascade shadow, Screen space shadow contact etc…) can now be set per volume and the parameters can be interpolated to have a smooth transition between volume.

There is also a new option available for Sky and Fog, like height based fog or fog tinted by the sky color. And the fog affects both opaque and transparent materials.

Lastly, HDRP uses a dedicated render target allocation system that avoids recurrent reallocation when resizing the screen. This avoids extra render target allocation when doing dynamic resolution for example.

Limitations

We are still working on HDRP, so several of its features are in progress, buggy or incomplete. It will be released as Preview with 2018.1 and it’s not ready for production.

One of the current important limitations is that HDRP isn’t compatible with Lit Particles authored with Unity’s particle system, only Unlit Particles are compatible.

Also, the built-in terrain system has various artifacts.

As for all SRP, anything previously rendered in the Overlay layer like lens flares on light isn’t supported. Grabpass doesn’t exist anymore.

Future development

Our team currently focuses on stabilization and platform support. But there are still shiny features to come like volumetric lighting.

Area lights will be improved based on the research of Unity Labs team.

Physically based camera is also the next step to get more coherent lighting and postprocessing.

We also have several prototypes of character rendering tools in the works.

Windup project with girl character rendering.

Conclusion

HDRP is coming with a fully new render pipeline for Unity that tries to push visual quality as far as possible for the current generation of games.

The downside is that there is quite a learning curve because there are significant differences from the current Built-In rendering pipeline.
All these features come with complexity. Unified and coherent lighting is extremely hard to achieve, having great debugging tools can be intrusive, relying on camera relative requires more thinking.. Writing custom shaders for HDRP is possible, but it now requires way more knowledge. But the benefit is worth it!

Join the Unity beta program to get early access to new features. You can also follow the development of HDRP on GitHub. We’re looking forward to talking to you about HDRP on the Graphics Experimental Previews section of the Unity Forums!

Example of stylized game environment with HDRP and complex materials.

 

64 replies on “The High Definition Render Pipeline: Focused on visual quality”

I have more doubts.
1. Could I create a project using HD-RP and after update to new unity version using new HD-RP?
2. I have tested alpha cutoff but it doesn’t work. I’m using Beta 2. Am I doing something wrong?

Hi, I have some doubts about that.
First of all, great work. I have tested and it looks amazing.
1. So, I noticed that terrain is not working yet using HD Render Pipeline. Do you know what beta version it will be working?
2. If selected HD-RP template when creating a project, could I disable later?
3. With no terrain working yet, what must I do to create map?
4. How could I create vegetation with cutout option? I have created a grass and plant that parts of texture must be hide/disappear.

Nice the light settings are kinda heavyweight! – but actually very useful to simulate indoor lighting products for the kind of pre-viz stuff I have looked at.
If I could simulate (more loosely) temperature and lumens in other lighting pipelines it would also be good.
Or perhaps a scalable pipeline for indoor vizualisation could be made

The last picture with the SSS looks absolutely bloody gorgeous, and the tree with the hole in it is incredible.
Could the artists share their experience making these?

That is all fine and dandy. Unity Tech finally realized, that a modern rendering pipeline is important to many devs, who do not work on mobile titles.
For me this comes a bit too late, for my current project. So I use another engine that starts with an “U”.
The biggest problem here is, this is far from being production-ready. And given UT’s track record, it will be for a long time.
I really hope UT get’s this right. But I fear this becomes another Umbra-, Enlighten-, GUI-, or Terrain-Desaster.

So instead of being an adult, continuing with your engine of choice which is obviously Unreal, you decide to come to the blog purely to rant? haha.

Not really Robert. Not if you had read my post properly. I actually would see this becoming a success. But I see this was this with a lot sceptism, based on my over 8 years of experience with Unity. And I still use Unity for my every day work as an freelance artist. For my own project though, Unity’s rendering and performance capabilities are simply not sufficient enough. And I can not count on some promises. Especially if they come from UT.

By the way. No need to attack me personally, because you might disagree with me. Your post isn’t what I would call mature either.

It can be interesting if somebody is capable of integrating the Unreal rendering (and paying the Unreal royalties for) into the feuter Unity Scriptable Render Pipeline. You are sceptical about Unreal 20yr rendering experience will bit this incoming 2018~19 Unity High Definition Render Pipeline? Well, that is compressible. But I like how Unity renders and Unity progress in the only last 8Yr!

Hello. Did i understand correctly that the High Definition Render Pipeline have much better performance on modern consoles(Amd GCN architecture) in comparison with the Unity’s default render?

Hello, what’s lumen is it?
Do you know that sun intensity IRL actually is 3,63*10^28?
So, how you will approximate that value?

Wow! HDRP is very gorgeous! Of course I can’t use this for production games, but definitely use for realtime movies. Can’t wait to try it now.

Here are my observations, after splitting the image into two: the water is different, SSAO looks better and buildings in the background are lit better.

So is this a tool for the big studios only? Or say sometime in 2019 when it matures will small Indies and/or freelancers be able achieve AAA visuals out of the box? Or does it require full-time technical artists to achieve the results shown in the pics? At the very least will you release a cookbook for HD RP for us mere mortals?

Congratulations for graphics team vision and achievements – these still images look great.

Problems.
1. It is not ready – will not be available for production for some time after that and buggy for some time after that, so in the best case, half of 2018 is gone.
2. Lightweight shadows suck – they are awfully awful bi-linear – the nicer shadows that HD brings will not be available for production as seen above, this leaves as for some time without nice shadows.
3. No proper shader documentation or examples for those who try the beta to adapt their shaders – new semantics and paradigms in shaders without any documentation – plus beta per se is buggy, it crashed several times in 3 hours.
4. No video demonstration – a subtle problem in current rendering implementation is that when there are shiny reflections in the scene, they look juggy and unstable from frame to frame – they kinda swim – no matter what anti-aliasing – temporal or not you throw in, as seen in every unity Adam demo. Is this problem fixed ?
5. All these features seem pretty heavy – is it possible to get nice shadows in Lightweight pleeeeeeease ???? Jokes aside, I believe that if the shadows in Lightweight do not see some improvement, having to use the HD (when it is ready) and paying the extra resources it (logically) demands just to have nice shadows seems as an overkill.
7. I hear about the SRP since I was using Unity 5 – which is good, but so far I have seen nothing ready for production. Last fall I watched with great interest Joachim Ante presentation regarding SRP and unity programming architectural restructuring, which was essentially what Mike Acton used to say about data oriented design years ago and now Mike Acton works for Unity – which is great. Sebastien Lagarde is a legend in computer graphics – so many highly-skilled people work for Unity now, which is super. But SRP is not here yet, after all this time and after all this effort. I do not like this delay.
7. The way rendering pipeline changes was extremely annoying so far – many changes in core shader code without any warning – scarce examples and documentation – it is gonna be a hell from now on because lightweight and HD pipelines are not yet finalized – documented, so we will undergo a long period of intense changes. I sincerely believe that some part of Unity growth was due to the “ease” you could manipulate the shaders – it was not a piece of cake but many people managed to do it with nice results, e.g. Monument Valley, Limbo, e.t.c. If as you say you ‘re gonna make it more difficult to code shaders (hopefully by offering AAA quality and speed in exchange), you should take the responsibility to produce proper documentation and examples from day -1.

Kind regards.

If you think things can magically be done with a push of a button, the world will be either totally destroyed or a better place to live. Ok jokes aside. Yeah it’s not production ready because hey “still relativelly new”. Sebastien clearly said that is not recommended for projects already in production, only projects that starts now. It will/should be ready for production by the end of the year.

In mr Lagarde’s words “I will not recommend HD for anything that is already started. I “may” recommend it for a new project that will start its pre-production today. And will ship mid-next year or later”. – it is written a few posts below.
As I understand it, you either opt for lightweight pipeline (the one with awful shadows), or the existing rendering pipeline, which will soon become legacy. What is annoying with the second option is that the more people are using legacy, the slower the transition will be towards the new pipeline.
I am very reserved in criticizing Unity – check my 1475 posts from the past 10 years – and I find very disappointing the fact that the above concerns are not addressed.

Really cool stuff guys! Since i’m creating a more dynamic game with quite customized graphcs im curious if unity is still going to leave a door open for really easily customizing its deferred renderer. I’m using the gbuffers unitys creating right now and doing all sorts of stuff with them. Is this not recommended. When are you going to remove the Deferred rendering pipeline. I got roped into using unityscript when i first started and it was subsequently destroyed. Do you think abadoning the deferred renderer in unity currently is recommended?

Is there an approximate release window for 2018.1? I’m looking forward to playing with these new features and getting used to the changes but should I expect it in the next few weeks for 2/3/4 + months?

Ooh, come on !!! Well, when already! I’m so tired of waiting! Tried SRP from the first days as it was let into people, Job System and ECS, this is the only thing I expect no less than the SRP.

I am a bit worried about this pipeline and the ability to scale down its features to run on lower-end hardware. Is it being designed particularly for computers with powerful graphics cards, with little or no support for less capable computers? Could I use the HDRP, but turn off some of the more expensive features (without programming) to get it run well on a low-range graphics card, or heck, current-gen integrated graphics?

I’d be very disappointed if Unity is only optimising this for a small subset of hardware, because the LWRP is missing a lot of features from the rendering we currently have, let alone some of the new features of the HDRP.

It’s interesting to see the new pipeline. It seems to solve problems for me like rendering fog with transparent objects. I have a game in development and I’m wondering if the HD RP will be available for production before the end of 2018. It’s not necessarily a good idea to switch a technology during the development based on availability projection. I’m aware it’s still experimental, but do you have an idea when could be the production release?

I’m also wondering if that will be compatible with technologies like Amplify Shader Editor.

The current pipeline does not allow to create procedural games with graphics as beautiful as the baked scenes. I want to suggest that you think about creating procedural games with the new pipeline. For example, being able to create light probes at runtime to take advantage of them in a better way than always being restricted to the baked scenes to achieve realism.

Thanks for sharing this. Will there be another way to create lens flares on the sun? It’s a big part of BrightRidge’s look.

“VR support is planned, but not implemented in the currently available preview.”

/slams door
/runs from room crying

“VR support is planned, but not implemented in the currently available preview” – is it going to be availible in the 2018.1 release?

This is really exciting stuff. Great to see Unity’s 2018 direction really beefing up the engine in massive ways across the board. Seeing the words, “Unified and coherent lighting is extremely hard to achieve” coming from someone as skilled as Sebastian scares the living daylights out of me though! My only plea is for lots of documentation, examples and learning resources :-)

Great work guys. I’m really happy about your mindset of making this big “breaking change” that isn’t necessarily the most user-friendly thing ever. Unity has been in dire need of something more serious and professional for a long time, and the HDRP (and ECS and Job System) is exactly that!

Surely this won’t make everyone happy but I 100% encourage you to continue in that direction

Comments are closed.