Skip to main content

NativeRenderer

Struct NativeRenderer 

Source
pub struct NativeRenderer { /* private fields */ }
Expand description

Native renderer backend implementing the Renderer trait. It wraps a shared SurtrRenderer for high-performance GPU drawing.

Implementations§

Source§

impl NativeRenderer

Source

pub fn run<V: View + 'static>(view: V)

Start the CVKG native application with the given view. This is the main entry point for desktop applications.

Trait Implementations§

Source§

impl ElapsedTime for NativeRenderer

Source§

fn delta_time(&self) -> f32

Returns the time elapsed since the last frame in seconds.
Source§

fn elapsed_time(&self) -> f32

Returns the cumulative time since the renderer started in seconds.
Source§

impl Renderer for NativeRenderer

Source§

fn capture_png(&mut self) -> Vec<u8>

Captures the current frame as a PNG-encoded byte buffer via GPU readback. Captures the current frame as a PNG-encoded byte buffer via GPU readback.

FIX #4: capture_frame() returns a Future that borrows the SurtrRenderer, so the MutexGuard must remain alive until block_on completes — the guard cannot be dropped before the future is driven to completion. The lock is held for the duration of the GPU readback. This is acceptable because capture_png is an infrequent, explicit user-triggered operation (not called on the hot render path), so blocking other render calls for the readback duration is not a practical concern.

Source§

fn fill_rect(&mut self, rect: Rect, color: [f32; 4])

Source§

fn fill_rounded_rect(&mut self, rect: Rect, radius: f32, color: [f32; 4])

Source§

fn fill_ellipse(&mut self, rect: Rect, color: [f32; 4])

Fill an ellipse/circle that fits inside rect.
Source§

fn stroke_rect(&mut self, rect: Rect, color: [f32; 4], stroke_width: f32)

Source§

fn stroke_rounded_rect( &mut self, rect: Rect, radius: f32, color: [f32; 4], stroke_width: f32, )

Source§

fn stroke_ellipse(&mut self, rect: Rect, color: [f32; 4], stroke_width: f32)

Stroke an ellipse/circle that fits inside rect.
Source§

fn draw_line( &mut self, x1: f32, y1: f32, x2: f32, y2: f32, color: [f32; 4], stroke_width: f32, )

Draw a straight line from (x1,y1) to (x2,y2).
Source§

fn draw_text(&mut self, text: &str, x: f32, y: f32, size: f32, color: [f32; 4])

Source§

fn measure_text(&mut self, text: &str, size: f32) -> (f32, f32)

Measure the width and height of the specified text.
Source§

fn draw_linear_gradient( &mut self, rect: Rect, start_color: [f32; 4], end_color: [f32; 4], angle: f32, )

Draw a linear gradient between two colors at the specified angle.
Source§

fn draw_radial_gradient( &mut self, rect: Rect, inner_color: [f32; 4], outer_color: [f32; 4], )

Draw a radial gradient between two colors.
Source§

fn draw_texture(&mut self, texture_id: u32, rect: Rect)

Draw a texture (GPU-side) at the specified rect.
Source§

fn draw_image(&mut self, image_name: &str, rect: Rect)

Draw an image asset by name or path.
Source§

fn load_image(&mut self, name: &str, data: &[u8])

Load an image asset from memory.
Source§

fn push_clip_rect(&mut self, rect: Rect)

Push a clip rectangle. All subsequent drawing is clipped to rect. Implementations that do not support clipping may ignore this call.
Source§

fn pop_clip_rect(&mut self)

Pop the most recently pushed clip rectangle.
Source§

fn push_opacity(&mut self, opacity: f32)

Set a global opacity multiplier applied to all subsequent draw calls until pop_opacity is called. opacity is in [0.0, 1.0].
Source§

fn draw_3d_cube(&mut self, rect: Rect, color: [f32; 4], rotation: [f32; 3])

Draw a high-fidelity 3D cube inside the given rectangle using specialized shader logic. rotation is [pitch, yaw, roll] in radians.
Source§

fn pop_opacity(&mut self)

Restore the previous opacity level.
Source§

fn bifrost(&mut self, rect: Rect, blur: f32, saturation: f32, opacity: f32)

Apply a Bifrost (Frosted Glass) effect to the specified rect.
Source§

fn push_mjolnir_slice(&mut self, angle: f32, offset: f32)

Push a Mjolnir Slice (geometric clipping).
Source§

fn pop_mjolnir_slice(&mut self)

Source§

fn mjolnir_shatter( &mut self, rect: Rect, pieces: u32, force: f32, color: [f32; 4], )

Apply a Mjolnir Shatter effect (fragmentation) to the specified rect.
Source§

fn mjolnir_fluid_shatter( &mut self, rect: Rect, pieces: u32, force: f32, color: [f32; 4], )

Source§

fn draw_mjolnir_bolt(&mut self, from: [f32; 2], to: [f32; 2], color: [f32; 4])

Draw a Mjolnir Bolt (lightning strike) between two points.
Source§

fn gungnir(&mut self, rect: Rect, color: [f32; 4], radius: f32, intensity: f32)

Apply a Gungnir (Neon Glow) effect to the specified rect.
Source§

fn mani_glow(&mut self, rect: Rect, color: [f32; 4], radius: f32)

Apply a ManiGlow (Lunar Illuminator) effect.
Source§

fn register_handler( &mut self, event_type: &str, handler: Arc<dyn Fn(Event) + Send + Sync>, )

Register an event handler for the current VDOM node.
Source§

