Search Unity

Official SRP v12 beta is available now

Discussion in 'General Graphics' started by ali_mohebali, Jul 13, 2021.

  1. ali_mohebali

    ali_mohebali

    Unity Technologies

    Joined:
    Apr 8, 2020
    Posts:
    119
    Hi everyone,

    As part of the Unity 2021.2 beta release, the v12 Scriptable Render Pipeline (SRP) packages are available now. This release is a continuation of our effort from 21.1 and is based on our 2021 goals shaped around Unity’s product commitments, announced in “The road to 2021” blogpost. Next to making further improvements in the quality, stability, and performance of SRPs, we have also added many new features to both URP and HDRP. For URP, the main focus has been around reducing the feature parity gap with the Built-in render pipeline. For HDRP, we have focused on performance improvements and artists’ tooling.

    Read to learn about some important updates and features in this beta release.

    Universal Render Pipeline (URP)

    Deferred Renderer


    Decals


    Light Cookies


    Reflection Probe Blending and Box Projection


    2D Renderer improvements


    SwapBuffers

    In this release, Universal Renderer manages and operates on multiple camera color buffers in the backend. If you need to write effects that read from and write to the camera color buffer, you can use the new ScriptableRenderPass.Blit method in your Scriptable Renderer Feature. Using this new method, you can apply effects to the color buffer without managing and handling multiple camera color buffers yourself.

    Built-in Converter Improvements


    Visual Debugging Improvements
    Improvements in this release bring Universal Rendering Pipeline’s (URP) Scene Debug View Modes closer to parity with the options available in Built-in Renderer. Similar to HDRP Render Pipeline Debug Window, URP Render Pipeline Debug Window is also included as a new debugging workflow for URP in this release.

    Package Samples
    This release includes the following samples: Camera Stacking - Mixed FOV, Camera Stacking - Split Screen, Renderer Features - Occluded Geometry, Renderer Features - Screen Space Ambient Occlusion(SSAO), Renderer Features - Glitch Effect.

    Screen Space Ambient Occlusion(SSAO) Improvements
    This release brings several improvements to SSAO: Support for the deferred renderer, support for normal maps in-depth/normal buffer, support for unlit surfaces, support for particles, performance improvements on mobile platforms.

    Motion Vectors
    Light Layers
    Depth Pre-pass Support
    Volume System Update Frequency

    High Definition Render Pipeline (HDRP)

    AMD FidelityFX Super Resolution Support


    Nvidia DLSS support

    (images from the PC game Lego Builder’s journey)

    Volumetric clouds and cloud layers


    Terrain details support


    Local volumetric fog (ex-density volume) improvements


    Decals improvements (UX, normal blending)
    New Pathtracing features (stack lit, fabric & AxF shader support, Recorder integration, volumetric scattering, increased max samples

    New Hair & Fur Shader for strand based rendering
    Improved dynamic resolution support
    RendererList API to improve CPU and GPU performance

    AreaLight support for fabric and hair
    Physical camera improvements (added focus distance, more animatable parameters)
    Recorder improvements (accumulation motion blur)

    SRP General

    Enlighten Realtime GI Support: Learn more in the forum update.



    Lens Flare URP and HDRP


    SpeedTree 8 Support: This includes support for animated vegetation using the SpeedTree wind system, created with Shader Graph.

    Light Anchor
    This is a dedicated tool to manipulate lights around a pivot point instead of in world space for making lighting for cinematics easier and more efficient. Various presets allow lighting artists to quickly place lights around a character or any center of interest.

    Crosspipeline Settings Workflow Improvements
    A series of UI/UX improvements intended to improve workflows and consistency between the SRP render pipelines. For this iteration, the focus has been on aligning the light and camera components between URP and HDRP.

    DirectX12 general performance and stability improvements

    Shader Graph

    Custom Interpolators


    Preview Mode Control



    Built-In Renderer Support
    We have added a Target for the Built-in Render Pipeline, with Lit and Unlit Subtargets. This feature makes it possible for one Shader Graph to support all render pipelines simultaneously (some nodes are only available in specific render pipelines). The addition of Built-in support also provides a better basis to help our users migrate to SRPs in the future.

    URP Uber Shader
    You can now use Lit and Unlit Shader Graph shaders as uber shaders in your project. The new option "Allow Material Override" will let you override your Shader Graph material settings per Material instance, and as a result, allows you to create material variants based on a single Shader Graph asset.

    Custom 2D Lighting
    2D Light textures produced by the 2D Lights are now accessible as a node in Shader Graph. Some potential use cases are emissive light effects or animated caustics.

    Shader keyword limits effectively removed
    We have added a more efficient API to work with keywords and clearly separated global and local shader keywords in our shader system. Learn more in the forum discussion.

    Blackboard Categories
    Vertex ID, Instance ID, and EyeID Nodes
    URP Surface Options
    HDRP Tessellation support

    Visual Effects Graph

    URP high-end mobile support (compute capable devices only)


    URP 2D renderer support (compute capable devices only)


    In-editor Signed-distance field baker


    HDRP ShaderGraph integration in VFXGraph


    URP lit particles and various features and fixes (compute capable devices only)
    Bounds and capacity helpers
    Graphics/compute buffer support


    Changelog details
    If you are interested in the granular details of what has been fixed or changed, you can always refer to the latest changelogs:
    URP What’s New, Changelog
    HDRP What’s New, Changelog
    Shader Graph Changelog
    VFX Graph What’s New. Changelog

    Getting started with Unity 2021.2 beta
    A friendly reminder that before you take the beta for a spin, we encourage you to back up your project. This advice always applies when you are working with our beta and Pre-Release packages. Remember, the beta is not intended to be used for production – it’s for you to evaluate new features so that we can integrate your feedback. For projects in production, we recommend that you use verified packages and our most recent full release, Unity 2020.3.

    As always, we value your feedback and would be happy to hear from you. Please use this thread if you have any comments or questions about this release. Alternatively, you can always use our Public roadmap page to provide feedback and make a new feature request.

    Cheers!
    The Unity Graphics team

    EDIT: 19/09/21 - Added AMD FidelityFX Super Resolution Support
     
    Last edited: Jul 19, 2021
    PolyCrusher, cxode, zalogic and 15 others like this.
  2. BattleAngelAlita

    BattleAngelAlita

    Joined:
    Nov 20, 2016
    Posts:
    400
    I hope this update contain new SRP-API features, would be great if you told us about it?
     
    LooperVFX likes this.
  3. valarnur

    valarnur

    Joined:
    Apr 7, 2019
    Posts:
    440
    I have a question regarding Unity build and HDRP 12. If I have 2021.2b3 from last week and one specific HDRP fix is landed yesterday in the github. When I reinstall HDRP 12 today, do I get this new fix?
     
  4. PutridEx

    PutridEx

    Joined:
    Feb 3, 2021
    Posts:
    1,136
    HDRP: Is the RendererList enabled by default and is there a toggle?

    edit: found it, Graphics > Global Setting > bottom (dynamic render pass culling)
     
    Last edited: Jul 14, 2021
    LooperVFX likes this.
  5. SamOld

    SamOld

    Joined:
    Aug 17, 2018
    Posts:
    333
    Is there any progress towards surface shader support; a stable, unified, and documented shader library API; and better extensibility to allow the ecosystem to be rescued from the problem of modifications requiring pipeline source edits which can't be shipped as plugins?
     
    Rich_A and goncalo-vasconcelos like this.
  6. rz_0lento

    rz_0lento

    Joined:
    Oct 8, 2013
    Posts:
    2,361
    Could you guys expand more on this bit from the blog post:
    I see some work being done on this but there's really no clear announcements or even roadmap for this. Instead what I saw even on SRP 12 new features was that most of the new things actually drifted URP and HDRP even further apart again with both getting their own implementations without counterparts on the other RP (beyond few things like lens flares etc).
     
    Last edited: Jul 16, 2021
    SamOld and Ruchir like this.
  7. valarnur

    valarnur

    Joined:
    Apr 7, 2019
    Posts:
    440
    What will be future roadmap for HDRP v13, v14 ?
     
  8. ali_mohebali

    ali_mohebali

    Unity Technologies

    Joined:
    Apr 8, 2020
    Posts:
    119
    The main highlights are:
    • New C# draw API for all pipelines. Cleaner and more consistent API for drawing objects from C#. This PR provides a set of Graphics.RenderX() functions to eventually replace a bunch of Graphics.DrawX() functions as users migrate to the new API (the old draw API will still be functional). Instead of passing various draw parameters as function arguments and having many function overloads, the parameters shared across RenderX() functions are passed as RenderParams struct. RenderMeshInstanced() is also more flexible now to allow custom per-instance data and custom layout. e.g., sort objects with custom data are accessible without the need to maintain parallel data structures. It also supports per-instance previousObjectToWorld for motion vector rendering and renderingLayerMask now.

    • URP SwapBuffers API. In this release, Universal Renderer manages and operates on multiple camera color buffers in the backend. If you need to write effects that read from and write to the camera color buffer, you can use the new ScriptableRenderPass.Blit method in your Scriptable Renderer Feature. Using this new method, you can apply effects to the color buffer without managing and handling multiple camera color buffers yourself.

    • Render pass Store actions control API in URP. You can use this API to discard contents of MSAA render targets, for example. You can do this in two ways.
      1) Configuring the pipeline asset on how aggressive URP controls store actions for internal passes. We have introduced a new setting in the pipeline asset and a new public API that enables control at runtime.
      2) Configuring the custom ScriptableRenderPass if a specific target doesn't need to be stored.
      The PR for API docs on this one hasn’t landed yet. But you can look at the API below if you are interested.
      ScriptableRenderPass.ConfigureColorStoreAction
      ScriptableRenderPass.ConfigureDepthStoreAction
      https://github.com/Unity-Technologi...time/Passes/ScriptableRenderPass.cs#L282-L296

    • URP API to control depth priming (z pre-pass) has been introduced, which can be controlled by runtime API with this new public API

    • HDRP RenderList API mentioned above
     
    NotaNaN, Bosozuki and valarnur like this.
  9. ali_mohebali

    ali_mohebali

    Unity Technologies

    Joined:
    Apr 8, 2020
    Posts:
    119
    Since SRP moved to become part of Unity core (during 21.1 release), when something lands on our GitHub, it is not an official release yet. The changes will be included as part of the next editor release after SRP to core PR lands.
     
    valarnur likes this.
  10. ali_mohebali

    ali_mohebali

    Unity Technologies

    Joined:
    Apr 8, 2020
    Posts:
    119
    Yes, there is progress but it won't be part of the 21.x release cycle. As I mentioned in this forum thread we will share our plans for feedback after the 21.2 release. In the meantime, you can send your feedback here and here on our public roadmap page if you want to make sure your special use cases are considered.

    I have a question however and I would like to get your feedback on it. What is more high priority to you; shader library API documentation or Surface Shaders capability?
     
    cxode likes this.
  11. ali_mohebali

    ali_mohebali

    Unity Technologies

    Joined:
    Apr 8, 2020
    Posts:
    119
    Our goal in 2021 has been to make sure users of SRPs at the current state of the product are successful in their projects. If you are using URP or HDRP, we want to make sure the known gaps in quality, stability, and performance of existing features and workflows in using either URP or HDRP are addressed first. Secondary to that, we also planned to add new features prioritized, taking the feedback into account. Based on feedback we have received, for URP, the theme has been around getting closer to feature parity with the Built-in pipeline. For HDRP, it has been around improving artist workflow and features needed for high fidelity visuals and high-end platforms.

    Although the demand is a lot lower, there are also cross-platform projects that have use cases for using both URP and HDRP in a single project to deliver the right level of visual fidelity from mobile devices all the way to high-end platforms such as new consoles. In 2021, we still do not officially support cross pipeline workflows (although some projects use the concept). However, we have started making improvements to allow for the co-existence of both URP and HDRP pipelines in the same Unity project. We have also looked at the existing UX and workflows and have started improving where they make sense. In some cases, for new features or workflows, we tried to deliver them across both pipelines. All these efforts have been minimal in 2021. We will continue exploring and planning for cross pipeline workflows in 2022. We can't share the concrete details for SRPs in 2022 as we are still in the 2021 shipping phase while planning for 2022. But we will expose them when Unity announces 22 release cycle plans, and we will make sure our public roadmaps are updated accordingly to reflect the details, including the crosspipeline items. In the meantime, I encourage you to give us feedback through our public roadmap page to make sure your priorities and feature/workflow request are taken into account (we actively triage, organize and discuss the feedback).
     
    cxode, NotaNaN, Bosozuki and 3 others like this.
  12. rz_0lento

    rz_0lento

    Joined:
    Oct 8, 2013
    Posts:
    2,361
    I have one specific question/request on this particular topic. Is there any chance we'll in future get shader stripping that wouldn't rely on main SRP asset assigned on Graphics setting and actually take into account all SRP assets on Quality settings?

    I know current shader preprocessors do look through the quality tiers SRP assets but both HDRP and URP preprocessors have early out in case they are not also the main graphics SRP asset. This will lead into either of the following scenarios if you try to build a project with both URP and HDRP setup on the same build:
    - you either all of the other (URP or HDRP) shader variants stripped from the build, not just then unused ones.
    - you get only one RP shader stripped properly and others all shader variants get compiled. This takes 10h to build on the stock workbench scene on my 12 core ryzen.

    I did notice built-in SG stripping getting merged to Graphics repo recently and it also suffers from this same thing (altho that is harder to solve without actually coming up with some BiRP asset type.
     
    Camarent and valarnur like this.
  13. SamOld

    SamOld

    Joined:
    Aug 17, 2018
    Posts:
    333
    Surface shaders will be important for more people more often. I consider them a core requirement of a usable system. A good surface shader solution should be able to achieve things like pipeline independence, so that assets can be authored and shipped in a pipeline independent way and without breaking in future releases.

    An abstracted pipeline independent public library interface is also important for the asset ecosystem. The key part here is having a good library API that's stable. Documentation is important but not the highest priority thing because we can go spelunking through the code, although we shouldn't have to.

    The URP/HDRP split has created a nasty fragmentation, and a lot of it is unnecessary. Unification of extensibility points between them is imperative. This goes for the C# API too. Many asset developers simply cannot be bothered dealing with trying to support all three because of the fragmentation and instability.

    Editing the pipeline source should never be a requirement for extensibility, because it becomes impossible to properly isolate and ship that edit as an independent asset. Publicly exposed pipeline independent extension points that provide high performance access to internal data like CPU and GPU light buffers, shadow maps, mesh lists etc are a must for being able to implement non trivial extensions.

    I should clarify that I've not used SRP much. I've used it just enough to feel very confident in my choice to stick with the Built In Render Pipeline. SRP is not ready - although BIRP seems abandoned.

    @jbooth has already solved many of these problems for you with BetterShaders, although that can never be considered an ecosystem fix until it's official. I would strongly urge you to acquire BetterShaders and his talents ASAP. Please don't take this personally, but looking at the quality of the design and implementation of existing features like the SRP extensibility APIs and ShaderGraph, I have very little faith that Unity's own solution will ever reach the quality level that BetterShaders is already at - and it will probably take a year before the Unity version is even released. You can solve most of this today by sending Jason an email.
     
    hatless, bac9-flcl, cxode and 5 others like this.
  14. supernamey923834

    supernamey923834

    Joined:
    Jul 27, 2017
    Posts:
    10
    ONE RENDER PIPELINE.
    Just legacy LTS whatever you call it all of 2020 and start on ONE render pipeline new version of UnityX. You saying we want to give artists the features means nothing, artists can be coders and when they are they understand why there are limitations and optimizations. So you work with the engine you have, but now you've made what 4 engines!?
    OLD but useable Builtin, SRP, URP,HDRP , wtf... So you tell us we have to communicate to the "artist" they can have feature a but not b cause engine a,b,c,d .... Hell the dev even has to learn the differences of the other 3, which takes a lot of time and effort cause your docs are sooo very lack luster to add to it all.

    On top of that the asset store is a mess now, so many plugins are gone cause of the fracture and dev exhaustion, a lot of those being for the Old Builtin, and you you have to check if the plugin works with your projects version or forget you cant use it. Lets not forget VR WAS a thing, but since the fracture a bunch dont work with VR cause a dev only has so much time and energy to devote to the myriad of engines AND devices
     
  15. supernamey923834

    supernamey923834

    Joined:
    Jul 27, 2017
    Posts:
    10
    Why is that even a question!? You have so very much money/funding thus you can hire enough staff to do both.
     
  16. PerunCreative_JVasica

    PerunCreative_JVasica

    Joined:
    Aug 28, 2020
    Posts:
    47
    @ali_mohebali

    Hi,

    quick question. We are evaluating API for our next game which is going to use HDRP. We are choosing between Vulkan and DirectX12, but we lack some information about future of those APIs in Unity. The public HDRP pipeline is at least mentioning taking D3D12 out of preview (performance improvements etc.) However no information about the state of Vulkan on high end desktops. Could you please give us more information about the state of those APIs and their future improvements in SRP 12+?

    Thanks
     
  17. rz_0lento

    rz_0lento

    Joined:
    Oct 8, 2013
    Posts:
    2,361
    @PerunCreative_JVasica is there some specific reason for going with DX12 or Vulkan? Today even with the latest 2021.2 perf improvements to the DX12, it's still tad slower than the DX11 version of HDRP. Vulkan is even slower than DX12 in my past testing.

    IMHO you should always target DX11 for Windows with current HDRP unless you need things like raytracing. But even then you can for example run the game in DX12 when user enables raytracing and let the rest have faster running game on DX11. Of course you should do your own benchmarking with the content you aim to ship.

    Also 2021.2 cycle/features are now locked already afaik, some minor improvements could still squeeze in but I wouldn't expect radical changes to it anymore, Unity has already branched the new development to 2022.1.
     
  18. PerunCreative_JVasica

    PerunCreative_JVasica

    Joined:
    Aug 28, 2020
    Posts:
    47
    Yes, DX12 and Vulkan are slower then DX11 in Unity, but this is due to the current implementation rather then due to the API. Based on the information from Unity this is ongoing process and it will be addressed in the future, but I would like to get more intel on this, e.g. whether DX12 has higher priority then Vulkan, when can we expect DX12 out of preview etc.. Our game is aiming to be released in 2023 and we are aiming for the high end PC. We will be using raytracing as well as other features. The reason for the usage of the newer APIs is mainly due to the upcoming features. We are actively working with AMD and Nvidia and there is a big push from these manufactures to switch to newer APIs. Lots of new features won't be DX11 compatible.

    The question is meant for srp 12 and forward, so this includes 13, 14...
     
  19. Neto_Kokku

    Neto_Kokku

    Joined:
    Feb 15, 2018
    Posts:
    1,751
    Changing APIs in Unity is just a couple of clicks (and waiting for everything to reimport), can be changed at any time, and you can build a game to support multiple APIs, so it's not something you need to "commit" your project to.

    But AFAIK Unity sonly supports ray tracing on DX12 for now. I'm not even sure it works on PS5 and Xbox Series yet.
     
  20. PutridEx

    PutridEx

    Joined:
    Feb 3, 2021
    Posts:
    1,136
    I believe a pull was merged in SRP github that adds raytracing to next-gen console a while ago. Probably will be in 2021.2
     
    FernandoMK likes this.
  21. jamess_unity

    jamess_unity

    Unity Technologies

    Joined:
    Jun 23, 2019
    Posts:
    26
    For up to date information on Raytracing support on next-gen consoles, if you are an approved console developer, there is information in the sticky threads in the relevant console specific forums.
     
    Matjio likes this.
  22. Matjio

    Matjio

    Unity Technologies

    Joined:
    Dec 1, 2014
    Posts:
    108
    Hi,

    Indeed there is no work planned at the moment to support raytracing on Vulkan. All efforts on the platform side are focused on DX12 and consoles support. So definitely I will recommend DX12 in your case @Perun.

    Performance and stability should be a lot improved in 21.2 according to our internal benchmarks (please test on the latest Betas as some improvements might have landed very recently). Overall we have seen performance gain whatever graphics API was used, and addressed some major performance issues which were causing, in some cases, DX12 to get worst performance the higher resolution was. DX12 is still slightly behind DX11 in terms of performance, but now, the higher the resolution, the smaller the delta is according to our tests. Vulkan is also always slightly a bit slower but in the same ball park.

    Note that for URP, the same conclusions applyies.

    It is worth noting that the first HDRP game with real-time raytracing as shipped in June: Lego Builder's Journey. A good first step towards production readiness! :)

    With these improvements, NVidia DLSS, AMD FSR, and our own custom temporal upscaler all integrated in 21.2, and a burstification of the decals on the CPU, you should get various weapons to improve performance on all platforms supported by HDRP.

    We will continue to focus our efforts on improving performance and quality on DX12 in the 22 cycle until we are confident to get it out of experimental.

    We are very interested to get your feedback, get issues reported, and even performance benchmarks on your projects if you are willing to share with us (on this subject, note that DX12 performance benchmarks must be done in Player as they vary even more than on DX11 between Editor and Player - you can find a great example of benchmarking in our SpaceShip demo project).

    upload_2021-10-4_12-39-5.jpeg
     

    Attached Files:

    cxode, FernandoMK, NotaNaN and 2 others like this.