Search Unity

What is "hybrid" about the HybridRenderer, and does that imply a PureRenderer?

Discussion in 'Graphics for ECS' started by PhilSA, Dec 20, 2019.

  1. PhilSA

    PhilSA

    Joined:
    Jul 11, 2013
    Posts:
    1,926
    Just a few questions I'm asking out of curiosity.

    What is "hybrid" about the HybridRenderer?
    Does that mean there will eventually be a Pure Renderer?
    What limitations would the HybridRenderer have compared to the Pure, and what sort of differences can we expect between the two?
     
    florianhanke and NotaNaN like this.
  2. elcionap

    elcionap

    Joined:
    Jan 11, 2016
    Posts:
    138
    The main different is the Hybrid Renderer requires the UnityEngine API and all the requirements of the former. Not only the render itself but the data (Mesh and Material aren't converted).
    A pure solution could be deployed with small binaries, limitations (GC, DotNet, etc). I haven't looked at the Tiny Renderer but I know that it's not the Hybrid Renderer could be a pure solution.
    I don't know if they planned any future render for DOTS only but they planned DOTS Runtime (pure meaning?) working on .NET Core.

    []'s
     
  3. Joachim_Ante

    Joachim_Ante

    Unity Technologies

    Joined:
    Mar 16, 2005
    Posts:
    5,203
    Hybrid Renderer works by leveraging the existing Material, ShaderGraph, SRP, HDRP, URP, VFXGraph etc.

    It simply makes it so that instance data is maintained in Chunks. Internally we are making a lot of fast paths in the C++ code to make it really efficient to render large amounts of renderers.
    So essentially we replace MeshRenderer with a specialized entity based representation but the rest of the pipeline is very similar. This way we can ensure that converting a project from gameobject -> entity scene will end up rendering the same (We are not there yet, but working towards it)


    What we have in 19.3 is only scratching the surface of whats possible. We are very focused on that now.
    Big improvements to render performance as well as feeding all of the instance data one is used to from MeshRenderer, for example Unity lightmaps, lightprobes, lightindices, motion vectors for URP etc. Essentially making it a fully featured mesh render pipeline. We are looking at the guts of the C++ renderer and cutting a path through the pipe that keeps everything optimal. It's quite exciting & early results are looking very very promising.

    In comparison Tiny has a specialized renderer (That doesn't use anything UnityEngine derived at runtime, although the data is of course generated from GameObjects as well). The purpose is really for small games that have to fit into < 500kb executable sizes. That means there is no intention for that renderer to ever have the complexity & feature set of something like HDRP or URP.