The High Definition Render Pipeline (HDRP) targets high-end PCs, high-end Mac and high-end consoles (Xbox One and PlayStation 4) for creating high-definition and photorealistic visuals. With package version 7.2.0 in 2019.3.2f1, HDRP is verified. This post in this forum is a companion to the blog post https://blogs.unity3d.com/2020/02/24/hdrp-out-of-preview-in-2019-3/ Please read before going further. Thanks Finding your way in HDRP Longtime users of Unity should understand that HDRP isn’t like the built-in pipeline. It requires a new learning curve for both artists and programmers. New paradigms have been introduced, new artist tools, new settings system, new volume system, new shaders, etc. Migrating from an existing built-in Unity project isn’t a simple task and may require rewriting custom scripts, rewriting custom shaders, reworking the lighting, or setting up your scenes from scratch. One major change is that this pipeline is a package; you need to use Package Manager to upgrade to the latest version. We recommend that you always use the latest available version compatible with your Unity binary as it contains more bug fixes. You can check the version in the Package Manager window. To get started with HDRP, check out this documentation. It includes several helper guides, including the Getting Started manual and how to upgrade from the Built-in pipeline or from a previous HDRP version. You can also refer to presentations by the Unity team at events such as Unite or GDC. In particular, we recently presented about Getting Started with HDRP and VR support in HDRP. Alternatively, you can go deep and learn more about the architecture of HDRP (The Road toward Unified Rendering with Unity’s High Definition Render Pipeline) or how we implement some effects (Efficient Screen-Space Subsurface Scattering Using Burley’s Normalized Diffusion in Real-Time). To help you on your journey and check that you have the right setup for your projects (regular, VR, ray tracing), we provide an HDRP Wizard. The Wizard validates your settings and can fix them if they are incorrect. It also lets you convert your built-in project and provides an HDRP Scene Prefab to create new scenes. The Render Pipeline Wizard How do I enable a feature? The Settings system lets you easily customize HDRP to your production needs: HDRenderPipelineAsset helps you configure your entire project, the Frame Settings lets you fine-tune your scene’s Camera, and the Volume system gives you finer-grained control over an area in your scene. Each project is controlled by an HDRenderPipelineAsset assigned in the Graphics Window. With these settings, you can enable a feature project-wide. Additionally, you can disable a feature on a Camera by changing the settings in its Frame Settings. With this level of control over settings, you can remove unnecessary features in specific cases: for example, a reflection probe Camera can ignore transparent mesh renderers or use a single cascade shadow map. HDRP uses Volumes to support localized settings. Volumes are GameObjects added to your scene that control rendering features such as post-processing, sky, or fog when the Camera enters its bounds. You can also make the volume global. For example, to have Screen Space Reflection (SSR) in a scene, you need to enable it in the project’s HDRenderPipelineAsset; ensure your camera’s Frame Settings support it, and also enable the setting for the Volume in which your Camera lies. Like any GameObjects, Volumes can be nested. They are very useful for representing different moods in the same scene or controlling differences between interiors and exteriors. For example, you can fake time of day by changing the lighting conditions of your scene’s Volumes. However, in this particular example, only fixed settings are authorized when baking GI. We want to make it easy for you to get started with this package, so the default settings contain Frame Settings configurations for a Camera, a Reflection Probe, and a Realtime Reflection Camera. You can override the default settings with Custom Frame Settings on the GameObjects. Most common setups include default Volume; you can override the default by placing global volume in a scene or providing your own default volume profile. You can find the default settings in the HDRP Default Settings tab of the Project Settings. The HDRP default settings tab A quick way to visualize and change the state of the active Frame Settings is the new Debug menu. This is useful for debugging and optimization, as the state change isn’t serialized. You can use this menu in conjunction with a real-time profiler to see the performance impact of a feature. You can also check if a feature is enabled for a given camera. Debug menu with current state information How do I adapt configurations for different platforms? Because each platform has different abilities or can require several configurations (for example, low, medium, and high for PC), we give you the option to override the HDRenderPipelineAsset per configuration via Quality Settings. This allows you to enable/disable features and define memory size and texture size per configuration. Additionally, several properties have Scalability Settings. Those properties can have different values depending on the configuration. For example, we can define various configurations – low, medium, or high for PC, PS4 Pro, PS4 Base, Xbox One, Xbox One X. (A configuration can target one or more platforms; i.e., it is possible to create a medium configuration for PC, PS4 Base and Xbox One.) When a platform has multiple configurations, the user is in control and must write C# script to set up the desired configuration at runtime. Quality settings with various configuration You can decide that PC High, PS4 Pro and Xbox One X use high-quality Subsurface Scattering and Color Buffer format is fp16, while all other platforms use regular Subsurface Scattering quality with Color Buffer format of 111110f. You can define texture cube array resolution of 256x256x6 on PC and define it as 128x128x6 on console. Left, HDRenderPipelineAsset for XBoxOne X configuration; right, HDRenderPipelineAsset for PC Medium configuration For scalability settings, you can override the shadow resolution per configuration. Artists can define settings per light to use either custom resolution or a resolution provided by the HDRenderPipelineAsset (in QualitySettings – Low, Medium, High, Ultra). Artists can decide to use High/Ultra levels for in-game cinematic lights and Low/Medium levels for gameplay lights. Then, for each configuration, you can use HDRenderPipelineAsset to define the shadow resolution those levels map to. This light uses Medium shadow resolution, which corresponds to 512 in the HDRenderPipelineAsset for the active platform. Such settings are available for several rendering features such as shadows, lighting effects (SSR, SSAO, etc.), and post-processing. Materials created via Shader Graph can also use a Material Quality node. (You’ll need to add a predefined Keyword, Material Quality, in the Shader Graph blackboard that you can then drag and drop into the working environment). This allows artists to set different shader complexity – Low, Medium and High. Shader graph with a Material Quality built-in Keyword setup. The red, green or blue value depends on the configuration in HDRenderPipelineAsset and Frame Settings. You can select the Material Quality level to use for a given configuration on the HDRenderPipelineAsset. Additionally, you can use this node to define Material Quality levels according to the quality you want in different contexts inside the project: High quality and complexity during cinematic, Medium quality for game view usage, and Low quality for planar reflections. This is driven by the Frame Settings on the camera: Artists still need to set the variants required for a given configuration in the HDRenderPipelineAsset. If a configuration is missing, the closest variant will be used. Using several quality levels increases the build time. It is vital to have the right settings for your project as it can influence your visuals, your runtime performance, and build time. The most common bottleneck is the high number of shader variants in your project. In order to reduce the number of variants included in your build, we recommend that you enable only the features you need for your build (i.e., remove shadow mask if your project doesn’t use it), support a single shader mode (e.g., use only Deferred), and remove shaders and materials used for debugging purposes. For platforms that can support several tiers, such as PC, we are uniting all the shader variants required and building them together. So for example, when PC Low, PC Medium and PC High configurations are set to use Low, Medium and High Material Quality respectively, all the shader variants for all the Material Quality levels are compiled for a PC Build. HDRP uses a separate package, HDRP Config, to control the availability of some of its features at runtime. For example, you can use it to disable usage of area lights, enable camera-relative rendering, or control the shadow filtering mode for deferred rendering. This separate package can be easily merged. It helps HDRP to keep the number of shader variants under control. You’ll need to write C# and shader code (just don’t introduce new shader variants, as that defeats the point of it). To control the features available for each platform, users must rely on platform-specific macros defined by Unity. How can I get more control? By default, HDRP uses the most common settings for several GameObjects. Once you are familiar with HDRP and want to do more complex things, you can experiment with the Advanced Settings like those provided on Lights or some Volumes. Shadows settings on a Light have advanced settings that allow, for example, shadow tint Advanced settings are toggled via the wheel icon at the top right of the asset’s component. Performance control Performance is crucial for any real-time or interactive application. Many HDRP features may affect performance when they are not controlled correctly. Each feature has its own cost (usually indicated in the documentation). However, HDRP comes with some features to help you control your performance. For example, built-in dynamic resolution can help reduce GPU cost, particles can be rendered at half-resolution, or shadow maps can be updated on demand. The Frame Settings allow fine control of which effects or features are enabled. Light layering, for example, is a feature that requires extra performance (extra GBuffer in deferred path). It can be used to achieve a particular look during in-game cinematics and then disabled during gameplay to save on cost. The combination of volume system, layer mask, and camera settings of planar reflection, lets you configure directional light shadows to use only a single cascade inside the planar reflection, while the main scene renders with four cascades. Those are just a few examples. Profiling regularly is key to optimizing performance. To get the most performance out of your project, it is important to check the Lit Shader Mode. Deferred rendering in HDRP is faster in most scenarios, such as a scene with various Materials and multiple local Lights. Some scenarios, like those with a single Directional Light, can be faster in Forward rendering mode. If performance is not so important for your project, use Forward rendering mode for better quality rendering. For VR projects, we recommend Forward rendering to benefit from the extra quality that multisampling anti-aliasing (MSAA) provides. Even if both paths support the same features, the feature quality may differ. Forward rendering has better material quality than Deferred rendering because it doesn’t suffer from GBuffer compression. It also has better shadow bias and better ambient occlusion handling. Differences are highlighted in the documentation.