1.14.0.5
Hummingbird
A modern user interface library for games
Rendering Architecture

Table of Contents

Hummingbird draws the UI (a View) in a user-provided texture. The Unity integration takes care of that by calling UnitySetRenderTexture method followed by a SetRenderTarget render event.

Hummingbird performs incremental rendering by updating only the parts of the UI texture that have changed. It will not redraw everything in the UI, which improves performance significantly. The user should not draw anything on the UI texture except the output of Hummingbird. Internally Hummingbird uses the Coherent Labs Renoir graphics library.

Hummingbird asynchronously records rendering commands that are later executed in the render thread when the DrawView render event is issued.

This is the reason every View object has a corresponding ViewRenderer. The View lives on the main thread and "controls" the page, while the ViewRenderer is only in charge of drawing it and lives on the render thread.

Backends

On different platforms, Hummingbird can draw with different rendering APIs. The API specific code is encapsulated in a Renoir backend. The Hummingbird Unity plugin uses different backends depending on the selected graphics rendering API in the project settings.

Hummingbird supports the following rendering APIs:

  • DirectX 9
  • DirectX 11
  • DirectX 11 x - Fast Semantics
  • OpenGL 3.3+
  • OpenGL ES 2
  • OpenGL ES 3
  • libGNM
  • [Planned] DirectX 12
  • [Planned] Metal
  • [Planned] Vulkan
Note
When building for iOS, the automatic graphics API selection in Unity defaults to Metal which is currently not supported. You should turn off the automatic graphics API and select GLES2 or GLES3.
iOSGraphicsAPI.png