#[non_exhaustive]pub struct VolumeItem {Show 17 fields
pub volume_id: VolumeId,
pub pick_id: u64,
pub volume_data: Option<Arc<VolumeData>>,
pub colour_lut: Option<ColourmapId>,
pub opacity_lut: Option<ColourmapId>,
pub scalar_range: (f32, f32),
pub bbox_min: [f32; 3],
pub bbox_max: [f32; 3],
pub step_scale: f32,
pub model: [[f32; 4]; 4],
pub enable_shading: bool,
pub opacity_scale: f32,
pub threshold_min: f32,
pub threshold_max: f32,
pub nan_colour: Option<[f32; 4]>,
pub appearance: AppearanceSettings,
pub selected: bool,
}Expand description
A volume item to render via GPU ray-marching.
The caller uploads a 3D scalar field via ViewportGpuResources::upload_volume and
receives a VolumeId. Each frame, submit a VolumeItem referencing that id plus
transfer function and display parameters.
§Picking
Set pick_id to a non-zero value and provide volume_data to enable voxel-level
picking via renderer.pick() and renderer.pick_rect(). pick_id is the ID
returned in the PickHit when a voxel is hit. A pick_id of zero means the volume
is not pickable. volume_data must match the data that was passed to
upload_volume for this volume_id.
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.volume_id: VolumeIdReference to a previously uploaded 3D texture.
pick_id: u64Pick ID returned when a voxel in this volume is hit.
0 means this volume is not pickable. Set to a non-zero value alongside
volume_data to enable voxel picking.
volume_data: Option<Arc<VolumeData>>CPU scalar data for voxel picking.
Must match the data passed to upload_volume for volume_id.
None disables voxel-level picking regardless of pick_id.
colour_lut: Option<ColourmapId>Colour transfer function LUT. None = use default builtin (viridis).
opacity_lut: Option<ColourmapId>Opacity transfer function LUT. None = linear ramp (0 at min, 1 at max).
scalar_range: (f32, f32)Scalar range for normalization [min, max].
bbox_min: [f32; 3]World-space bounding box minimum corner.
bbox_max: [f32; 3]World-space bounding box maximum corner.
step_scale: f32Ray step multiplier. Lower = higher quality, slower. Default: 1.0.
model: [[f32; 4]; 4]World-space transform. Default: identity.
enable_shading: boolWhether to apply gradient-based Phong shading. Default: false.
opacity_scale: f32Global opacity multiplier. Default: 1.0.
threshold_min: f32Scalar threshold range [min, max]. Samples outside this range are discarded (opacity = 0). Default: same as scalar_range (no clipping).
threshold_max: f32Upper scalar threshold. Samples above this value are discarded. Default: same as scalar_range.1 (no clipping).
nan_colour: Option<[f32; 4]>Colour and opacity to use for NaN scalar samples. None = skip NaN samples entirely
(same as current behaviour: discard). Some([r, g, b, a]) = render NaN voxels with
this fixed RGBA colour instead of sampling the transfer function.
appearance: AppearanceSettingsPer-item appearance overrides (hidden, unlit, opacity, wireframe).
selected: boolWhen true, the renderer draws a wireframe outline around the volume AABB. Default: false.
Trait Implementations§
Source§impl Clone for VolumeItem
impl Clone for VolumeItem
Source§fn clone(&self) -> VolumeItem
fn clone(&self) -> VolumeItem
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for VolumeItem
impl RefUnwindSafe for VolumeItem
impl Send for VolumeItem
impl Sync for VolumeItem
impl Unpin for VolumeItem
impl UnsafeUnpin for VolumeItem
impl UnwindSafe for VolumeItem
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<T> Pointable for T
impl<T> Pointable for T
Source§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.