pub struct IsosurfaceRenderData {
pub vertex_buffer: Buffer,
pub normal_buffer: Buffer,
pub uniform_buffer: Buffer,
pub bind_group: BindGroup,
pub num_vertices: u32,
pub shadow_bind_group: Option<BindGroup>,
pub shadow_model_buffer: Option<Buffer>,
}Expand description
GPU resources for isosurface (simple mesh) visualization.
Fields§
§vertex_buffer: BufferPosition buffer (storage, vec4 per expanded triangle vertex).
normal_buffer: BufferNormal buffer (storage, vec4 per expanded triangle vertex).
uniform_buffer: BufferUniform buffer.
bind_group: BindGroupBind group (Group 0).
num_vertices: u32Number of vertices (expanded triangle vertices, for non-indexed draw).
shadow_bind_group: Option<BindGroup>Shadow pass bind group.
shadow_model_buffer: Option<Buffer>Shadow model uniform buffer.
Implementations§
Source§impl IsosurfaceRenderData
impl IsosurfaceRenderData
Sourcepub fn new(
device: &Device,
bind_group_layout: &BindGroupLayout,
camera_buffer: &Buffer,
vertices: &[Vec3],
normals: &[Vec3],
indices: &[u32],
) -> Self
pub fn new( device: &Device, bind_group_layout: &BindGroupLayout, camera_buffer: &Buffer, vertices: &[Vec3], normals: &[Vec3], indices: &[u32], ) -> Self
Creates new isosurface render data from marching cubes output.
Vertices/normals are expanded per-triangle (non-indexed drawing with storage buffers), matching the surface mesh pattern.
Sourcepub fn update_uniforms(&self, queue: &Queue, uniforms: &SimpleMeshUniforms)
pub fn update_uniforms(&self, queue: &Queue, uniforms: &SimpleMeshUniforms)
Updates the uniform buffer.
Sourcepub fn init_shadow_resources(
&mut self,
device: &Device,
shadow_bind_group_layout: &BindGroupLayout,
light_buffer: &Buffer,
)
pub fn init_shadow_resources( &mut self, device: &Device, shadow_bind_group_layout: &BindGroupLayout, light_buffer: &Buffer, )
Initializes shadow rendering resources.
Sourcepub fn has_shadow_resources(&self) -> bool
pub fn has_shadow_resources(&self) -> bool
Returns whether shadow resources have been initialized.
Auto Trait Implementations§
impl Freeze for IsosurfaceRenderData
impl !RefUnwindSafe for IsosurfaceRenderData
impl Send for IsosurfaceRenderData
impl Sync for IsosurfaceRenderData
impl Unpin for IsosurfaceRenderData
impl UnsafeUnpin for IsosurfaceRenderData
impl !UnwindSafe for IsosurfaceRenderData
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
Mutably borrows from an owned value. Read more
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>
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>
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)
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)
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
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>
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 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>
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