wde_pbr/deferred/transform/
ssbo_transforms.rs1use bevy::{ecs::system::SystemParamItem, prelude::*};
2use wde_camera::prelude::*;
3use wde_renderer::prelude::*;
4
5pub const SSBO_TRANSFORM_MAX_ENTITY: usize = 100_000;
7
8pub(crate) struct SsboTransformPlugin;
9impl Plugin for SsboTransformPlugin {
10 fn build(&self, app: &mut App) {
11 app.add_plugins(RenderDataRegisterPlugin::<PbrSsboTransform>::default());
12 }
13}
14
15#[derive(Asset, Clone, TypePath, Default)]
18pub struct PbrSsboTransform;
19impl PbrSsboTransform {
20 pub const TRANSFORM_IDX: u32 = 0;
21}
22impl RenderData for PbrSsboTransform {
23 type Params = ();
24
25 fn describe(_params: &mut SystemParamItem<Self::Params>, builder: &mut RenderDataBuilder) {
26 builder.add_buffer(
27 Self::TRANSFORM_IDX,
28 Buffer {
29 label: "pbr-ssbo-transform-gpu".to_string(),
30 size: std::mem::size_of::<TransformUniform>() * SSBO_TRANSFORM_MAX_ENTITY,
31 usage: BufferUsage::STORAGE | BufferUsage::COPY_DST,
32 content: None
33 }
34 );
35 }
36}