Skip to main content

FrameData

Struct FrameData 

Source
#[non_exhaustive]
pub struct FrameData {
Show 45 fields pub camera_uniform: CameraUniform, pub lighting: LightingSettings, pub eye_pos: [f32; 3], pub scene_items: Vec<SceneRenderItem>, pub wireframe_mode: bool, pub gizmo_model: Option<Mat4>, pub gizmo_mode: GizmoMode, pub gizmo_hovered: GizmoAxis, pub gizmo_space_orientation: Quat, pub domain_extents: Option<[f32; 3]>, pub overlay_quads: Vec<OverlayQuad>, pub constraint_overlays: Vec<ConstraintOverlay>, pub show_grid: bool, pub grid_cell_size: f32, pub grid_half_extent: f32, pub show_axes_indicator: bool, pub is_2d: bool, pub viewport_size: [f32; 2], pub camera_orientation: Quat, pub background_color: Option<[f32; 4]>, pub clip_planes: Vec<ClipPlane>, pub cap_fill_enabled: bool, pub outline_selected: bool, pub outline_color: [f32; 4], pub outline_width_px: f32, pub xray_selected: bool, pub xray_color: [f32; 4], pub post_process: PostProcessSettings, pub camera_proj: Mat4, pub camera_view: Mat4, pub camera_near: f32, pub camera_far: f32, pub camera_fov: f32, pub camera_aspect: f32, pub scene_generation: u64, pub selection_generation: u64, pub point_clouds: Vec<PointCloudItem>, pub glyphs: Vec<GlyphItem>, pub polylines: Vec<PolylineItem>, pub volumes: Vec<VolumeItem>, pub viewport_index: usize, pub compute_filter_items: Vec<ComputeFilterItem>, pub isoline_items: Vec<IsolineItem>, pub streamtube_items: Vec<StreamtubeItem>, pub clip_volume: ClipVolume,
}
Expand description

All data needed to render one frame of the viewport.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§camera_uniform: CameraUniform

Per-frame camera uniform (view-proj matrix, eye position).

§lighting: LightingSettings

Per-frame lighting configuration.

§eye_pos: [f32; 3]

Camera eye position in world space (for Blinn-Phong specular lighting).

§scene_items: Vec<SceneRenderItem>

Per-object render items.

§wireframe_mode: bool

Whether to render in wireframe mode.

§gizmo_model: Option<Mat4>

Gizmo model matrix (Some = selected object exists and gizmo should render).

§gizmo_mode: GizmoMode

Current gizmo interaction mode.

§gizmo_hovered: GizmoAxis

Current hovered gizmo axis.

§gizmo_space_orientation: Quat

Orientation for gizmo space (identity for world, object orientation for local).

§domain_extents: Option<[f32; 3]>

Domain extents for wireframe rendering. None if domain has zero extents.

§overlay_quads: Vec<OverlayQuad>

Overlay quads to render this frame.

§constraint_overlays: Vec<ConstraintOverlay>

Constraint guide lines to render this frame.

§show_grid: bool

Whether to render the ground-plane grid.

§grid_cell_size: f32

Grid cell size in world units. Zero means use domain_extents-derived spacing.

§grid_half_extent: f32

Half-extent of the grid in world units (grid spans ±grid_half_extent). Zero = use domain_extents.

§show_axes_indicator: bool

Whether to draw the 2D axes orientation indicator overlay. Defaults to true.

§is_2d: bool

Whether the simulation is 2D (affects grid plane orientation).

§viewport_size: [f32; 2]

Viewport size in physical pixels (width, height). Required for axes indicator.

§camera_orientation: Quat

Camera orientation quaternion (used for axes indicator projection).

§background_color: Option<[f32; 4]>

Optional background/clear color [r, g, b, a]. Adapters can use this as the render pass clear color. None = let the adapter choose its default.

§clip_planes: Vec<ClipPlane>

Active section-view clip planes. Max 6. Default: empty (no clipping).

§cap_fill_enabled: bool

Whether to render filled caps at clip plane cross-sections. Default: true.

§outline_selected: bool

Draw a stencil-outline ring around selected objects. Default: false.

§outline_color: [f32; 4]

RGBA color of the selection outline ring. Default: orange [1.0, 0.5, 0.0, 1.0].

§outline_width_px: f32

Width of the outline ring in pixels. Default: 2.0.

§xray_selected: bool

Render selected objects as a semi-transparent x-ray overlay. Default: false.

§xray_color: [f32; 4]

RGBA color of the x-ray tint (should have alpha < 1). Default: [0.3, 0.7, 1.0, 0.25].

§post_process: PostProcessSettings

Optional post-processing settings. Default: disabled.

§camera_proj: Mat4

Projection matrix (without view). Required for correct SSAO view-space reconstruction. Defaults to identity; set this when post_process.ssao is true.

§camera_view: Mat4

Camera view matrix (world → view). Required for CSM cascade computation. Defaults to identity; set this when using cascaded shadow maps.

§camera_near: f32

Camera near clip plane. Default: 0.1.

§camera_far: f32

Camera far clip plane. Default: 1000.0.

§camera_fov: f32

Camera vertical field of view in radians. Default: PI/4.

§camera_aspect: f32

Camera aspect ratio (width / height). Default: 1.333.

§scene_generation: u64

Scene version counter from Scene::version(). Used by the renderer to skip batch rebuild and GPU upload when the scene has not changed. Default: 0 (triggers rebuild on first frame).

§selection_generation: u64

Selection version counter from Selection::version(). Used by the renderer to skip batch rebuild when the selection has not changed. Default: 0 (triggers rebuild on first frame).

§point_clouds: Vec<PointCloudItem>

Point cloud items to render this frame. Default: empty (zero-cost skip).

§glyphs: Vec<GlyphItem>

Instanced glyph items to render this frame. Default: empty (zero-cost skip).

§polylines: Vec<PolylineItem>

Polyline (streamline) items to render this frame. Default: empty (zero-cost skip).

§volumes: Vec<VolumeItem>

Volume items to render this frame via GPU ray-marching. Default: empty (zero-cost skip).

§viewport_index: usize

Which viewport slot this frame data belongs to (0-based).

In single-viewport mode this is always 0. In multi-viewport mode each sub-viewport sets a distinct index so the renderer can maintain independent per-viewport camera buffers and bind groups. The renderer grows its internal per-viewport storage automatically as new indices are seen. Default: 0.

§compute_filter_items: Vec<ComputeFilterItem>

GPU compute filter items dispatched before the render pass.

Default: empty — the compute pass is completely skipped (zero overhead). Each item references an uploaded mesh by index and specifies a Clip or Threshold filter. The renderer replaces the mesh’s index buffer with the compacted output during paint().

§isoline_items: Vec<IsolineItem>

Isoline (contour line) items to render on mesh surfaces.

Default: empty — zero overhead when no isolines are requested. Each crate::geometry::isoline::IsolineItem carries its own mesh geometry, per-vertex scalars, and a list of isovalues. The renderer extracts the segments on the CPU and uploads them through the existing polyline pipeline (no new GPU pipeline or shader required).

§streamtube_items: Vec<StreamtubeItem>

Streamtube items to render this frame.

Default: empty — zero overhead when unused. Each StreamtubeItem is converted to instanced cylinder segments during prepare().

§clip_volume: ClipVolume

Optional volumetric clip region. Fragments outside the volume are discarded, in addition to any clip_planes already active.

Default: ClipVolume::None — zero GPU overhead.

Trait Implementations§

Source§

impl Default for FrameData

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

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

Converts &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> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Send + Sync>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

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

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be 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<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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,