Search Unity

  1. Unity Asset Manager is now available in public beta. Try it out now and join the conversation here in the forums.
    Dismiss Notice
  2. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  3. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Feedback Wanted: Scriptable Render Pipelines

Discussion in 'Graphics Experimental Previews' started by Tim-C, May 9, 2017.

  1. Tim-C

    Tim-C

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    2,221
    IMPORTANT
    Are you on unity 2017.3 beta and want to use SRP? Good new we maintain an active branch now located on git.

    https://github.com/Unity-Technologi...ee/Unity-2017.3#how-to-use-the-latest-version

    How to use the latest version
    The repository no longer consists of a complete Unity project, but rather assumes to be put inside a sub-folder of the Assets\ folder of an existing Unity project. Make sure that your project uses linear color space (Edit > Project Settings > Player).

    Perform the following instructions to get a working copy of SRP:

    Code (csharp):
    1.  
    2. > cd <Path to your Unity project>/Assets
    3. > git clone https://github.com/Unity-Technologies/ScriptableRenderLoop
    4. > cd ScriptableRenderLoop
    5. > git submodule update --init --recursive --remote
    6.  
    After you launch the project go to graphics settings and select a render pipeline to work with. Currently I recommend staring with the light weight as it's a little simpler and more mature.

    Scriptable Render Pipelines

    The SRP project aims to redefine how Unity does rendering at all levels, up until now rendering in has been very strictly defined by Unity. There was of course hook points into the engine to modify behaviour, but it was quite limited. SRP is how we are opening up the rendering engine inside Unity to you!


    Low End Pipeline Test scene

    What is it?

    The Scriptable Render Pipeline (previously known as “scriptable render loops”), is a new way of configuring and performing rendering in Unity! It’s a massive conceptual shift away from how we currently to do things and is designed to completely redefine what Unity is capable of when it comes to rendering!

    Currently in Unity we provide a number of rendering configurations (for example: forward rendering and deferred rendering). These pipelines are fixed and created by us; what this means is that we are dictating to you how rendering should happen. This has a number of downsides:
    • You can’t fix or workaround rendering issues.
    • The pipelines are large and complex, as they have to handle all use cases.
    • It’s very difficult to add state-of-the-art effects due to legacy and complexity.
    Really, we are trying to do everything for everyone and that doesn’t scale. We remove complexity and allow massive flexibility. This is where the pipelines come in!

    How does it work?

    Last year we released Graphics Command Buffers; this feature allowed you to inject custom rendering code into parts of the render pipeline. The SRP project is the next step. Complete rendering control is pushed from our internals into user-land C# scripting.

    Instead of providing a monolithic rendering pipeline, what we provide with the SRP is a set of Lego-like blocks that you can plug together. Each block is well defined with a single function that is easy to test, improve, and maintain. It’s also easy for us to add new blocks to the engine as rendering technology advances and new techniques become available :)

    From a user point of view what happens is that there is a rendering entry point in a C# class, from there the you can do whatever they want! The long term goal here is to decouple the concepts of cameras and lights and similar from Unity internal rendering concepts. They will become data containers that the SRP can use to configure rendering.

    Improving Unity

    As we are developing all the above, we are also discovering various other pieces of “low level graphics” in Unity that need improving or are simply missing. Because of this we are doing a lot of improvements to compute shaders, shader compiliaton and variant handling, bug fixing shader translators, adding more flexibility to graphics buffer management, MS texture support improvements and so on. All that is not directly related to SRP, but are needed to do interesting things with it.


    Low End Pipeline Test scene

    What is it not?

    SRP is a BIG project for us. The SRP allows for very fast iteration times and experiment with cutting edge techniques. Internally we are already writing a lot of cool new test frameworks and experimental renderers using the SRP. The iteration time is amazing!

    That being said, at the core, the foundational SRP is NOT an artist tool. The pipelines that we provide and that you create will facilitate the creation of amazing content, but generally they will be written by a rendering programmer.

    The specific pipelines that are created are where the artist friendly amazingness comes in. In these we can add specific shaders and tooling to create an amazing and artist friendly tool pipeline.

    Awesome, how do I play with this?

    Clone the project from github. The current head should work with the current 2017 beta. This is our in development location for render pipelines that will become part of the public release as they mature. Currently the most mature pipeline is the Low End pipeline. This is targeted towards mobile devices and is a good place to start investigation how to write a pipeline.

    Is there a tutorial I can use?

    Earlier this year I did a presentation at GDC about the render pipelines. The demo project is here. This runs on the current 2017 beta :) The project builds a render pipeline up step by step and shows how to use many of the various features described in the slides :)
     

    Attached Files:

    Last edited: Oct 5, 2017
    tinyant, Mauri, yc960 and 19 others like this.
  2. virror

    virror

    Joined:
    Feb 3, 2012
    Posts:
    2,963
    Do you have any more info on what "pre-built" pipelines that will be shipped? There was talk about a VR one, is that still on the roadmap?
     
    dkeiger, landon912, Alverik and 2 others like this.
  3. Tim-C

    Tim-C

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    2,221
    To start with 'VR' will be an option on the pipes that we ship with. To start with this will be an option on the Low-End pipe (may follow a few weeks after the main release of this pipe). As we move forward there will be more specific VR elements added to the pipes.
     
    Alverik likes this.
  4. JakubSmaga

    JakubSmaga

    Joined:
    Aug 5, 2015
    Posts:
    417
    Is 2017.1 still the release target or was it moved to 2017.2?
     
  5. Tim-C

    Tim-C

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    2,221
    This is a two sided question, we have the core API, which is solidifying nicely but we are not going to remove the experimental tag until we are pretty confident that they can use our included pipelines to ship large scale projects that run really really well.

    In reality what that means is that until the HDPipe, LDpipe, VR features are polished the experimental tag will remain on the feature. That being said the LDPipeline is getting really stable and at a good place in 2017.1 to start using. I foresee that in 2017.2 it will be usable for a large number of mobile games and even if the experimental tag remains on SRP as a whole this pipe will be passed that state.
     
    landon912, Alverik, scvnathan and 2 others like this.
  6. theprotonfactor

    theprotonfactor

    Joined:
    Oct 10, 2014
    Posts:
    140
    Quick question, could internal matrices like unity_worldToLight and unity_worldToShadow be exposed to script on a per light basis with SRP? This would be super useful in the case of doing shadow mapping from a rendering plugin.
     
  7. PhilSA

    PhilSA

    Joined:
    Jul 11, 2013
    Posts:
    1,926
    Okay, I'm gonna be the guy who asks that question:
    Will the HD Pipeline be "crazy cool and all AAA-looking and all that"? (Or, on a more serious note, what can we expect out of the HD pipeline, when compared to Unity's current pipeline? Will it even affect rendering quality at all?)

    Also, am I imagining things or were you guys working on a node-based material editor at some point as part of this whole SRP project? I took a quick glance at the code and saw things like "Nodes" and "Input/Outputs" and "DefaultLit" and "SubsurfaceScattering". I'm talking about this branch:

    The branch seems abandoned. Will it resume at some point?
     
    Last edited: May 11, 2017
    Cleverlie and Kolyasisan like this.
  8. Tim-C

    Tim-C

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    2,221
    There are some (slightly outdated) details of what the HD pipe is like here: https://docs.google.com/document/d/...JKYZhsIYnrDkNAuvQ/edit#heading=h.gu5i27hc83ei But it's all new and super hot (and still in early development).

    We've been prototyping and hacking on a bunch of stuff internally (we always do), most stuff never reaches the light of day :( We don't have anything to announce here right now.
     
    Alverik and PhilSA like this.
  9. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,788
    Oh hey, some of them are new. are those available in the master branch, compatible with latest beta?
    as an artist would like to test them
     
    Alverik likes this.
  10. Tim-C

    Tim-C

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    2,221
    What do you mean by this? Which things are new?
     
  11. Dizzy-Dalvin

    Dizzy-Dalvin

    Joined:
    Jul 4, 2013
    Posts:
    54
    @Tim-C Is there a way to mix new render pipelines with the old one? How do they interact with OnPreRender/OnPostRender, calling Camera.Render() manually, and other callbacks?

    I'll tell you a bit about the case I'm struggling with.

    So, in our game we have a UI screen which can be opened at any time showing some 3D objects each with its own environment. Currently we do this by spawning the objects with a specific layer at some distance apart from each other where every object has a camera attached to it and a set of lights. As we cannot exclude all 31 other layers, we have to disable all scene lights and enable the lights associated with the current object on PreRender, then disable them and turn on the scene lights on PostRender. As you can imagine, it's not very efficient :)
    Sometimes we need to draw such an object into a sprite. Which can also happen at any time in the game. For this, we do almost the same thing: spawn the object, the camera, and the lights, then manually call camera.Render(), readback image into a sprite and destroy them all in one frame. (By the way, I fear that Unity might be rebuilding UGUI layout for some reason when calling Camera.Render). So yes, it practically begs for a separate pipeline.

    Now, I didn't dig deep into the new system (just found out about it an hour ago), but as I see it, we can ignore the Camera[] array of Render method and keep our own list of cameras since we know which camera should draw the main view, and which cameras are used for rendering our 3D UI objects. Alternatively, we can iterate through the supplied array and check if the cameras are contained in our lists, or discern them by other means (tags, components). After that we need to re-create current Unity pipeline for our main camera (or hopefully we don't have to) and write custom pipeline for other cameras. For such custom views since we know which objects we draw with which lights, we could create CullResults from them (couldn't find a way, though), render and apply all the post-processing for each camera somehow. For the render-into-sprite camera we can probably keep it enabled at all times but don't do any rendering unless there's an object we need to photograph in our objects queue.

    So, is this possible? Am I thinking in the right direction? Or is there an easier way?
    Either way, I really like where this is all going. Keep up the good work.
     
  12. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,788
    for example the clear coat and subsurf/transmission shading. Last time i read that docs it was tagged (later), so i assume it's implemented already.
    or am i assuming wrong?
     
  13. CharlesBarros

    CharlesBarros

    Joined:
    Nov 17, 2011
    Posts:
    61
    The current head dos not work with Unity 2017.1.0b5. (or I'm missing something hr)

    Code (CSharp):
    1. -----CompilerOutput:-stderr----------
    2. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(4,32): error CS0234: The type or namespace name `PostProcessing' does not exist in the namespace `UnityEngine.Experimental'. Are you missing an assembly reference?
    3. Assets/ScriptableRenderPipeline/BasicRenderPipelineTutorial/BasicRenderPipeline.cs(33,44): error CS0246: The type or namespace name `RenderPipeline' could not be found. Are you missing an assembly reference?
    4. Assets/ScriptableRenderPipeline/fptl/FptlLighting.cs(99,41): error CS0246: The type or namespace name `RenderPipeline' could not be found. Are you missing an assembly reference?
    5. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(285,45): error CS0246: The type or namespace name `RenderPipeline' could not be found. Are you missing an assembly reference?
    6. Assets/ScriptableRenderPipeline/LowEndMobilePipeline/LowEndMobilePipeline.cs(49,41): error CS0246: The type or namespace name `RenderPipeline' could not be found. Are you missing an assembly reference?
    7. Assets/ScriptableRenderPipeline/BasicRenderPipelineTutorial/BasicRenderPipeline.cs(35,26): error CS0115: `BasicRenderPipelineInstance.Render(UnityEngine.Experimental.Rendering.ScriptableRenderContext, UnityEngine.Camera[])' is marked as an override but no suitable method found to override
    8. Assets/ScriptableRenderPipeline/common/Debugging/DebugItemDrawer.cs(262,25): warning CS0108: `UnityEngine.Experimental.Rendering.DebugItemDrawerIntEnum.m_EnumStrings' hides inherited member `UnityEngine.Experimental.Rendering.DebugItemDrawer.m_EnumStrings'. Use the new keyword if hiding was intended
    9. Assets/ScriptableRenderPipeline/common/Debugging/DebugItemDrawer.cs(18,36): (Location of the symbol related to previous warning)
    10. Assets/ScriptableRenderPipeline/common/Debugging/DebugItemDrawer.cs(263,25): warning CS0108: `UnityEngine.Experimental.Rendering.DebugItemDrawerIntEnum.m_EnumValues' hides inherited member `UnityEngine.Experimental.Rendering.DebugItemDrawer.m_EnumValues'. Use the new keyword if hiding was intended
    11. Assets/ScriptableRenderPipeline/common/Debugging/DebugItemDrawer.cs(19,29): (Location of the symbol related to previous warning)
    12. Assets/ScriptableRenderPipeline/fptl/FptlLighting.cs(111,30): error CS0115: `UnityEngine.Experimental.Rendering.Fptl.FptlLightingInstance.Dispose()' is marked as an override but no suitable method found to override
    13. Assets/ScriptableRenderPipeline/fptl/FptlLighting.cs(118,30): error CS0115: `UnityEngine.Experimental.Rendering.Fptl.FptlLightingInstance.Render(UnityEngine.Experimental.Rendering.ScriptableRenderContext, UnityEngine.Camera[])' is marked as an override but no suitable method found to override
    14. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(131,32): error CS0115: `UnityEngine.Experimental.Rendering.HDPipeline.HDRenderPipeline.GetDefaultShader()' is marked as an override but no suitable method found to override
    15. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(136,34): error CS0115: `UnityEngine.Experimental.Rendering.HDPipeline.HDRenderPipeline.GetDefaultMaterial()' is marked as an override but no suitable method found to override
    16. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(141,34): error CS0115: `UnityEngine.Experimental.Rendering.HDPipeline.HDRenderPipeline.GetDefaultParticleMaterial()' is marked as an override but no suitable method found to override
    17. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(146,34): error CS0115: `UnityEngine.Experimental.Rendering.HDPipeline.HDRenderPipeline.GetDefaultLineMaterial()' is marked as an override but no suitable method found to override
    18. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(151,34): error CS0115: `UnityEngine.Experimental.Rendering.HDPipeline.HDRenderPipeline.GetDefaultTerrainMaterial()' is marked as an override but no suitable method found to override
    19. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(156,34): error CS0115: `UnityEngine.Experimental.Rendering.HDPipeline.HDRenderPipeline.GetDefaultUIMaterial()' is marked as an override but no suitable method found to override
    20. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(161,34): error CS0115: `UnityEngine.Experimental.Rendering.HDPipeline.HDRenderPipeline.GetDefaultUIOverdrawMaterial()' is marked as an override but no suitable method found to override
    21. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(166,34): error CS0115: `UnityEngine.Experimental.Rendering.HDPipeline.HDRenderPipeline.GetDefaultUIETC1SupportedMaterial()' is marked as an override but no suitable method found to override
    22. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(171,34): error CS0115: `UnityEngine.Experimental.Rendering.HDPipeline.HDRenderPipeline.GetDefault2DMaterial()' is marked as an override but no suitable method found to override
    23. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(323,18): error CS0246: The type or namespace name `PostProcessRenderContext' could not be found. Are you missing an assembly reference?
    24. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(414,30): error CS0115: `UnityEngine.Experimental.Rendering.HDPipeline.HDRenderPipelineInstance.Dispose()' is marked as an override but no suitable method found to override
    25. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(565,30): error CS0115: `UnityEngine.Experimental.Rendering.HDPipeline.HDRenderPipelineInstance.Render(UnityEngine.Experimental.Rendering.ScriptableRenderContext, UnityEngine.Camera[])' is marked as an override but no suitable method found to override
    26. Assets/ScriptableRenderPipeline/LowEndMobilePipeline/LowEndMobilePipeline.cs(83,30): error CS0115: `UnityEngine.Experimental.Rendering.LowendMobile.LowEndMobilePipeline.Render(UnityEngine.Experimental.Rendering.ScriptableRenderContext, UnityEngine.Camera[])' is marked as an override but no suitable method found to override
    27. Assets/ScriptableRenderPipeline/LowEndMobilePipeline/LowEndMobilePipelineAsset.cs(163,34): error CS0115: `UnityEngine.Experimental.Rendering.LowendMobile.LowEndMobilePipelineAsset.GetDefaultMaterial()' is marked as an override but no suitable method found to override
    28. Assets/ScriptableRenderPipeline/LowEndMobilePipeline/LowEndMobilePipelineAsset.cs(168,34): error CS0115: `UnityEngine.Experimental.Rendering.LowendMobile.LowEndMobilePipelineAsset.GetDefaultParticleMaterial()' is marked as an override but no suitable method found to override
    29. Assets/ScriptableRenderPipeline/LowEndMobilePipeline/LowEndMobilePipelineAsset.cs(173,34): error CS0115: `UnityEngine.Experimental.Rendering.LowendMobile.LowEndMobilePipelineAsset.GetDefaultLineMaterial()' is marked as an override but no suitable method found to override
    30. Assets/ScriptableRenderPipeline/LowEndMobilePipeline/LowEndMobilePipelineAsset.cs(178,34): error CS0115: `UnityEngine.Experimental.Rendering.LowendMobile.LowEndMobilePipelineAsset.GetDefaultTerrainMaterial()' is marked as an override but no suitable method found to override
    31. Assets/ScriptableRenderPipeline/LowEndMobilePipeline/LowEndMobilePipelineAsset.cs(183,34): error CS0115: `UnityEngine.Experimental.Rendering.LowendMobile.LowEndMobilePipelineAsset.GetDefaultUIMaterial()' is marked as an override but no suitable method found to override
    32. Assets/ScriptableRenderPipeline/LowEndMobilePipeline/LowEndMobilePipelineAsset.cs(188,34): error CS0115: `UnityEngine.Experimental.Rendering.LowendMobile.LowEndMobilePipelineAsset.GetDefaultUIOverdrawMaterial()' is marked as an override but no suitable method found to override
    33. Assets/ScriptableRenderPipeline/LowEndMobilePipeline/LowEndMobilePipelineAsset.cs(193,34): error CS0115: `UnityEngine.Experimental.Rendering.LowendMobile.LowEndMobilePipelineAsset.GetDefaultUIETC1SupportedMaterial()' is marked as an override but no suitable method found to override
    34. Assets/ScriptableRenderPipeline/LowEndMobilePipeline/LowEndMobilePipelineAsset.cs(198,34): error CS0115: `UnityEngine.Experimental.Rendering.LowendMobile.LowEndMobilePipelineAsset.GetDefault2DMaterial()' is marked as an override but no suitable method found to override
    35. Assets/ScriptableRenderPipeline/LowEndMobilePipeline/LowEndMobilePipelineAsset.cs(202,32): error CS0115: `UnityEngine.Experimental.Rendering.LowendMobile.LowEndMobilePipelineAsset.GetDefaultShader()' is marked as an override but no suitable method found to override
    36. -----EndCompilerOutput---------------
     
  14. Dhialub

    Dhialub

    Joined:
    Nov 11, 2013
    Posts:
    41
    I second that, exactly nothing works.
     
  15. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,788
    use B2 branch
     
  16. CharlesBarros

    CharlesBarros

    Joined:
    Nov 17, 2011
    Posts:
    61
    Sorry, which branch??? o_O
     
  17. PhilSA

    PhilSA

    Joined:
    Jul 11, 2013
    Posts:
    1,926
    Last edited: May 13, 2017
    CharlesBarros likes this.
  18. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,788
    oh it's updated to b5 already.
     
  19. PhilSA

    PhilSA

    Joined:
    Jul 11, 2013
    Posts:
    1,926
    ...unfortunately I'm still having errors in b5 with PostProcessing namespace
     
  20. CharlesBarros

    CharlesBarros

    Joined:
    Nov 17, 2011
    Posts:
    61
    This version is better, but in fact it was last open by:
    m_EditorVersion: 2017.1.0b3

    Most of the errors are gone. There is two left:
    Code (CSharp):
    1. -----CompilerOutput:-stderr----------
    2. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(4,32): error CS0234: The type or namespace name `PostProcessing' does not exist in the namespace `UnityEngine.Experimental'. Are you missing an assembly reference?
    3. Assets/ScriptableRenderPipeline/common/Debugging/DebugItemDrawer.cs(262,25): warning CS0108: `UnityEngine.Experimental.Rendering.DebugItemDrawerIntEnum.m_EnumStrings' hides inherited member `UnityEngine.Experimental.Rendering.DebugItemDrawer.m_EnumStrings'. Use the new keyword if hiding was intended
    4. Assets/ScriptableRenderPipeline/common/Debugging/DebugItemDrawer.cs(18,36): (Location of the symbol related to previous warning)
    5. Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs(271,18): error CS0246: The type or namespace name `PostProcessRenderContext' could not be found. Are you missing an assembly reference?
    6. -----EndCompilerOutput---------------
     
  21. PhilSA

    PhilSA

    Joined:
    Jul 11, 2013
    Posts:
    1,926


    I managed to make it sort-of work:
    • Use beta 3 (not 5)
    • Download the v2 branch of the PostProcessing repository ( https://github.com/Unity-Technologies/PostProcessing/tree/v2 ) and add it under the existing empty folder "PostProcessing" in the project. This version works with PostProcess volumes and layers, instead of just a profile on the camera
    • This takes care of the post process errors, there will be a new one about shader defines. To solve this, go in "TextureCache.cs" and comment out the two places where there's a "//#if UNITY_2017_2_OR_NEWER". Like this
    • Now go in the HDRenderLoopTest scene. There will be plenty of errors. Just press play once, and the errors should go away.
    @Tim-C we'd definitely need this to be updated so that people don't have to do this. Also the camera controls are a bit weird.... french keyboard? ;)

    Also note that I added my own PostProcessVolume to the scene for those effects. I also activated AA on the camera's PostProcessLayer script
     
    Reanimate_L likes this.
  22. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,788
    Hmm i can get the last version running fine in beta 5 actually, just need to add PostProcessStack v2
     
  23. JakubSmaga

    JakubSmaga

    Joined:
    Aug 5, 2015
    Posts:
    417
  24. Tim-C

    Tim-C

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    2,221
    The thing you are seeing here is because we are using SubRepositories for the post processing. I did the following just now:

    Download: Beta5
    Clone via git and update to: 156fb11645ac202f400e787f4851f8d2aaf659c2
    Execute: git submodule update --init --recursive

    Open the project in beta 5.

    Right now the HDPipe does not have any error checking. If it does not load properly delete the graphissettings.asset from the Unity project settings folder. Your computer may not support compute shaders which are a requirement.

    Edit: I added these steps to the release nots for the b5 tag + to the top of this thread. If anyone has any further issues let me know.
     
    Last edited: May 13, 2017
    Alverik and PhilSA like this.
  25. Tim-C

    Tim-C

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    2,221
    I'll respond to this properly early next week. :)
     
  26. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,788
    @Tim-C I'm not seeing any clear coat settings and sample
     
  27. Tim-C

    Tim-C

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    2,221
    Clear coat still in development, not sure when it will be landing.
     
  28. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,788
    got it, no rush. just want to test :)
     
  29. Onigiri

    Onigiri

    Joined:
    Aug 10, 2014
    Posts:
    470
    Any chances to see glass/water shader also?
     
  30. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,788
    @Tim-C would it be possible to request pseudo IOR or Fresnel control for reflection and specular?
    and 2 lobes specular option would be awesome :D
    So the subsurface scattering are bound to object world scale?

    Getting there unity team, pretty awesome work :)
    anyway how to disable the overlay on the letf top screen?
    upload_2017-5-15_19-26-41.png

    On LDPipe lightmap and lightprobe doesn't take the color of the baked objects (No Color Bleed/Bounce)
    upload_2017-5-16_1-30-47.png
     
    Last edited: May 15, 2017
    Alverik likes this.
  31. Tim-C

    Tim-C

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    2,221
    Answers from the people working on the HDPipe.

    It is the debug of the skybox, should be uncheck in hdrp settings

    IOR and Fresnel is control by baseColor for metal and hardcoded for dieletric. No other control. Specular occlusion to come later (no timeframe currently). (Note: HD pipeline follows PBR principles)

    not required as we use GGX lobe (longer tails) and not Kelemen/Szirmay-Kalos lobe as in D'eon articles.

    yes

    Nothing to announce here currently.
     
    Alverik likes this.
  32. Tim-C

    Tim-C

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    2,221
    Looking nice.

    I'll ping felipe :)
     
  33. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,788
    alright noted,
    is there a way to remove/increase/multipliy the world space scale unit for sss?
    bit of a limitation don't you think, since we need to make our scene very small to get the sss effect. make it to big we cannot see the effect at all.
    having a scale multiplier might be best option i think

    @Tim-C
    - HDPipeline : Shadow disappear or clipped if the camera FOV are lower than 60
     
    Last edited: May 16, 2017
  34. CGBull

    CGBull

    Joined:
    Feb 12, 2017
    Posts:
    82
    So what is this? More concerned about the HD Render Loop, this function is what? New feature collection? How do I use the sub surface and hair shader in the document?
     
  35. JakubSmaga

    JakubSmaga

    Joined:
    Aug 5, 2015
    Posts:
    417
    @Tim-C In which 2017.1 beta can we expect to have SRP built-in?
     
  36. CGBull

    CGBull

    Joined:
    Feb 12, 2017
    Posts:
    82
    Excuse me, why did I download RenderLoop wrong? I used 2017 beta 5, what should I do?
     
  37. CGBull

    CGBull

    Joined:
    Feb 12, 2017
    Posts:
    82
    Oh I see..
    Using Beta 5, you need to download the Beta5 version, how to download the PostProcessV2 and add it to the PostProcess folder
     
  38. Ruchir

    Ruchir

    Joined:
    May 26, 2015
    Posts:
    934
    Can anyone post screenshots of the demos available , my PC is really old so I can't run them myself, please anyone post screenshots!!
     
  39. PhilSA

    PhilSA

    Joined:
    Jul 11, 2013
    Posts:
    1,926
    There's not much to see right now
     
  40. Ruchir

    Ruchir

    Joined:
    May 26, 2015
    Posts:
    934
    But still there are demos , right??
     
  41. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    AlanMattano likes this.
  42. Simod

    Simod

    Joined:
    Jan 29, 2014
    Posts:
    176
    Hi Tim. A question:

    What these blocks actually are? I am bit confused with idea of appending (injecting, a la CommandBuffer) to the Pipeline features, writing my own block, without a code change. Does it possible? Can I see that somewhere in examples?
     
  43. kite3h

    kite3h

    Joined:
    Aug 27, 2012
    Posts:
    192
    Is not Skinning shader process included?
     
  44. ahmidou

    ahmidou

    Joined:
    Sep 17, 2012
    Posts:
    87
    That would be so awesome!!
     
  45. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,788
    what is this "skinning shader" that you guys talking about?
     
  46. WilkerLucio

    WilkerLucio

    Joined:
    May 2, 2017
    Posts:
    18
    Based on this https://forum.unity3d.com/threads/gpu-skinning-vs-your-custom-vertex-shader.255866/ and this https://forum.unity3d.com/threads/cpu-gpu-skinning.59565/#post-1691091 threads, and this http://www.novosad.ch/files/mps.pdf document i've found online, it's basically a way of applying bone wheights of an animation to the vertices of a mesh.
    Apparently it's done by the CPU, but can be done by GPU? I didn't know that.
     
  47. Reanimate_L

    Reanimate_L

    Joined:
    Oct 10, 2009
    Posts:
    2,788
    it's already in unity since. . . uhh don't remember when they've add it actually
    upload_2017-5-26_20-0-22.png
     
    WilkerLucio likes this.
  48. AlkisFortuneFish

    AlkisFortuneFish

    Joined:
    Apr 26, 2013
    Posts:
    970
    Since Unity 4.2, almost 4 years ago.
     
    WilkerLucio likes this.
  49. Tim-C

    Tim-C

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    2,221
    Yes and no. Some callbacks will be issued (those internal to unity that you can't mimic in a render pipeline), and some need to be manually issued. We have a test that shows this here, you can see what we currently expect:
    https://hastebin.com/dehegitunu.cs

    We are internally talking about moving away from sending ANY callbacks and if you want to send OnBecameVisible other things like that then you'll need to manually issue them after a cull. This would allow us to massivly increase performance due to not having to call c# unless really needed :)

    This is something we internally had a big discussion about this week. Manual cull results. This would mean that instead of specifying a camera and doing a cull you could specify a list of objects / lights up front and just do a cull on them (or do no cull and just pass it through). This is on our list.
     
    kraihd and guycalledfrank like this.
  50. Tim-C

    Tim-C

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    2,221
    They are the 'broad phase' rendering operations. Some are things like, "Perform Culling" others are things like "DrawRenderers". On top of this you can build your own from normal "Command buffers"

    Take a look at this:
    https://github.com/Unity-Technologi...ne/BasicRenderPipeline/BasicRenderPipeline.cs

    A block that does culling:
    Code (csharp):
    1.  
    2. CullingParameters cullingParams;
    3. if (!CullResults.GetCullingParameters(camera, out cullingParams))
    4. continue;
    5. CullResults cull = CullResults.Cull(ref cullingParams, context);
    6.  
    A block that does rendering
    Code (csharp):
    1.  
    2. // Draw opaque objects using BasicPass shader pass
    3. var settings = new DrawRendererSettings(cull, camera, new ShaderPassName("BasicPass"));
    4. settings.sorting.flags = SortFlags.CommonOpaque;
    5. settings.inputFilter.SetQueuesOpaque();
    6. context.DrawRenderers(ref settings);
    7.  
    Something more advanced from the HDPipe (allocate and set render target)
    Code (csharp):
    1.  
    2. var cmd = new CommandBuffer { name = "" };
    3. cmd.GetTemporaryRT(m_VelocityBuffer, w, h, 0, FilterMode.Point, Builtin.RenderLoop.GetVelocityBufferFormat(), Builtin.RenderLoop.GetVelocityBufferReadWrite());
    4. cmd.SetRenderTarget(m_VelocityBufferRT, m_CameraDepthStencilBufferRT);
    5. renderContext.ExecuteCommandBuffer(cmd);
    6. cmd.Dispose();
    7.