#[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 overlay_quads: Vec<OverlayQuad>,
pub constraint_overlays: Vec<ConstraintOverlay>,
pub show_grid: bool,
pub grid_cell_size: f32,
pub grid_half_extent: f32,
pub grid_y: 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
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.camera_uniform: CameraUniformPer-frame camera uniform (view-proj matrix, eye position).
lighting: LightingSettingsPer-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: boolWhether to render in wireframe mode.
gizmo_model: Option<Mat4>Gizmo model matrix (Some = selected object exists and gizmo should render).
gizmo_mode: GizmoModeCurrent gizmo interaction mode.
gizmo_hovered: GizmoAxisCurrent hovered gizmo axis.
gizmo_space_orientation: QuatOrientation for gizmo space (identity for world, object orientation for local).
overlay_quads: Vec<OverlayQuad>Overlay quads to render this frame.
constraint_overlays: Vec<ConstraintOverlay>Constraint guide lines to render this frame.
show_grid: boolWhether to render the ground-plane grid.
grid_cell_size: f32Grid cell size in world units. Zero = camera-distance-based adaptive spacing.
grid_half_extent: f32Half-extent of the grid in world units (grid spans ±grid_half_extent). Zero = 1000 units (effectively infinite).
grid_y: f32World-space Y coordinate of the grid plane (3D mode only). Default: 0.0.
show_axes_indicator: boolWhether to draw the 2D axes orientation indicator overlay.
Defaults to true.
is_2d: boolWhether 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: QuatCamera 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: boolWhether to render filled caps at clip plane cross-sections. Default: true.
outline_selected: boolDraw 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: f32Width of the outline ring in pixels. Default: 2.0.
xray_selected: boolRender 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: PostProcessSettingsOptional post-processing settings. Default: disabled.
camera_proj: Mat4Projection matrix (without view). Required for correct SSAO view-space reconstruction.
Defaults to identity; set this when post_process.ssao is true.
camera_view: Mat4Camera view matrix (world → view). Required for CSM cascade computation. Defaults to identity; set this when using cascaded shadow maps.
camera_near: f32Camera near clip plane. Default: 0.1.
camera_far: f32Camera far clip plane. Default: 1000.0.
camera_fov: f32Camera vertical field of view in radians. Default: PI/4.
camera_aspect: f32Camera aspect ratio (width / height). Default: 1.333.
scene_generation: u64Scene 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: u64Selection 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: usizeWhich 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: ClipVolumeOptional 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§
Auto Trait Implementations§
impl Freeze for FrameData
impl RefUnwindSafe for FrameData
impl Send for FrameData
impl Sync for FrameData
impl Unpin for FrameData
impl UnsafeUnpin for FrameData
impl UnwindSafe for FrameData
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>, which can then be
downcast into Box<dyn 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>, which 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> DowncastSend for T
impl<T> DowncastSend for T
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 moreSource§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.