Search Unity

  1. Are you interested in providing feedback directly to Unity teams? Sign up to become a member of Unity Pulse, our new product feedback and research community.
    Dismiss Notice

Unity 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:
    65
    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
    cxode, floky, polemical and 14 others like this.
  2. BattleAngelAlita

    BattleAngelAlita

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

    valarus

    Joined:
    Apr 7, 2019
    Posts:
    287
    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:
    327
    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
    landonth likes this.
  5. SamOld

    SamOld

    Joined:
    Aug 17, 2018
    Posts:
    289
    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,115
    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. valarus

    valarus

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

    ali_mohebali

    Unity Technologies

    Joined:
    Apr 8, 2020
    Posts:
    65
    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
     
    GliderGuy, Bosozuki and valarus like this.
  9. ali_mohebali

    ali_mohebali

    Unity Technologies

    Joined:
    Apr 8, 2020
    Posts:
    65
    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.
     
    valarus likes this.
  10. ali_mohebali

    ali_mohebali

    Unity Technologies

    Joined:
    Apr 8, 2020
    Posts:
    65
    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:
    65
    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, GliderGuy, Bosozuki and 3 others like this.
  12. rz_0lento

    rz_0lento

    Joined:
    Oct 8, 2013
    Posts:
    2,115
    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 valarus like this.
  13. SamOld

    SamOld

    Joined:
    Aug 17, 2018
    Posts:
    289
    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:
    9
    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:
    9
    Why is that even a question!? You have so very much money/funding thus you can hire enough staff to do both.
     
unityunity