Skip to content

Commit 975b320

Browse files
committed
chore: use wgcore for WgPrepVertexBuffer
1 parent ffe76b4 commit 975b320

File tree

2 files changed

+11
-50
lines changed

2 files changed

+11
-50
lines changed

src_testbed/prep_vertex_buffer.rs

Lines changed: 9 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
use naga_oil::compose::{ComposableModuleDescriptor, Composer, NagaModuleDescriptor};
22
use wgcore::composer::ComposerExt;
33
use wgcore::kernel::{KernelInvocationBuilder, KernelInvocationQueue};
4-
use wgcore::shader::Shader;
54
use wgcore::tensor::GpuScalar;
6-
use wgcore::utils;
5+
use wgcore::{utils, Shader};
76
use wgebra::WgSvd2;
87
use wgebra::WgSvd3;
98
use wgpu::{Buffer, BufferUsages, ComputePipeline, Device};
@@ -64,52 +63,15 @@ impl GpuRenderConfig {
6463
}
6564
}
6665

67-
pub struct WgPrepVertexBuffer(ComputePipeline);
66+
#[derive(Shader)]
67+
#[shader(derive(WgParticle, WgGrid, WgSvd2, WgSvd3), composable = false)]
68+
#[cfg_attr(feature = "dim2", shader(src = "prep_vertex_buffer2d.wgsl"))]
69+
#[cfg_attr(feature = "dim3", shader(src = "prep_vertex_buffer3d.wgsl"))]
70+
pub struct WgPrepVertexBuffer {
71+
main: ComputePipeline,
72+
}
6873

6974
impl WgPrepVertexBuffer {
70-
#[cfg(feature = "dim2")]
71-
pub const SRC: &'static str = include_str!("./prep_vertex_buffer2d.wgsl");
72-
#[cfg(feature = "dim2")]
73-
pub const FILE_PATH: &'static str = "prep_vertex_buffer2d.wgsl";
74-
75-
#[cfg(feature = "dim3")]
76-
pub const SRC: &'static str = include_str!("./prep_vertex_buffer3d.wgsl");
77-
#[cfg(feature = "dim3")]
78-
pub const FILE_PATH: &'static str = "prep_vertex_buffer3d.wgsl";
79-
80-
pub fn new(device: &Device) -> Self {
81-
let module = Self::composer()
82-
.make_naga_module(NagaModuleDescriptor {
83-
source: Self::SRC,
84-
file_path: Self::FILE_PATH,
85-
..Default::default()
86-
})
87-
.unwrap();
88-
let g2p = utils::load_module(device, "main", module.clone());
89-
Self(g2p)
90-
}
91-
92-
pub fn compose(composer: &mut Composer) -> &mut Composer {
93-
WgParticle::compose(composer);
94-
WgGrid::compose(composer);
95-
WgSvd2::compose(composer);
96-
WgSvd3::compose(composer);
97-
composer
98-
.add_composable_module_once(ComposableModuleDescriptor {
99-
source: Self::SRC,
100-
file_path: Self::FILE_PATH,
101-
..Default::default()
102-
})
103-
.unwrap();
104-
composer
105-
}
106-
107-
pub fn composer() -> Composer {
108-
let mut composer = Composer::default();
109-
Self::compose(&mut composer);
110-
composer
111-
}
112-
11375
pub fn queue<'a>(
11476
&'a self,
11577
queue: &mut KernelInvocationQueue<'a>,
@@ -119,7 +81,7 @@ impl WgPrepVertexBuffer {
11981
params: &GpuSimulationParams,
12082
vertex_buffer: &Buffer,
12183
) {
122-
KernelInvocationBuilder::new(queue, &self.0)
84+
KernelInvocationBuilder::new(queue, &self.main)
12385
.bind0([
12486
vertex_buffer,
12587
particles.positions.buffer(),
@@ -132,5 +94,3 @@ impl WgPrepVertexBuffer {
13294
.queue(particles.positions.len().div_ceil(64) as u32);
13395
}
13496
}
135-
136-
wgcore::test_shader_compilation!(WgPrepVertexBuffer);

src_testbed/startup.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use std::sync::Arc;
1616
use wgcore::hot_reloading::HotReloadState;
1717
use wgcore::tensor::GpuVector;
1818
use wgcore::timestamps::GpuTimestamps;
19+
use wgcore::Shader;
1920
use wgpu::Features;
2021
use wgsparkl::pipeline::MpmPipeline;
2122

@@ -24,7 +25,7 @@ pub fn setup_app(mut commands: Commands, device: Res<RenderDevice>) {
2425
// app state
2526
let render_config = RenderConfig::new(RenderMode::Velocity);
2627
let gpu_render_config = GpuRenderConfig::new(device.wgpu_device(), render_config);
27-
let prep_vertex_buffer = WgPrepVertexBuffer::new(device.wgpu_device());
28+
let prep_vertex_buffer = WgPrepVertexBuffer::from_device(device.wgpu_device()).unwrap();
2829

2930
let mut hot_reload = HotReloadState::new().unwrap();
3031
let pipeline = MpmPipeline::new(device.wgpu_device()).unwrap();

0 commit comments

Comments
 (0)