3D Graphics¶
Doriax provides a complete 3D pipeline with model loading, physically-based rendering, dynamic lighting, and environment effects.

Models¶
Doriax loads 3D models in GLTF and OBJ formats. Import a model as a resource and add it to a scene as an entity, then position it with its transform.
Models support:
- Skeletal animation — animate rigged characters via bones
- Morph targets — blend between mesh shapes for facial animation and deformation

PBR materials¶
Rendering is physically based (PBR), producing realistic surfaces that respond correctly to lighting. Materials drive how light interacts with each surface, supporting photorealistic results.
Materials can use albedo, normal, roughness, metallic, and emission data. Imported GLTF materials are converted into the engine material representation during loading; editor-created materials are serialized with the project and baked into exported output.
Shared material files (.material)¶
Each mesh submesh can reference a standalone .material file in your project instead
of embedding values only inside the scene. Multiple meshes can link to the same file so
they always stay in sync — change the file once and every linked mesh updates.
Create a material file from the editor:
- Select a mesh and open its Material row in the Properties window.
- Tune base colour, textures, metallic, and roughness as needed.
- Drag the material preview from Properties into the Resources Browser.
- The editor creates
Material.material(orMaterial_1.material, etc.) in the folder you drop on and links the submesh to that file.
Apply an existing material file:
- Drag a
.materialfile from the Resources Browser onto a mesh in the Scene view, or - Drop it onto the Material field in Properties (live preview while hovering).
Linked materials reload automatically when the file changes on disk. Use the unlink button (chain icon) next to the material name in Properties to copy the values back into the scene as a local, unlinked material.
See Resources Browser — Material files and Properties — Mesh materials for the full workflow.
Lighting and shadows¶
Doriax supports multiple light types with dynamic shadows, so moving objects cast and receive shadows in real time.
| Light type | Best use |
|---|---|
| Directional | Sunlight or broad outdoor lighting |
| Point | Lamps, torches, explosions, and local lights |
| Spot | Flashlights, cones, and focused effects |
The runtime supports up to six active lights and cascaded shadow maps for directional
lighting. Tune edge smoothness with Scene::setShadowQuality (NONE / LOW / MEDIUM /
HIGH PCF filtering).
Enable screen-space ambient occlusion with Scene::setSSAOEnabled(true) to add soft
contact shading in creases and corners. It affects ambient/indirect light only — see
Rendering Pipeline — Ambient occlusion (SSAO).
Environment¶
Add atmosphere to your scenes with:
- Fog — depth-based atmospheric fog
- Sky system — a configurable cubemap background that also drives image-based lighting (IBL) for reflective surfaces
- Reflection probes — local, box-shaped reflection environments for interiors and enclosed areas
Sky and reflections¶
A Sky entity provides the scene background and the lighting environment for IBL. Assign a cubemap texture (six faces or a single cross layout). Meshes that should pick up sky reflections and indirect colour need Receive IBL enabled on their Mesh component — see Rendering Pipeline — IBL.
Use Visible on the Sky component when you want IBL without drawing the sky dome (for example, a studio HDR used only for reflections). The sky texture still generates irradiance and prefiltered maps either way.
IBL gives soft, environment-wide reflections suited to curved and rough surfaces. For a local environment (a room, garage, or cave) use a Reflection Probe; for a sharp, mirror-like reflection on a flat surface, add a Mirror — see below.
Reflection probes¶
Sky IBL reflects the same environment everywhere, which looks wrong indoors. A Reflection Probe (Structure panel's create menu) captures the scene at its own position and applies that environment to meshes inside a box-shaped influence volume, with box-projected (parallax-corrected) reflections that stay anchored to the room. Probes can be static — an authored cubemap or a one-time capture at load — or dynamic, re-capturing at runtime on move, on an interval, or on demand. See Rendering Pipeline — Reflection probes.
Mirrors¶
For a true planar reflection on a flat surface — a mirror, still water, or a polished floor — add a Mirror from the Structure panel's create menu. It produces an upright reflective wall that reflects the scene from the viewer's mirrored viewpoint, with no camera or texture setup required. See Rendering Pipeline — Mirrors and planar reflections for how it works and its performance cost.
Cameras¶
Cameras define the viewpoint into a 3D scene. Position and orient a camera entity, and set it as the scene's active camera to control what the player sees.

Cameras can be perspective, orthographic, or UI cameras. A scene owns an active camera entity; editor scene cameras are separate from game cameras so you can navigate while preserving the player's view.
Additional features¶
The runtime also supports particle systems, terrain with level-of-detail (LOD), and mesh instancing for efficiently rendering many copies of the same geometry.
Next steps¶
Add interactivity with Physics, or learn how to ship your game in Export Window.