Graphics components
Every field below is derived from the engine’s own component registry — the same one the editor’s Details panel reads — so the types and defaults here are the values you get when you add the component, and they cannot drift from the code. The prose that explains how to use each one lives in the guides linked per entry.
BakedLighting
How this scene is baked — atlas size, density, bounces — and a record of what the last bake read.
Explained in graphics/lighting.
| Field | Type | Default | Notes |
|---|---|---|---|
atlasSize | number | 1024 | Side of the square atlas, in texels. Range ≥ 64, step 64. |
texelsPerUnit | number | 0.25 | How finely a surface is lit. A world unit is a design pixel. Range ≥ 0.01, step 0.05. |
bounces | number | 2 | How many times light may reflect. 0 = direct only. Range 0–8. |
samples | number | 64 | Rays each lumel gathers per bounce. Range ≥ 1. |
probeSamples | number | 128 | Directions each probe gathers, over the whole sphere. Range ≥ 1. |
bakedFrom | string | empty | Fingerprint of the inputs the last bake read. |
BitmapText
Text drawn in world space from a bitmap font, sorted alongside sprites (UI text is `Text`).
Explained in graphics/sprites.
| Field | Type | Default | Notes |
|---|---|---|---|
text | string | empty | |
color | Color | #ffffff | |
fontSize | number | 1 | Range ≥ 1. |
align | enum | Left | One of Left, Center, Right. |
spacing | number | 0 | |
parallax | Vec2 | (1, 1) | Parallax scroll factor (1 = with world, <1 = slower, 0 = locked to camera). |
layer | number | 0 | Range step 1. |
font | Asset<font> | none | |
enabled | boolean | true |
Camera
A view onto the world — projection, zoom, viewport rect, clear flags and render priority.
Explained in graphics/camera.
| Field | Type | Default | Notes |
|---|---|---|---|
projectionType | enum | Orthographic | Orthographic (2D) or Perspective projection. One of Perspective, Orthographic. |
fov | number | 60 | Range 1–179. |
orthoSize | number | 540 | Half the visible height in world units (Orthographic). Range ≥ 0. |
nearPlane | number | 0.1 | Range ≥ 0. |
farPlane | number | 1000 | Range ≥ 0. |
aspectRatio | number | 1.77 | |
isActive | boolean | true | |
priority | number | 0 | Range step 1. |
viewport | Vec4 | (0, 0, 1, 1) | |
clearFlags | number | 3 | Which buffers to clear before rendering this camera. |
pixelPerfect | boolean | false | Snap the camera to the pixel grid for crisp pixel-art (Orthographic). |
cullingMask | number | 4294967295 | Which sorting layers this camera renders. |
renderTarget | number | 0 | Render into a RenderTexture instead of the screen (0 = screen). Set at run time. |
showFrustum | boolean | false | Draw this camera's whole view volume in the editor, not just what it frames on the content plane. |
CameraBounds
The world rectangle a camera may not look outside of, so the level edge stays at the screen edge.
Explained in graphics/camera.
| Field | Type | Default | Notes |
|---|---|---|---|
minX | number | 0 | |
minY | number | 0 | |
maxX | number | 0 | |
maxY | number | 0 |
Canvas
The design resolution and scale mode a scene is authored against — one per scene root.
Explained in core-concepts/screen.
| Field | Type | Default | Notes |
|---|---|---|---|
designResolution | Vec2 | (1920, 1080) | |
pixelsPerUnit | number | 100 | World pixels per physics meter (Box2D + tile collider scale). Range ≥ 1. |
scaleMode | enum | FixedHeight | How the canvas adapts the design resolution to the screen. One of FixedWidth, FixedHeight, Expand, Shrink, Match. |
matchWidthOrHeight | number | 0.5 | 0 matches width, 1 matches height (Match mode only). Range 0–1. |
backgroundColor | Color | #000000 | |
layer | enum (sortingLayers) | 0 | Sorting layer this UI belongs to — cameras cull by it. Range step 1. |
DecalProjector
Prints this entity's material onto what its box covers — the surface is cut to the box and drawn again, so a decal is lit and shadowed as the surface under it.
Explained in graphics/lighting.
| Field | Type | Default | Notes |
|---|---|---|---|
facing | number | 0.2 | How squarely a surface must face the projector to take the decal. Range -1–1, step 0.05. |
bakedFrom | string | empty | What the last cut read. |
FollowTarget
Makes a camera chase an entity, with an offset, a dead zone and eased catch-up.
Explained in graphics/camera.
| Field | Type | Default | Notes |
|---|---|---|---|
target | number | -1 | |
offsetX | number | 0 | |
offsetY | number | 0 | |
offsetZ | number | 0 | |
followZ | boolean | false | |
deadzone | number | 0 | |
damping | number | 0.25 |
Light
A light — point, directional, spot or ambient — read by lit renderers, Lit materials and mesh shadow maps.
Explained in graphics/lighting.
| Field | Type | Default | Notes |
|---|---|---|---|
type | enum | Point | Point, Directional, Ambient, or Spot. One of Point, Directional, Ambient, Spot. |
color | Color | #ffffff | |
intensity | number | 1 | Brightness multiplier of the light. Range ≥ 0. |
radius | number | 200 | Falloff reach in world units (Point / Spot). Range ≥ 0. |
innerRadius | number | 0 | Radius held at full strength before the falloff starts. Range ≥ 0. |
falloff | number | 1 | Falloff shape: 1 = linear, higher pools near the light, lower reaches further. Range 0–8. |
shadowStrength | number | 1 | How much of this light its shadows remove (1 = all of it). Range 0–1. |
cookie | Asset<texture> | none | A texture whose alpha shapes this light (a cookie). |
cookieSize | Vec2 | (0, 0) | Cookie size in world units; 0 = the light's own reach. Range ≥ 0. |
innerAngle | number | 30 | Range 0–180. |
outerAngle | number | 45 | Range 0–180. |
shadowSoftness | number | 0 | Shadow softness (light-source size); 0 = hard edge. Range ≥ 0. |
sourceAngle | number | 0.53 | Angular size of a Directional light's source (the sun is 0.53); 0 = hard edge. Range 0–90. |
shadowDistance | number | 0 | Directional shadow distance; 0 = no directional shadow. Range ≥ 0. |
meshShadows | boolean | false | Cast a shadow map over 3D meshes (Directional, Spot, Point). |
shadowExtent | number | 0 | Shadow map coverage radius; 0 = fit the view. Range ≥ 0. |
followEnvironmentSun | boolean | false | Take direction and strength from the environment's sun, and light the sky without it. |
environment | Asset<environment> | none | Baked environment (.esenv) this Ambient light casts. |
environmentRotation | number | 0 | Turn the environment about the up axis, in degrees. |
drawEnvironment | boolean | false | Draw this environment as the sky behind the scene. |
enabled | boolean | true |
LightProbeVolume
A box of baked irradiance on a grid — what lights the things a lightmap cannot hold still, characters included.
Explained in graphics/lighting.
| Field | Type | Default | Notes |
|---|---|---|---|
probes | Asset<probeVolume> | none | Baked probe grid (.esprobes) filling this box. |
halfExtents | Vec3 | (100, 100, 100) | Half the box this volume covers, from the entity's position. Range ≥ 0. |
spacing | number | 100 | World units between probes the next bake lays down. Range ≥ 1. |
enabled | boolean | true |
LODGroup
Cheaper stand-in meshes for a MeshRenderer, chosen by how much of the screen the object covers.
Explained in performance/level-of-detail.
| Field | Type | Default | Notes |
|---|---|---|---|
lod1 | Asset<mesh> | none | Geometry drawn below the LOD 1 screen size. |
lod2 | Asset<mesh> | none | Geometry drawn below the LOD 2 screen size. |
lod3 | Asset<mesh> | none | Geometry drawn below the LOD 3 screen size. |
lod1Size | number | 0.5 | Screen height fraction below which LOD 1 takes over. Range 0–1. |
lod2Size | number | 0.25 | Screen height fraction below which LOD 2 takes over. Range 0–1. |
lod3Size | number | 0.1 | Screen height fraction below which LOD 3 takes over. Range 0–1. |
cullSize | number | 0.02 | Screen height fraction below which nothing is drawn (0 = never). Range 0–1. |
hysteresis | number | 0.1 | Extra fraction to grow past a threshold before the finer level returns. Range 0–1. |
enabled | boolean | true | Off: the MeshRenderer's own mesh is always drawn. |
MeshLightmap
Where a MeshRenderer's baked light comes from — the atlas, and the rectangle of it this object occupies.
Explained in graphics/lighting.
| Field | Type | Default | Notes |
|---|---|---|---|
lightmap | Asset<texture> | none | Baked lightmap atlas. Needs a mesh with a second UV set. |
scaleOffset | Vec4 | (1, 1, 0, 0) | Atlas rectangle: xy scales the second UV set, zw offsets it. |
MeshMorph
How far a MeshRenderer is blended towards each of the shapes its mesh carries — one weight per morph target.
Explained in assets/models.
| Field | Type | Default | Notes |
|---|---|---|---|
weights | array | empty | Weight per morph target of the mesh, in the order the mesh carries them. |
MeshRenderer
Geometry drawn as an entity — your own vertices or an imported mesh, with a material and a sorting layer.
Explained in graphics/drawing.
| Field | Type | Default | Notes |
|---|---|---|---|
texture | Asset<texture> | none | |
normalMap | Asset<texture> | none | Normal map (tangent space). Needs a mesh with normals. |
color | Color | #ffffff | Tint multiplied into the vertex colors (white = unchanged). |
layer | enum (sortingLayers) | 0 | Sorting layer — controls draw order across renderables. Range step 1. |
opaque | boolean | false | Opaque: no blending; writes and tests depth, so meshes occlude each other. |
cullBackfaces | boolean | false | Cull back faces: triangles facing away from the camera are skipped. |
lit | boolean | false | Receive 2D lights: Light entities light this mesh (flat normal). A custom material overrides this. |
parallax | Vec2 | (1, 1) | Parallax scroll factor (1 = with world, <1 = slower, 0 = locked to camera). |
material | Asset<material> | none | |
enabled | boolean | true | |
mesh | Asset<mesh> | none | |
geometry | object | {"positions":[],"indices":[]} |
MeshSkin
The joint entities that deform a MeshRenderer — an imported skin, in the order its bind matrices are in.
Explained in assets/models.
| Field | Type | Default | Notes |
|---|---|---|---|
joints | Entity | | Joint entities, in the order the mesh's bind matrices are in. |
Occluder
A box sight does not pass through — what stands behind it is not collected, and the picture is unchanged.
Explained in performance/occlusion-culling.
| Field | Type | Default | Notes |
|---|---|---|---|
halfExtents | Vec3 | (50, 50, 50) | Half the solid box, in world units, from the entity's position. Range ≥ 0. |
enabled | boolean | true | Off: this box hides nothing. |
PostProcessVolume
A stack of full-screen effects (bloom, vignette, colour grading) applied after the scene is drawn.
Explained in graphics/post-processing.
| Field | Type | Default | Notes |
|---|---|---|---|
effects | array | empty | |
isGlobal | boolean | true | |
shape | string | "box" | |
size | Vec2 | (5, 5) | |
priority | number | 0 | |
weight | number | 1 | |
blendDistance | number | 0 |
ReflectionProbe
A box inside which reflections come from a bake rather than from the sky — the specular half of what a light probe volume answers.
Explained in graphics/lighting.
| Field | Type | Default | Notes |
|---|---|---|---|
reflection | Asset<environment> | none | The scene's baked reflections (the baker writes this). |
halfExtents | Vec3 | (200, 200, 200) | Half the box this probe answers inside, from the entity's position. Range ≥ 0. |
slot | number | 0 | Which column of the atlas this probe occupies (the baker writes this). Range ≥ 0. |
enabled | boolean | true | Off: what stands inside this box reflects the sky again. |
ShadowCaster2D
Marks a renderer as an occluder, so 2D lights cast shadows from its silhouette.
Explained in graphics/lighting.
| Field | Type | Default | Notes |
|---|---|---|---|
size | Vec2 | (32, 32) | Occluder box size in world units (centred on the entity, turning with it). Unused when the caster has an outline. Range ≥ 0. |
path | array | empty | |
enabled | boolean | true |
ShapeRenderer
A filled or stroked primitive — rectangle, circle, capsule — with no texture asset.
Explained in graphics/sprites.
| Field | Type | Default | Notes |
|---|---|---|---|
shapeType | enum | Circle | One of Circle, Capsule, RoundedRect. |
color | Color | #ffffff | |
size | Vec2 | (100, 100) | |
cornerRadius | number | 0 | Range ≥ 0. |
layer | enum (sortingLayers) | 0 | Range step 1. |
parallax | Vec2 | (1, 1) | Parallax scroll factor (1 = with world, <1 = slower, 0 = locked to camera). |
enabled | boolean | true |
SortingGroup
Makes an entity and its whole subtree sort as one unit — the group states the layer and order, members state their place inside it.
Explained in graphics/sprites.
| Field | Type | Default | Notes |
|---|---|---|---|
layer | enum (sortingLayers) | 0 | Sorting layer for the entire group — members no longer state their own. Range step 1. |
order | number | 0 | Draw order of the whole group inside its sorting layer — higher draws on top. Range -128–127, step 1. |
enabled | boolean | true |
Sprite
Draws a texture in the world — tint, size, pivot, sorting layer, flipping, tiling and parallax.
Explained in graphics/sprites.
| Field | Type | Default | Notes |
|---|---|---|---|
texture | Asset<texture> | none | |
color | Color | #ffffff | Tint multiplied into the texture (white = unchanged). |
size | Vec2 | (100, 100) | |
pivot | Vec2 | (0.5, 0.5) | Anchor point the sprite rotates and scales about, as a fraction of its size (0.5,0.5 = centre). Values outside 0–1 sit off the sprite. |
uvOffset | Vec2 | (0, 0) | |
uvScale | Vec2 | (1, 1) | |
layer | enum (sortingLayers) | 0 | Sorting layer — controls draw order across sprites. Range step 1. |
order | number | 0 | Draw order inside the sorting layer — higher draws on top. Overrides the layer's Y-sort or depth ordering; leave 0 to keep it. Range -128–127, step 1. |
maskInteraction | enum | None | Whether a SpriteMask drawn before this sprite clips it, and which side survives. One of None, VisibleInside, VisibleOutside. |
lit | boolean | false | Receive 2D lights: Light entities light this sprite (flat normal). A custom material overrides this. |
flipX | boolean | false | |
flipY | boolean | false | |
drawMode | enum | Auto | Draw mode: Auto infers from tile size and the texture's 9-slice border; the others override it. One of Auto, Simple, Tiled, NineSlice. |
tileSize | Vec2 | (0, 0) | |
tileSpacing | Vec2 | (0, 0) | |
parallax | Vec2 | (1, 1) | Parallax scroll factor (1 = with world, <1 = slower, 0 = locked to camera). |
material | Asset<material> | none | |
enabled | boolean | true |
SpriteMask
Turns this entity's Sprite into a stencil that cuts the sprites drawn after it — a window, or a hole.
Explained in graphics/sprites.
| Field | Type | Default | Notes |
|---|---|---|---|
alphaCutoff | number | 0 | Cut to the sprite's shape instead of its box: fragments below this alpha do not mask. Range 0–1. |
limitRange | boolean | false | Limit how far this mask reaches; off = every sprite drawn after it. |
rangeEndLayer | enum (sortingLayers) | 0 | Last sorting layer this mask reaches. Range step 1. |
rangeEndOrder | number | 0 | Last order inside that layer this mask reaches, inclusive. Range -128–127, step 1. |
enabled | boolean | true |
TrailRenderer
A ribbon trailing the entity as it moves, tapering and fading over its lifetime.
Explained in graphics/sprites.
| Field | Type | Default | Notes |
|---|---|---|---|
time | number | 0.5 | Seconds each trail point lives before it fades out of the tail. Range ≥ 0. |
minVertexDistance | number | 5 | Min world distance moved before a new trail point is recorded. Range ≥ 0. |
emitting | boolean | true | Record new points. False = freeze and let the streak fade in place. |
startWidth | number | 20 | Full ribbon width at the head (newest point). Range ≥ 0. |
endWidth | number | 0 | Full ribbon width at the tail (oldest point). Range ≥ 0. |
startColor | Color | #ffffff | Color at the head (newest point). |
endColor | Color | #ffffff00 | Color at the tail (oldest point) — usually alpha 0 to fade out. |
texture | Asset<texture> | none | |
blendMode | number | 0 | Blend mode: 0 Normal, 1 Additive (glow), 2 Multiply, … |
layer | enum (sortingLayers) | 0 | Sorting layer — controls draw order across renderables. Range step 1. |
material | Asset<material> | none | |
enabled | boolean | true |
Video
Plays a video stream onto a surface in the world or the UI.
Explained in graphics/video.
| Field | Type | Default | Notes |
|---|---|---|---|
source | Asset<video> | none | |
autoplay | boolean | true | |
loop | boolean | true | |
muted | boolean | true | |
volume | number | 1 | |
playbackRate | number | 1 | |
fitSize | boolean | true | |
enabled | boolean | true |