Search Unity

UI Roadmap

Discussion in 'UIElements' started by benoitd_unity, Aug 27, 2019.

  1. benoitd_unity

    benoitd_unity

    Unity Technologies

    Joined:
    Jan 2, 2018
    Posts:
    97
    Hi everyone,

    We're finally ready to share our roadmap about UI. It is centred around UIElements and gives an overview of our vision for UI, what has been already shipped and what you can expect for next year.

    Please keep in mind that the content for each milestone is not set in stone and is subject to change. Your feedback at this stage is very important, and might actually steer the roadmap, so please let us know what you think.

    Cheers,
     

    Attached Files:

    Ofx360, slavidodo, renem and 7 others like this.
  2. jGate99

    jGate99

    Joined:
    Oct 22, 2013
    Posts:
    840
    Thank you for sharing the roadmap.
    Is UIElements will get parity with uGUI by Unity 2020.3 too?
     
  3. StephanieRowlinson

    StephanieRowlinson

    Joined:
    Jul 23, 2014
    Posts:
    81
    I love how detailed this roadmap is! Great job, please do this for all features in future. ;)

    Some questions/remarks:

    - I see the DOTS features are slated for 2020.2, but the full feature set for 2020.3. As UI developer I'd prefer to get the full set of features first and then the DOTS versions of things I already have.

    - What's the difference between value and data binding?
     
  4. benoitd_unity

    benoitd_unity

    Unity Technologies

    Joined:
    Jan 2, 2018
    Posts:
    97
    Yes that's the objective.
     
    jGate99 likes this.
  5. benoitd_unity

    benoitd_unity

    Unity Technologies

    Joined:
    Jan 2, 2018
    Posts:
    97
    Oops, that slide was meant to be removed, exactly for the reasons you stated. Let me fix that.

    For the moment, we allow only the binding of the main value property of a Control, like the
    text
    property of the Label type for example.

    Data Binding would allow you to bind more properties. We're considering expanding the system to USS properties.
     
    StephanieRowlinson likes this.
  6. StephanieRowlinson

    StephanieRowlinson

    Joined:
    Jul 23, 2014
    Posts:
    81
    Data Binding's where it's at then!

    With regards to expanding it to USS properties. I haven't had time to dig into the new framework yet (was kind of waiting on the runtime version to do that), but one type of binding from styles to controls that I really like WPF and would love to have an equivalent of is the TemplateBinding. This binding used in styles basically means "this property can be overridden by each control that uses the style as needed". If you don't specify anything in the control itself the value set in the style will instead be used. So for example:

    Code (CSharp):
    1.    <Style TargetType="{x:Type Label}">
    2.             <Setter Property="SnapsToDevicePixels" Value="True"/>
    3.             <Setter Property="FontSize" Value="14"/>
    4.             <Setter Property="Template">
    5.                 <Setter.Value>
    6.                     <ControlTemplate TargetType="Label">
    7.                         <Border>
    8.                             <ContentPresenter HorizontalAlignment="Center"                                            
    9.                                               VerticalAlignment="Center"
    10.                                               TextBlock.FontFamily="/Views/Fonts/calibri.ttf#Calibri"
    11.                                               TextBlock.FontSize="{TemplateBinding FontSize}"
    12.                                               />
    13.                         </Border>
    14.                     </ControlTemplate>
    15.                 </Setter.Value>
    16.             </Setter>
    17.         </Style>
    Which in this case means each label default has the size 14, but you can overwrite it if needed. This greatly reduces the amount of almost identical styles you need to write for common and small deviations.

    Just binding to stuff in the ViewModel/Model/you know the code bit from the USS, would also be super welcome.
     
  7. benoitd_unity

    benoitd_unity

    Unity Technologies

    Joined:
    Jan 2, 2018
    Posts:
    97
    If I get what you mean, USS style sheets should behave in a similar fashion, with styles being applied based on the precedence rules of selectors.
     
    StephanieRowlinson likes this.
  8. Korindian

    Korindian

    Joined:
    Jun 25, 2013
    Posts:
    441
    Thank you for the roadmap!

    Would be lovely to have some form of SVG antialiasing in screen space overlay for Unity UI or in runtime UIElements. Since SVGs only get antialiasing in forward pipelines or in Screen Space Camera, we currently don't get SVG antialiasing in:

    1. Screen Space Overlay UIs.
    2. Any deferred pipelines, for example built-in or HDRP deferred. Any post-process AA blurs fonts.

    We can get crisp, truly resolution independent UIs in Unity (UIElements and Unity UI) if this could get addressed.
     
    benoitd_unity likes this.
  9. oltranzista

    oltranzista

    Joined:
    Jul 21, 2015
    Posts:
    1
    Where will it be announced when the Runtime UI Preview Package becomes available?
     
    jGate99 likes this.
  10. Kichang-Kim

    Kichang-Kim

    Joined:
    Oct 19, 2010
    Posts:
    312
    I'm bit confusing that there are so many packages.

    UIElements for Editor Extensions
    UIElements for Runtime
    Simple Runtime UI
    Rich Content UI

    Does these packages means same updates of UIElements? or separated packages?
     
  11. Le_Tai

    Le_Tai

    Joined:
    Jun 20, 2014
    Posts:
    298
    So does this mean UIElement will completely replace uGUI? If that is the case, will it be possible to extend the low-level rendering system of UIElement - like building custom mesh and using custom shader?
     
  12. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    226
  13. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    226
    These are just updates to UIElements, not necessarily individual packages. Either way, the final state will be fairly plug-and-play, even if it's split between multiple packages. Unity will manage these packages for you via default packages, including updates.

    To be more specific:
    UIElements for Editor Extensions is not a package. This is all in core Unity already.
    UIElements for Runtime is and will likely stay a separate package but may become default when it comes out of preview
    Simple Runtime UI and Rich Content UI are just capability goals (that span over all UIElements), not packages.
     
    engzs and Kichang-Kim like this.
  14. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    226
    Should be when 2019.3 ships, so around early November.
     
  15. benoitd_unity

    benoitd_unity

    Unity Technologies

    Joined:
    Jan 2, 2018
    Posts:
    97
    The team is working on something regarding antialiasing for Screen Space UI. Will update the roadmap once we have an ETA.
     
    Korindian likes this.
  16. NotGoodEnoughh

    NotGoodEnoughh

    Joined:
    Feb 1, 2018
    Posts:
    35
    Hello! Can you say me how can I draw a table using UIElements?
    I saw a TreeView in UXML ref, but I can't find any helpful examples of its usage.
     
  17. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    226
    Please start a separate thread. This thread is just about general roadmap questions.
     
  18. Korindian

    Korindian

    Joined:
    Jun 25, 2013
    Posts:
    441
    Great! Many thanks to the UI team for working on this.
     
  19. Le_Tai

    Le_Tai

    Joined:
    Jun 20, 2014
    Posts:
    298
    I love the direction you are heading.

    Please also add the option to pass more UV channels to UIElements.Vertex. Otherwise what can be done with custom shader would be severely limited.

    Also, can we expect UI shaders to work in any render pipeline, as it currently is?
     
  20. jGate99

    jGate99

    Joined:
    Oct 22, 2013
    Posts:
    840
    And hopefully shaders created with Shader Graph, please say yes?
     
  21. NotGoodEnoughh

    NotGoodEnoughh

    Joined:
    Feb 1, 2018
    Posts:
    35
    I'm sorry, I forgot that this is the UI Roadmap
     
    Last edited: Sep 10, 2019
    benoitd_unity likes this.
  22. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    226
    With custom shaders it would be up to you which shader you used, how you create it, and which pipeline it will work. But it's a bit early to discuss details on custom shaders at this time. Just wanted to say that it is planned.
     
    Le_Tai likes this.
  23. optimise

    optimise

    Joined:
    Jan 22, 2014
    Posts:
    443
    Hi. I have feature request and question.
    1) I hope UIElements for Runtime using in game UI can generate UI sprite atlas dynamically at runtime and make the UI always strike to become 1 draw call based on what is loaded inside the UI. I have the use case that I need to load a few of different UI icons based on condition meaning that I not able to generate static sprite atlas as I have a lot of UI icons that not able to combine with other UI to make it as 1 draw call.

    2) I see DOTS UI - 2020.1 has been removed. Does it means I cannot get DOTS UI preview package at 2020.1 cycle anymore? I still hope I can get DOTS UI Runtime support as soon as possible as I want to start using DOTS soon. Currrently DOTS UI is one of the big blocker in DOTS development workflow.
     
    jGate99 likes this.
  24. benoitd_unity

    benoitd_unity

    Unity Technologies

    Joined:
    Jan 2, 2018
    Posts:
    97
    Yes the UIElements UI Renderer does a lot of work to ensure the UI renders very few draw calls, and can achieve using only 1 draw call in most cases. It does support dynamic atlas generation at runtime, but currently has some limitations: Only works with textures that are 64x64 and limited wrap mode. We will keep improving the UIR and loosen the restrictions over time.

    Yes we had to de-prioritize it in order to secure the release of UIElements for game UI. Meanwhile, we're still looking at how we could provide a good DOTS UI solution. What is currently blocking you? What is your use case?
     
  25. one_one

    one_one

    Joined:
    May 20, 2013
    Posts:
    484
    Quick question about the runtime preview: Will this already be included in the beta version for 2019.3 at some point?
     
    optimise, labandunga and jGate99 like this.
  26. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    226
    The plan is to release the preview of the UIElements Runtime package around the same time 2019.3 releases. You'll still have to install the package yourself, so it won't be "included in" 2019.3.
     
    one_one and optimise like this.