fn push_vnode(&mut self, rect: Rect, name: &'static str)

Push a Virtual DOM node onto the stack for hierarchy tracking.
Source§

fn pop_vnode(&mut self)

Pop the current Virtual DOM node from the stack.
Source§

fn set_z_index(&mut self, z: f32)

Set the current Z-index for depth sorting. Higher values appear closer to the viewer.
Source§

fn get_z_index(&self) -> f32

Get the current Z-index.
Source§

fn register_shared_element(&mut self, id: &str, rect: Rect)

Register a shared element for Bifrost Bridge transitions.
Source§

fn load_svg(&mut self, name: &str, svg_data: &[u8])

Load an SVG model from raw bytes.
Source§

fn draw_svg(&mut self, name: &str, rect: Rect)

Draw a pre-loaded SVG model.
Source§

fn get_telemetry(&self) -> TelemetryData

Get real-time performance telemetry.
Source§

fn prewarm_vram(&mut self, assets: Vec<(String, Vec<u8>)>)

Pre-warm the renderer with assets. Implementations can use this to populate texture atlases or warm up shader caches.
Source§

fn push_transform( &mut self, translation: [f32; 2], scale: [f32; 2], rotation: f32, )

Push a 2D transform (translation, scale, rotation) onto the stack. This transform should be applied to all subsequent draw calls until popped. Transform-only animations use this to avoid re-triggering the layout engine.
Source§

fn pop_transform(&mut self)

Pop the last 2D transform from the stack.
Source§

fn set_berserker_mode(&mut self, state: BerserkerMode)

Source§

fn set_rage(&mut self, rage: f32)

Source§

fn memoize( &mut self, id: u64, data_hash: u64, render_fn: &dyn Fn(&mut dyn Renderer), )

Execute a render function with memoization. If the renderer supports caching and the id + data_hash match a previous run, it may replay cached commands instead of executing the function.
Source§

fn request_redraw(&mut self)

Requests that the renderer redraws as soon as possible. Used for continuous animations.
Source§

fn print(&mut self)

Trigger a native print dialog or spooling operation.
Source§

fn is_over_budget(&self) -> bool

Returns true if the current frame is over the time budget. This can be used to skip expensive visual effects.
Source§

fn fill_polygon(&mut self, _vertices: &[[f32; 2]], _color: [f32; 4])

Fill a polygon defined by a set of vertices.
Source§

fn stroke_polygon( &mut self, _vertices: &[[f32; 2]], _color: [f32; 4], _stroke_width: f32, )

Stroke a polygon defined by a set of vertices.
Source§

fn get_pointer_position(&self) -> [f32; 2]

Get the current pointer (mouse/touch) position.
Source§

fn upload_data_texture( &mut self, _id: &str, _data: &[f32], _width: u32, _height: u32, )

Upload raw float data as a GPU texture for heatmap rendering.
Source§

fn draw_heatmap(&mut self, _texture_id: &str, _rect: Rect, _palette: &str)

Draw a heatmap using a previously uploaded data texture.
Source§

fn draw_mesh(&mut self, _mesh: &Mesh, _color: [f32; 4], _transform: Mat4)

Draw a 3D mesh.
Source§

fn draw_drop_shadow( &mut self, _rect: Rect, _radius: f32, _color: [f32; 4], _blur: f32, _spread: f32, )

Draw a high-fidelity drop shadow for a rounded rectangle.
Source§

fn stroke_dashed_rounded_rect( &mut self, _rect: Rect, _radius: f32, _color: [f32; 4], _width: f32, _dash: f32, _gap: f32, )

Draw a dashed border for a rounded rectangle.
Source§

fn draw_9slice( &mut self, _image_name: &str, _rect: Rect, _left: f32, _top: f32, _right: f32, _bottom: f32, )

Draw a 9-slice / patch scaled image.
Source§

fn current_clip_rect(&self) -> Rect

Get the current clip rectangle in screen coordinates. Returns a rect covering the entire screen if no clip is active.
Source§

fn set_theme(&mut self, _theme: ColorTheme)

Source§

fn trigger_shatter_event(&mut self, _origin: [f32; 2], _force: f32)

Source§

fn set_scene(&mut self, _scene: &str)

Set the desktop scene preset (Aurora, Void, Nebula, Glitch, Yggdrasil).
Source§

fn set_scene_preset(&mut self, _preset: u32)

Source§

fn set_aria_role(&mut self, _role: &str)

Source§

fn set_aria_label(&mut self, _label: &str)

Source§

fn set_key(&mut self, _key: &str)

Set a unique key for the current VDOM node to ensure stable identity during diffing.
Source§

fn push_shadow(&mut self, _radius: f32, _color: [f32; 4], _offset: [f32; 2])

Push a shadow state to the stack. All following draw calls will have this shadow.
Source§

fn pop_shadow(&mut self)

Pop the last shadow state from the stack.
Source§

fn query_layout(&self, _node_id: NodeId) -> Option<Rect>

Return the resolved layout bounds for a specific node ID if it exists.
Source§

fn set_debug_layout(&mut self, _enabled: bool)

Enable or disable the layout debug overlay (bounds, padding, margin).
Source§

fn get_debug_layout(&self) -> bool

Check if the layout debug overlay is currently enabled.
Source§

fn set_material(&mut self, _material: DrawMaterial)

Set the active material for subsequent draw calls. Controls which pass a draw call is routed to in the multi-pass pipeline.
Source§

fn current_material(&self) -> DrawMaterial

Return the currently active material (defaults to Opaque).

Auto Trait Implementations§

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 + Send + Sync>

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