Skip to main content

Atom

Enum Atom 

Source
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.

Fields

§id: Uuid
§width: u32
§height: u32
§frames: Vec<Vec<u8>>
§material_frames: Option<Vec<Vec<u8>>>
§

SetTileMaterialFrames

Provide or replace per-frame material maps (RGBA = roughness/metallic/opacity/emission) for an existing tile.

Fields

§id: Uuid
§frames: Vec<Vec<u8>>
§

AddSolid

Add a solid-color 1x1 tile with id and RGBA color.

Fields

§id: Uuid
§color: [u8; 4]
§

AddSolidWithMaterial

Add a solid-color 1x1 tile with id, RGBA color, and material properties. Material properties: RGBA = roughness/metallic/opacity/emission

Fields

§id: Uuid
§color: [u8; 4]
§material: [u8; 4]
§

BuildAtlas

Build the atlas for all frames

§

SetAtlasSize

Override atlas dimensions (default is 4096x4096). Rebuilds atlas on next build/upload.

Fields

§width: u32
§height: u32
§

AddPoly

Add a polygon (world coords) that references a tile by UUID into the CURRENT chunk; indices are local to the chunk.

Fields

§poly: Poly2D
§

AddPoly3D

Add a 3D polygon (world coords) that references a tile by UUID; indices are local to the chunk.

Fields

§poly: Poly3D
§

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.

Fields

§tile_id: Uuid
§points: Vec<[f32; 2]>
§width: f32
§

AddLineStrip2Dpx

Add a 2D line strip rendered in screen space with a constant pixel width. Points are in world coordinates; width is in pixels.

Fields

§tile_id: Uuid
§points: Vec<[f32; 2]>
§width_px: f32
§

NewChunk

Create an empty chunk (no switch)

Fields

§id: Uuid
§

AddChunk

Insert or replace an entire chunk in one go (prepared externally, e.g., in Rusterix)

Fields

§id: Uuid
§chunk: Chunk
§

RemoveChunk

Remove an existing chunk; if it is the current chunk, unset it

Fields

§id: Uuid
§

RemoveChunkAt

Remove a chunk at a given origin (in chunk grid coordinates)

Fields

§origin: Vec2<i32>
§

SetCurrentChunk

Switch the current chunk (created if missing)

Fields

§id: Uuid
§

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 entries).

§

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

Fields

§visible: bool
§

SetGeoOpacity

Set opacity for a specific geometry id across all chunks (0.0..1.0).

Fields

§opacity: f32
§

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

Fields

§light: Light
§

RemoveLight

Remove a light by its id

Fields

§

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

§

SetAvatarBillboardData

Set or replace avatar billboard RGBA data for a GeoId (square size x size).

Fields

§size: u32
§rgba: Vec<u8>
§

RemoveAvatarBillboardData

Remove avatar billboard RGBA data for a GeoId.

Fields

§

ClearAvatarBillboardData

Clear all avatar billboard RGBA data.

§

SetBvhLeafSize

Set BVH leaf size (max triangles per leaf)

Fields

§max_tris: u32
§

SetCamera3D

Set the camera

Fields

§camera: Camera3D

Trait Implementations§

Source§

impl Debug for Atom

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,