Skip to main content

SurtrRenderer

Struct SurtrRenderer 

Source
pub struct SurtrRenderer {
    pub telemetry: TelemetryData,
    pub frame_budget: FrameBudget,
    pub last_redraw_start: Instant,
    pub last_frame_start: Instant,
    pub redraw_requested: bool,
    /* private fields */
}
Expand description

SurtrRenderer implements the high-performance GPU backend.

Fields§

§telemetry: TelemetryData§frame_budget: FrameBudget

Configuration for render-loop frame timing and degradation strategies.

§last_redraw_start: Instant

Instant at the start of the last redraw, used for measuring frame timings.

§last_frame_start: Instant

Instant at the start of the last frame, used for frame_time_ms calculation.

§redraw_requested: bool

Whether a redraw has been requested for the next frame.

Implementations§

Source§

impl SurtrRenderer

Source

pub async fn forge(window: Arc<Window>) -> Self

forge — Initializes the Surtr GPU renderer from a winit window.

This method performs the following:

  1. Negotiates a wgpu surface and adapter.
  2. Forges the Muspelheim multi-pass pipeline layouts.
  3. Initializes the Berserker state buffers and texture registries.
Source

pub fn get_telemetry(&self) -> TelemetryData

Get real-time performance telemetry.

Source

pub fn resize( &mut self, window_id: WindowId, width: u32, height: u32, scale_factor: f32, )

resize — Reconfigures a specific surface and its internal textures.

Source

pub fn begin_frame(&mut self, window_id: WindowId) -> CommandEncoder

begin_frame — Strike the flaming sword to begin a new GPU frame for a specific window.

Source

pub fn register_window(&mut self, window: Arc<Window>)

register_window — Attaches a new OS window to the shared GPU context.

Source

pub fn reset_time(&mut self)

Reset the internal clock (for interactive effects)

Source

pub fn fill_rect_with_mode( &mut self, rect: Rect, color: [f32; 4], mode: u32, texture_id: Option<u32>, )

fill_rect_with_mode — Specialized rectangle drawing with mode-specific shader logic.

Source

pub fn end_frame(&mut self, encoder: CommandEncoder)

end_frame — Quench the blade by submitting the full Muspelheim multi-pass effect.

Source§

impl SurtrRenderer

Source

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

load_svg — Parses an SVG file and tessellates its paths into GPU triangles.

Source

pub fn draw_svg( &mut self, name: &str, rect: Rect, color: Option<[f32; 4]>, mode: u32, )

draw_svg — Renders a pre-loaded SVG icon at the specified logical rect.

Source

pub async fn forge_headless(_width: u32, _height: u32) -> Self

forge_headless — Initializes Surtr without a window for visual regression testing.

Trait Implementations§

Source§

impl Drop for SurtrRenderer

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl FrameRenderer<CommandEncoder> for SurtrRenderer

Source§

fn begin_frame(&mut self) -> CommandEncoder

Source§

fn end_frame(&mut self, encoder: CommandEncoder)

Source§

impl Renderer for SurtrRenderer

Source§

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

fill_rect — Standard rectangle drawing method.

Source§

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

measure_text — Calculates the dimensions of a text string without rendering.

Source§

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

load_image — Proactively pushes a raw asset into the Mega-Atlas.

Source§

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

push_mjolnir_slice — Pushes a geometric clipping plane onto the stack. All subsequent draw calls will be sliced by this plane until it is popped.

Source§

fn pop_mjolnir_slice(&mut self)

pop_mjolnir_slice — Removes the top-most geometric clipping plane from the stack.

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 bifrost(&mut self, rect: Rect, blur: f32, _saturation: f32, opacity: f32)

Apply a Bifrost (Frosted Glass) effect to the specified 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_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_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 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_image(&mut self, image_name: &str, rect: Rect)

Draw an image asset by name or path.
Source§

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

Source§

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

Draw a texture (GPU-side) at the specified rect.
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 pop_opacity(&mut self)

Restore the previous opacity level.
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 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_theme(&mut self, theme: ColorTheme)

Source§

fn set_rage(&mut self, rage: f32)

Source§

fn trigger_shatter_event(&mut self, origin: [f32; 2], force: f32)

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 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 register_shared_element(&mut self, id: &str, rect: Rect)

Register a shared element for Bifrost Bridge transitions.
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 delta_time(&self) -> f32

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

fn request_redraw(&mut self)

Requests that the renderer redraws as soon as possible. Used for continuous animations.
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 get_telemetry(&self) -> TelemetryData

Get real-time performance telemetry.
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 register_handler( &mut self, _event_type: &str, _handler: Arc<dyn Fn(Event) + Sync + Send>, )

Register an event handler for the current VDOM node.
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 query_layout(&self, _node_id: NodeId) -> Option<Rect>

Return the resolved layout bounds for a specific node ID if tracked.
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.

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