Byte Engine Docs

Rendering

Design decisions around rendering in Byte Engine.

This section discusses rendering design decisions, from rendering code structure to rendering algorithms.

Actors

Render orchestrator

The render orchestrator coordinates the rendering of the different render domains. It manages the global render graph. It's strictly a piece of the runtime.

Render system

The render system provides easy to use abstractions over the render backend. It allows you to create textures, buffers, shaders, etc. and then use them to render things. It abstracts details like staging buffers, memory allocation, etc. away from the user.

Each render system is backed by a render backend. The render backend is responsible for creating the actual resources and executing the commands. This render backend can be chosen when creating the render system (e.g. Vulkan, OpenGL, DirectX, etc.)

It also belongs to the runtime.

Render domain

A render domain is a collection of renderables that live in the same space and should be managed by a cohesive rendering technique.

The render domain is an interface for defining a rendering environment and the guidelines for generating code for that environment.

Render model

A render model is an implementation of a render domain.

For example, a RenderWorld domain could have render models such as RenderWorldVisibilityBuffer, RenderWorldDeferred, and RenderWorldForward. Each one would render the world using different techniques.

On this page