Open github-actions[bot] opened 11 months ago
https://api.github.com/mosure/bevy_gaussian_splatting/blob/eedd27e0f32bdf33f324238284c915dc6e1574d2/src/render/mod.rs#L184
gaussian_cloud: Self::ExtractedAsset, render_device: &mut SystemParamItem<Self::Param>, ) -> Result<Self::PreparedAsset, PrepareAssetError<Self::ExtractedAsset>> { let gaussian_buffer = render_device.create_buffer_with_data(&BufferInitDescriptor { label: Some("gaussian cloud buffer"), contents: bytemuck::cast_slice(gaussian_cloud.0.as_slice()), usage: BufferUsages::VERTEX | BufferUsages::COPY_DST | BufferUsages::STORAGE, }); let count = gaussian_cloud.0.len() as u32; // TODO: derive sorting_buffer_size from cloud count (with possible rounding to next power of 2) let sorting_global_buffer = render_device.create_buffer(&BufferDescriptor { label: Some("sorting global buffer"), size: ShaderDefines::default().sorting_buffer_size as u64, usage: BufferUsages::STORAGE | BufferUsages::COPY_DST | BufferUsages::COPY_SRC, mapped_at_creation: false, }); let draw_indirect_buffer = render_device.create_buffer(&BufferDescriptor { label: Some("draw indirect buffer"), size: std::mem::size_of::<wgpu::util::DrawIndirect>() as u64, usage: BufferUsages::INDIRECT | BufferUsages::COPY_DST | BufferUsages::STORAGE | BufferUsages::COPY_SRC, mapped_at_creation: false, }); let sorting_pass_buffers = (0..4) .map(|idx| { render_device.create_buffer_with_data(&BufferInitDescriptor { label: format!("sorting pass buffer {}", idx).as_str().into(), contents: &[idx as u8, 0, 0, 0], usage: BufferUsages::UNIFORM | BufferUsages::COPY_DST, }) }) .collect::<Vec<Buffer>>() .try_into() .unwrap(); let entry_buffer_a = render_device.create_buffer(&BufferDescriptor { label: Some("entry buffer a"), size: (count as usize * std::mem::size_of::<(u32, u32)>()) as u64, usage: BufferUsages::STORAGE | BufferUsages::COPY_SRC, mapped_at_creation: false, }); let entry_buffer_b = render_device.create_buffer(&BufferDescriptor { label: Some("entry buffer b"), size: (count as usize * std::mem::size_of::<(u32, u32)>()) as u64, usage: BufferUsages::STORAGE | BufferUsages::COPY_SRC, mapped_at_creation: false, }); Ok(GpuGaussianCloud { gaussian_buffer, count, draw_indirect_buffer, sorting_global_buffer, sorting_pass_buffers, entry_buffer_a, entry_buffer_b, }) } }
https://api.github.com/mosure/bevy_gaussian_splatting/blob/eedd27e0f32bdf33f324238284c915dc6e1574d2/src/render/mod.rs#L184