All Projects → InitialPrefabs → UGUIDOTS

InitialPrefabs / UGUIDOTS

Licence: MIT license
Converting UGUI to be DOTS compliant

Programming Languages

C#
18002 projects
HLSL
714 projects
ShaderLab
938 projects

Projects that are alternatives of or similar to UGUIDOTS

Entt
Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more
Stars: ✭ 6,017 (+5630.48%)
Mutual labels:  data-oriented-design, entity-component-system
apecs
A petite entity component system
Stars: ✭ 17 (-83.81%)
Mutual labels:  data-oriented-design, entity-component-system
polymorph
A fast and frugal entity-component-system library with a focus on code generation and compile time optimisation.
Stars: ✭ 74 (-29.52%)
Mutual labels:  data-oriented-design, entity-component-system
Flecs
A fast entity component system (ECS) for C & C++
Stars: ✭ 2,201 (+1996.19%)
Mutual labels:  data-oriented-design, entity-component-system
UnityDOTS-Thesis
Bachelor's degree thesis on Unity DOTS architecture
Stars: ✭ 14 (-86.67%)
Mutual labels:  data-oriented-design, entity-component-system
Lumixengine
3D C++ Game Engine - yet another open source game engine
Stars: ✭ 2,604 (+2380%)
Mutual labels:  data-oriented-design, entity-component-system
imgui entt entity editor
A drop-in entity editor for EnTT with Dear ImGui
Stars: ✭ 146 (+39.05%)
Mutual labels:  entity-component-system
ECS-Phyllotaxis
Learning ECS - 100k Cubes in Phyllotaxis pattern
Stars: ✭ 17 (-83.81%)
Mutual labels:  entity-component-system
wgpu-mc
Rust-based replacement for the default Minecraft renderer
Stars: ✭ 254 (+141.9%)
Mutual labels:  renderer
DuEngine
An efficient interactive C++ renderer for ShaderToy-alike demos with 2D/3D/CubeMap/Video/Camera/LightField/Volume textures. (Partially used in my I3D 2018 papers)
Stars: ✭ 62 (-40.95%)
Mutual labels:  renderer
PicoRenderer
Low-Level, 8-bit Colored, 3D Software Renderer written in C99
Stars: ✭ 55 (-47.62%)
Mutual labels:  renderer
gdk-for-unity-blank-project
SpatialOS GDK for Unity Blank Project
Stars: ✭ 33 (-68.57%)
Mutual labels:  entity-component-system
AyaRay
A Modern C++ Windows-platform physically based renderer developing by Chang Yu.
Stars: ✭ 29 (-72.38%)
Mutual labels:  renderer
Tetra3d
Tetra3D is a 3D hybrid software/hardware renderer made for games written in Go with Ebitengine.
Stars: ✭ 271 (+158.1%)
Mutual labels:  renderer
manta-ray
An open source physically based renderer.
Stars: ✭ 604 (+475.24%)
Mutual labels:  renderer
Learning-Unity-ECS
A bunch of small Unity projects where I explore and learn Unity's new ECS and Job System.
Stars: ✭ 60 (-42.86%)
Mutual labels:  entity-component-system
ECS
Simple implement of ECS on C++
Stars: ✭ 13 (-87.62%)
Mutual labels:  entity-component-system
ecs
🐰 Entity Component System
Stars: ✭ 62 (-40.95%)
Mutual labels:  entity-component-system
chisel
A library to sculpt text on any device that you can handle pixels
Stars: ✭ 37 (-64.76%)
Mutual labels:  renderer
ash
A Typescript port of Ash Framework - https://github.com/richardlord/Ash - an Actionscript 3 entity framework for game development
Stars: ✭ 19 (-81.9%)
Mutual labels:  entity-component-system

UGUIDOTS

Logo done by Sabrina Lam

UGUIDots is a Data Oriented Tech Stack library aimed to bridge the gap in between Unity's WYSIWYG UI and the Entity Component System. This is a low level library which augments on top of Unity's UI and does not serve as a replacement - so the workflow of authoring UI designs in games largely remains the same.

Why do this?

A DOTS compliant UI is still underway (which will be based off of UIElements). Until then, I need a UI solution the works with the Scriptable Render Pipeline - without building too many custom tooling. Similarly - one that has the performance capabilities and low overhead for both mobile and desktops. That said supported platforms are primarily for:

  • Android
  • iOS (? - currently hard for me to test)
  • Linux 64 bit
  • macOS
  • Windows 64 bit

Beta/Experimental Content

Check out the develop branch of the repository for the redesigned system! This is something I've been working on lately and it redesigns how conversion and transformations are done. I haven't decided to merge this into the master branch as of late because I am trying to update the entire documentation and some features are missing.

Wiki

The wiki is currently being worked on and contains basic information about Image/Text pipelines.

Changelog

General purpose change log can be found here.

Contributions

If you would like to help contribute to the development of UGUIDots, please see the contribution guidelines here.

TODO

Support for the following will come over time - depends on the needs for my own game.

  • Canvas Scaling
  • Anchoring
  • Image stretching
  • Button actions
  • Button states (with color support)
  • Hierarchy based disabling
  • Text Rendering
  • Input fields
  • Subscene support
  • Support manual image / text batching of static UI elements (static analysis)

Installation

OpenUPM

There is currently a known issue with OpenUPM, where Unity internal scopes are added to the registry. After adding the package via OpenUPM, head over to the manifest file and delete the com.unity.* under the scopes entry.

cd <path-to-project>
openupm add com.initialprefabs.uguidots

Git Submodule

git submodule add https://github.com/InitialPrefabs/UGUIDots.git <path-to-folder>

Manually

Download the latest release and add it to your project directly.

QuickStart

Below are the basic steps to get the package working in game.

Setting up the Render Command

  • Set up project to use the Universal Render Pipeline
  • Add the RenderCommandAuthoring component with a scriptable render feature to a GameObject.
  • Add the ConvertToEntity component to the RenderCommandAuthoring GameObject

Converting GameObjects to Entities

  • Design your UI normally using the WYSWYG editor in Unity
  • Add the BatchedMeshAuthoring component to your root canvas
  • Build the batch on the BatchedMeshAuthoring component
  • Add the ConvertToEntity component to convert the GameObject hierarchy to its Entities' format

Setting up input

  • Add the MobileMouseInputAuthoring component to a GameObject for Mobile support
  • Add the StandaloneInputAuthoring component to a GameObject for Windows/macOS/*nix support
  • Put the GameObject into a subscene or add the ConvertToEntity component to it

Sample Repository

Please see the Sample repository here.

Dependencies

  • Unity 2020.1.x

Grab these from Unity's package manager.

  • Burst 1.3.4
  • Collections 0.12.0-preview.13
  • Entities 0.14.0-preview.18
  • Jobs 0.5.0-preview.14
  • Mathematics 1.2.1
  • TextMeshPro 3.0.1
  • UGUI 1.0.0
  • Universal RP 9.0.0-preview.35

Limitations

Development is still underway - so not all of the features Unity has by default is supported. Similarly - there are certain cases that are not accounted for, like sub canvases as I barely use features like that.

Credits

Some thanks to a few folks who've helped me figure out things along the way

  • Sabrina Lam (Logo artwork)
  • Valentina S.
  • Arthur D.
  • Mason R.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].