pub struct CurveNetworkRenderData {Show 14 fields
pub node_buffer: Buffer,
pub node_color_buffer: Buffer,
pub edge_vertex_buffer: Buffer,
pub edge_color_buffer: Buffer,
pub uniform_buffer: Buffer,
pub bind_group: BindGroup,
pub num_nodes: u32,
pub num_edges: u32,
pub generated_vertex_buffer: Option<Buffer>,
pub num_edges_buffer: Option<Buffer>,
pub compute_bind_group: Option<BindGroup>,
pub tube_render_bind_group: Option<BindGroup>,
pub node_uniform_buffer: Option<Buffer>,
pub node_render_bind_group: Option<BindGroup>,
}Expand description
GPU resources for rendering a curve network.
Fields§
§node_buffer: BufferNode position buffer (storage buffer, vec4 for alignment).
node_color_buffer: BufferNode color buffer (storage buffer, vec4).
edge_vertex_buffer: BufferEdge vertex buffer - contains tail and tip positions per edge. Layout: [tail0, tip0, tail1, tip1, …] (vec4 each for alignment)
edge_color_buffer: BufferEdge color buffer (per-edge colors, vec4).
uniform_buffer: BufferUniform buffer for curve network settings.
bind_group: BindGroupBind group for this curve network.
num_nodes: u32Number of nodes.
num_edges: u32Number of edges.
generated_vertex_buffer: Option<Buffer>Generated vertex buffer from compute shader (36 vertices per edge).
num_edges_buffer: Option<Buffer>Buffer containing num_edges as uniform.
compute_bind_group: Option<BindGroup>Bind group for tube compute shader.
tube_render_bind_group: Option<BindGroup>Bind group for tube render shader.
node_uniform_buffer: Option<Buffer>Uniform buffer for node sphere rendering (matches PointUniforms).
node_render_bind_group: Option<BindGroup>Bind group for node sphere rendering (uses point pipeline).
Implementations§
Source§impl CurveNetworkRenderData
impl CurveNetworkRenderData
Sourcepub fn new(
device: &Device,
bind_group_layout: &BindGroupLayout,
camera_buffer: &Buffer,
node_positions: &[Vec3],
edge_tail_inds: &[u32],
edge_tip_inds: &[u32],
) -> Self
pub fn new( device: &Device, bind_group_layout: &BindGroupLayout, camera_buffer: &Buffer, node_positions: &[Vec3], edge_tail_inds: &[u32], edge_tip_inds: &[u32], ) -> Self
Creates new render data from curve network geometry.
§Arguments
device- The wgpu devicebind_group_layout- The bind group layout for curve networkscamera_buffer- The camera uniform buffernode_positions- Node positionsedge_tail_inds- Edge start indicesedge_tip_inds- Edge end indices
Sourcepub fn init_tube_resources(
&mut self,
device: &Device,
compute_bind_group_layout: &BindGroupLayout,
render_bind_group_layout: &BindGroupLayout,
camera_buffer: &Buffer,
)
pub fn init_tube_resources( &mut self, device: &Device, compute_bind_group_layout: &BindGroupLayout, render_bind_group_layout: &BindGroupLayout, camera_buffer: &Buffer, )
Initializes tube rendering resources.
Sourcepub fn has_tube_resources(&self) -> bool
pub fn has_tube_resources(&self) -> bool
Returns whether tube resources are initialized.
Sourcepub fn init_node_render_resources(
&mut self,
device: &Device,
point_bind_group_layout: &BindGroupLayout,
camera_buffer: &Buffer,
)
pub fn init_node_render_resources( &mut self, device: &Device, point_bind_group_layout: &BindGroupLayout, camera_buffer: &Buffer, )
Initializes node sphere rendering resources for tube mode. Uses the point pipeline to render spheres at each node to fill gaps at joints.
Sourcepub fn has_node_render_resources(&self) -> bool
pub fn has_node_render_resources(&self) -> bool
Returns whether node render resources are initialized.
Sourcepub fn update_node_uniforms(&self, queue: &Queue, uniforms: &PointUniforms)
pub fn update_node_uniforms(&self, queue: &Queue, uniforms: &PointUniforms)
Updates node sphere uniforms (radius, color, etc.).
Sourcepub fn update_uniforms(&self, queue: &Queue, uniforms: &CurveNetworkUniforms)
pub fn update_uniforms(&self, queue: &Queue, uniforms: &CurveNetworkUniforms)
Updates the uniform buffer.
Sourcepub fn update_node_colors(&self, queue: &Queue, colors: &[Vec4])
pub fn update_node_colors(&self, queue: &Queue, colors: &[Vec4])
Updates node colors.
Sourcepub fn update_edge_colors(&self, queue: &Queue, colors: &[Vec4])
pub fn update_edge_colors(&self, queue: &Queue, colors: &[Vec4])
Updates edge colors.
Sourcepub fn update_node_positions(&self, queue: &Queue, positions: &[Vec3])
pub fn update_node_positions(&self, queue: &Queue, positions: &[Vec3])
Updates node positions.
Auto Trait Implementations§
impl Freeze for CurveNetworkRenderData
impl !RefUnwindSafe for CurveNetworkRenderData
impl Send for CurveNetworkRenderData
impl Sync for CurveNetworkRenderData
impl Unpin for CurveNetworkRenderData
impl UnsafeUnpin for CurveNetworkRenderData
impl !UnwindSafe for CurveNetworkRenderData
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>. 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>
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)
&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> 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 more