Rendering

Turian renders with Vulkan 1.3 through Silk.NET. The same renderer draws Studio's Scene and Game views, headless screenshots from the CLI, and your exported game.

The frame

Each frame is drawn by a set of render systems, in order:

System Draws
Standard Models and meshes with PBR materials and scene lighting.
Mesh Simple meshes.
Gizmos Editor gizmos and debug lines (Studio only).
World UI .ui documents placed in the world on quads — in Studio and CLI renders; not yet in exported games.
Overlay Screen-space .ui documents on top of the scene.

The renderer targets a Vulkan swapchain in a window, or an offscreen image for Studio's views and headless rendering.

Cameras

A CameraComponent defines a view:

Property Meaning
UsePerspective Perspective when true, orthographic otherwise.
FieldOfViewDegrees Vertical field of view (perspective).
Frustum Height of the view volume (orthographic).
NearPlane, FarPlane Clipping distances.
AspectMode, FixedAspectRatio Follow the window's aspect, or keep a fixed one.
Priority Among active cameras, the highest priority renders.

Switch cameras by changing priorities — the CameraCycler in the Bistro example hands the highest priority around a list of cameras. Ready-made controllers — Free Fly, FPS, Orbit and Follow — live under Add Component → Rendering → Camera.

Lights

A LightComponent is either:

  • Point — emits from the node's position in every direction, falling off with the square of the distance. Up to 10 per frame.
  • Directional — parallel light along the node's forward axis, like the sun; position is ignored. Up to 4 per frame.

Intensity and Color (RGBA) set its strength and tint.

Materials

Surfaces use glTF's PBR metallic-roughness model: base colour, metallic, roughness, normal, occlusion and emissive, each with a factor and an optional texture. See Assets for authoring materials and importing them from models.

Graphics settings

The project's Graphics Settings asset holds rendering options; today that is the default maximum texture resolution. See Project Settings.

Rendering without a window

The CLI renders scenes to PNG files with the same renderer, which is handy in CI and for regression checks:

turian-cli screenshot MyGame --camera "Main Camera" --width 1920 --height 1080 --out shot.png
turian-cli playmode MyGame --frames 120 --out after-two-seconds.png

Without a GPU, a software Vulkan driver such as Mesa's lavapipe works; the turian-cli container image includes one.

Not there yet

Turian 1.0's renderer is deliberately small. Shadows, image-based lighting, a skybox, post-processing and custom render passes from project code are on the roadmap, not in this release.


← All docs Edit this page