pub enum Atom {
Show 53 variants
AddTile {
id: Uuid,
width: u32,
height: u32,
frames: Vec<Vec<u8>>,
material_frames: Option<Vec<Vec<u8>>>,
},
SetTileMaterialFrames {
id: Uuid,
frames: Vec<Vec<u8>>,
},
AddSolid {
id: Uuid,
color: [u8; 4],
},
AddSolidWithMaterial {
id: Uuid,
color: [u8; 4],
material: [u8; 4],
},
BuildAtlas,
SetAtlasSize {
width: u32,
height: u32,
},
AddPoly {
poly: Poly2D,
},
AddPoly3D {
poly: Poly3D,
},
AddLineStrip2D {
id: GeoId,
tile_id: Uuid,
points: Vec<[f32; 2]>,
width: f32,
},
AddLineStrip2Dpx {
id: GeoId,
tile_id: Uuid,
points: Vec<[f32; 2]>,
width_px: f32,
},
NewChunk {
id: Uuid,
},
AddChunk {
id: Uuid,
chunk: Chunk,
},
RemoveChunk {
id: Uuid,
},
RemoveChunkAt {
origin: Vec2<i32>,
},
SetCurrentChunk {
id: Uuid,
},
SetAnimationCounter(usize),
SetBackground(Vec4<f32>),
SetGP0(Vec4<f32>),
SetGP1(Vec4<f32>),
SetGP2(Vec4<f32>),
SetGP3(Vec4<f32>),
SetGP4(Vec4<f32>),
SetGP5(Vec4<f32>),
SetGP6(Vec4<f32>),
SetGP7(Vec4<f32>),
SetGP8(Vec4<f32>),
SetGP9(Vec4<f32>),
SetRaster3DMsaaSamples(u32),
SetRenderMode(RenderMode),
SetPalette(Vec<Vec4<f32>>),
SetTransform2D(Mat3<f32>),
SetTransform3D(Mat4<f32>),
SetLayer(i32),
SetGeoVisible {
id: GeoId,
visible: bool,
},
SetGeoOpacity {
id: GeoId,
opacity: f32,
},
SetSource2D(String),
SetViewportRect2D(Option<[f32; 4]>),
SetSource3D(String),
SetSourceSdf(String),
SetSdfData(Vec<[f32; 4]>),
Clear,
ClearTiles,
ClearGeometry,
AddLight {
id: GeoId,
light: Light,
},
RemoveLight {
id: GeoId,
},
ClearLights,
ClearDynamics,
AddDynamic {
object: DynamicObject,
},
SetAvatarBillboardData {
id: GeoId,
size: u32,
rgba: Vec<u8>,
},
RemoveAvatarBillboardData {
id: GeoId,
},
ClearAvatarBillboardData,
SetBvhLeafSize {
max_tris: u32,
},
SetCamera3D {
camera: Camera3D,
},
}Expand description
VM instruction set
Variants§
AddTile
Add a tile with id, dimensions, and animation frames (RGBA8). Each frame is tightly packed widthheight4 bytes.
SetTileMaterialFrames
Provide or replace per-frame material maps (RGBA = roughness/metallic/opacity/emission) for an existing tile.
AddSolid
Add a solid-color 1x1 tile with id and RGBA color.
AddSolidWithMaterial
Add a solid-color 1x1 tile with id, RGBA color, and material properties.
Material properties: RGBA = roughness/metallic/opacity/emission
BuildAtlas
Build the atlas for all frames
SetAtlasSize
Override atlas dimensions (default is 4096x4096). Rebuilds atlas on next build/upload.
AddPoly
Add a polygon (world coords) that references a tile by UUID into the CURRENT chunk; indices are local to the chunk.
AddPoly3D
Add a 3D polygon (world coords) that references a tile by UUID; indices are local to the chunk.
AddLineStrip2D
Add a simple 2D line strip as thick segments tessellated into quads (no caps/joins) Points are in world coordinates; width is in the same units.
AddLineStrip2Dpx
Add a 2D line strip rendered in screen space with a constant pixel width. Points are in world coordinates; width is in pixels.
NewChunk
Create an empty chunk (no switch)
AddChunk
Insert or replace an entire chunk in one go (prepared externally, e.g., in Rusterix)
RemoveChunk
Remove an existing chunk; if it is the current chunk, unset it
RemoveChunkAt
Remove a chunk at a given origin (in chunk grid coordinates)
SetCurrentChunk
Switch the current chunk (created if missing)
SetAnimationCounter(usize)
Set the current animation counter (frame index modulo each tile’s frame count)
SetBackground(Vec4<f32>)
Set background color/params shared by 2D and 3D
SetGP0(Vec4<f32>)
General-purpose vec4 slots shared by 2D and 3D
SetGP1(Vec4<f32>)
SetGP2(Vec4<f32>)
SetGP3(Vec4<f32>)
SetGP4(Vec4<f32>)
SetGP5(Vec4<f32>)
SetGP6(Vec4<f32>)
SetGP7(Vec4<f32>)
SetGP8(Vec4<f32>)
SetGP9(Vec4<f32>)
SetRaster3DMsaaSamples(u32)
Raster 3D MSAA samples (valid: 0=off, 4=on).
SetRenderMode(RenderMode)
Switch between 2D/3D/SDF compute drawing
SetPalette(Vec<Vec4<f32>>)
Set a 256-entry color palette available in shaders (vec4
SetTransform2D(Mat3<f32>)
Set a 2D transform (Mat3) applied on CPU to polygon vertices before 2D compute draw
SetTransform3D(Mat4<f32>)
Set a 3D transform (Mat4) applied on CPU to polygon vertices before 3D compute draw
SetLayer(i32)
Set current 2D/3D layer for subsequently added geometry
SetGeoVisible
Toggle visibility for a specific geometry id across all chunks
SetGeoOpacity
Set opacity for a specific geometry id across all chunks (0.0..1.0).
SetSource2D(String)
Provide a custom WGSL body for the 2D compute shader. The VM will prepend a header and compile at runtime.
SetViewportRect2D(Option<[f32; 4]>)
Set the viewport rect for the 2D compute shader (x, y, width, height in screen pixels). If None, uses full screen. The rect is passed to shader via uniforms.
SetSource3D(String)
Provide a custom WGSL body for the 3D compute shader. The VM will prepend a header and compile at runtime.
SetSourceSdf(String)
Provide a custom WGSL body for the SDF compute shader. The VM will prepend a header and compile at runtime.
SetSdfData(Vec<[f32; 4]>)
Replace the SDF data buffer (read-only storage) exposed to the shader.
Clear
Clear EVERYTHING: tiles, atlas, scene (chunks), counters and modes
ClearTiles
Clear only the tiles and atlas (keep scene/chunks intact)
ClearGeometry
Clear only the scene geometry (chunks & current selection), keep tiles/atlas intact
AddLight
Add a light to the scene
RemoveLight
Remove a light by its id
ClearLights
Remove all lights from the scene
ClearDynamics
Remove all dynamic billboards for this VM layer.
AddDynamic
Add a dynamic object (billboard, particles, etc.) that is evaluated this frame.
Fields
object: DynamicObjectSetAvatarBillboardData
Set or replace avatar billboard RGBA data for a GeoId (square size x size).
RemoveAvatarBillboardData
Remove avatar billboard RGBA data for a GeoId.
ClearAvatarBillboardData
Clear all avatar billboard RGBA data.
SetBvhLeafSize
Set BVH leaf size (max triangles per leaf)
SetCamera3D
Set the camera
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Atom
impl RefUnwindSafe for Atom
impl Send for Atom
impl Sync for Atom
impl Unpin for Atom
impl UnsafeUnpin for Atom
impl UnwindSafe for Atom
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more