Skip to content

Commit b8d756d

Browse files
authored
Rename ShaderStorageBuffer -> ShaderBuffer. (#22558)
The original name is inaccurate since you can provide whatever usages you want. As we make the renderer more modular and flexible, especially if we develop a compute abstraction, having an easy way to bind things like vertex buffers could be desirable. I'd *really* like to just call this `Buffer` to keep it short and sweet, but I know that proved controversial in the original PR.
1 parent bf4ab1f commit b8d756d

File tree

9 files changed

+48
-41
lines changed

9 files changed

+48
-41
lines changed

crates/bevy_dev_tools/src/fps_overlay.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use bevy_ecs::{
1515
};
1616
use bevy_picking::Pickable;
1717
use bevy_reflect::Reflect;
18-
use bevy_render::storage::ShaderStorageBuffer;
18+
use bevy_render::storage::ShaderBuffer;
1919
use bevy_text::{TextColor, TextFont, TextSpan};
2020
use bevy_time::common_conditions::on_timer;
2121
use bevy_ui::{
@@ -169,7 +169,7 @@ fn setup(
169169
)]
170170
(mut frame_time_graph_materials, mut buffers): (
171171
ResMut<Assets<FrametimeGraphMaterial>>,
172-
ResMut<Assets<ShaderStorageBuffer>>,
172+
ResMut<Assets<ShaderBuffer>>,
173173
),
174174
) {
175175
commands
@@ -218,7 +218,7 @@ fn setup(
218218
},
219219
Pickable::IGNORE,
220220
MaterialNode::from(frame_time_graph_materials.add(FrametimeGraphMaterial {
221-
values: buffers.add(ShaderStorageBuffer {
221+
values: buffers.add(ShaderBuffer {
222222
// Initialize with dummy data because the default (`data: None`) will
223223
// cause a panic in the shader if the frame time graph is constructed
224224
// with `enabled: false`.

crates/bevy_dev_tools/src/frame_time_graph/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use bevy_math::ops::log2;
88
use bevy_reflect::TypePath;
99
use bevy_render::{
1010
render_resource::{AsBindGroup, ShaderType},
11-
storage::ShaderStorageBuffer,
11+
storage::ShaderBuffer,
1212
};
1313
use bevy_shader::{Shader, ShaderRef};
1414
use bevy_ui_render::prelude::{UiMaterial, UiMaterialPlugin};
@@ -77,7 +77,7 @@ pub struct FrametimeGraphMaterial {
7777
///
7878
/// This should be updated every frame to match the frame time history from the [`DiagnosticsStore`]
7979
#[storage(0, read_only)]
80-
pub values: Handle<ShaderStorageBuffer>, // Vec<f32>,
80+
pub values: Handle<ShaderBuffer>, // Vec<f32>,
8181
/// The configuration values used by the shader to control how the graph is rendered
8282
#[uniform(1)]
8383
pub config: FrameTimeGraphConfigUniform,
@@ -92,7 +92,7 @@ impl UiMaterial for FrametimeGraphMaterial {
9292
/// A system that updates the frame time values sent to the frame time graph
9393
fn update_frame_time_values(
9494
mut frame_time_graph_materials: ResMut<Assets<FrametimeGraphMaterial>>,
95-
mut buffers: ResMut<Assets<ShaderStorageBuffer>>,
95+
mut buffers: ResMut<Assets<ShaderBuffer>>,
9696
diagnostics_store: Res<DiagnosticsStore>,
9797
config: Option<Res<FpsOverlayConfig>>,
9898
) {

crates/bevy_render/macros/src/as_bind_group.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ pub fn derive_as_bind_group(ast: syn::DeriveInput) -> Result<TokenStream> {
466466
(
467467
#binding_index,
468468
#render_path::render_resource::OwnedBindingResource::Buffer({
469-
let handle: &#asset_path::Handle<#render_path::storage::ShaderStorageBuffer> = (&self.#field_name);
469+
let handle: &#asset_path::Handle<#render_path::storage::ShaderBuffer> = (&self.#field_name);
470470
storage_buffers.get(handle).ok_or_else(|| #render_path::render_resource::AsBindGroupError::RetryNextUpdate)?.buffer.clone()
471471
})
472472
)
@@ -1049,7 +1049,7 @@ pub fn derive_as_bind_group(ast: syn::DeriveInput) -> Result<TokenStream> {
10491049
type Param = (
10501050
#ecs_path::system::lifetimeless::SRes<#render_path::render_asset::RenderAssets<#render_path::texture::GpuImage>>,
10511051
#ecs_path::system::lifetimeless::SRes<#render_path::texture::FallbackImage>,
1052-
#ecs_path::system::lifetimeless::SRes<#render_path::render_asset::RenderAssets<#render_path::storage::GpuShaderStorageBuffer>>,
1052+
#ecs_path::system::lifetimeless::SRes<#render_path::render_asset::RenderAssets<#render_path::storage::GpuShaderBuffer>>,
10531053
);
10541054

10551055
#bindless_slot_count

crates/bevy_render/src/gpu_readback.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use crate::{
66
TextureFormat,
77
},
88
renderer::{render_system, RenderDevice},
9-
storage::{GpuShaderStorageBuffer, ShaderStorageBuffer},
9+
storage::{GpuShaderBuffer, ShaderBuffer},
1010
sync_world::MainEntity,
1111
texture::GpuImage,
1212
ExtractSchedule, MainWorld, Render, RenderApp, RenderSystems,
@@ -78,7 +78,7 @@ impl Plugin for GpuReadbackPlugin {
7878
pub enum Readback {
7979
Texture(Handle<Image>),
8080
Buffer {
81-
buffer: Handle<ShaderStorageBuffer>,
81+
buffer: Handle<ShaderBuffer>,
8282
start_offset_and_size: Option<(u64, u64)>,
8383
},
8484
}
@@ -90,7 +90,7 @@ impl Readback {
9090
}
9191

9292
/// Create a readback component for a full buffer using the given handle.
93-
pub fn buffer(buffer: Handle<ShaderStorageBuffer>) -> Self {
93+
pub fn buffer(buffer: Handle<ShaderBuffer>) -> Self {
9494
Self::Buffer {
9595
buffer,
9696
start_offset_and_size: None,
@@ -99,7 +99,7 @@ impl Readback {
9999

100100
/// Create a readback component for a buffer range using the given handle, a start offset in bytes
101101
/// and a number of bytes to read.
102-
pub fn buffer_range(buffer: Handle<ShaderStorageBuffer>, start_offset: u64, size: u64) -> Self {
102+
pub fn buffer_range(buffer: Handle<ShaderBuffer>, start_offset: u64, size: u64) -> Self {
103103
Self::Buffer {
104104
buffer,
105105
start_offset_and_size: Some((start_offset, size)),
@@ -255,7 +255,7 @@ fn prepare_buffers(
255255
mut readbacks: ResMut<GpuReadbacks>,
256256
mut buffer_pool: ResMut<GpuReadbackBufferPool>,
257257
gpu_images: Res<RenderAssets<GpuImage>>,
258-
ssbos: Res<RenderAssets<GpuShaderStorageBuffer>>,
258+
ssbos: Res<RenderAssets<GpuShaderBuffer>>,
259259
handles: Query<(&MainEntity, &Readback)>,
260260
) {
261261
for (entity, readback) in handles.iter() {

crates/bevy_render/src/render_resource/bind_group.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ impl Deref for BindGroup {
112112
/// # use bevy_image::Image;
113113
/// # use bevy_color::LinearRgba;
114114
/// # use bevy_asset::Handle;
115-
/// # use bevy_render::storage::ShaderStorageBuffer;
115+
/// # use bevy_render::storage::ShaderBuffer;
116116
///
117117
/// #[derive(AsBindGroup)]
118118
/// struct CoolMaterial {
@@ -122,7 +122,7 @@ impl Deref for BindGroup {
122122
/// #[sampler(2)]
123123
/// color_texture: Handle<Image>,
124124
/// #[storage(3, read_only)]
125-
/// storage_buffer: Handle<ShaderStorageBuffer>,
125+
/// storage_buffer: Handle<ShaderBuffer>,
126126
/// #[storage(4, read_only, buffer)]
127127
/// raw_buffer: Buffer,
128128
/// #[storage_texture(5)]

crates/bevy_render/src/storage.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,23 @@ use bevy_utils::default;
1111
use encase::{internal::WriteInto, ShaderType};
1212
use wgpu::util::BufferInitDescriptor;
1313

14-
/// Adds [`ShaderStorageBuffer`] as an asset that is extracted and uploaded to the GPU.
14+
/// Adds [`ShaderBuffer`] as an asset that is extracted and uploaded to the GPU.
1515
#[derive(Default)]
1616
pub struct StoragePlugin;
1717

1818
impl Plugin for StoragePlugin {
1919
fn build(&self, app: &mut App) {
20-
app.add_plugins(RenderAssetPlugin::<GpuShaderStorageBuffer>::default())
21-
.init_asset::<ShaderStorageBuffer>()
22-
.register_asset_reflect::<ShaderStorageBuffer>();
20+
app.add_plugins(RenderAssetPlugin::<GpuShaderBuffer>::default())
21+
.init_asset::<ShaderBuffer>()
22+
.register_asset_reflect::<ShaderBuffer>();
2323
}
2424
}
2525

2626
/// A storage buffer that is prepared as a [`RenderAsset`] and uploaded to the GPU.
2727
#[derive(Asset, Reflect, Debug, Clone)]
2828
#[reflect(opaque)]
2929
#[reflect(Default, Debug, Clone)]
30-
pub struct ShaderStorageBuffer {
30+
pub struct ShaderBuffer {
3131
/// Optional data used to initialize the buffer.
3232
pub data: Option<Vec<u8>>,
3333
/// The buffer description used to create the buffer.
@@ -36,7 +36,7 @@ pub struct ShaderStorageBuffer {
3636
pub asset_usage: RenderAssetUsages,
3737
}
3838

39-
impl Default for ShaderStorageBuffer {
39+
impl Default for ShaderBuffer {
4040
fn default() -> Self {
4141
Self {
4242
data: None,
@@ -51,10 +51,10 @@ impl Default for ShaderStorageBuffer {
5151
}
5252
}
5353

54-
impl ShaderStorageBuffer {
54+
impl ShaderBuffer {
5555
/// Creates a new storage buffer with the given data and asset usage.
5656
pub fn new(data: &[u8], asset_usage: RenderAssetUsages) -> Self {
57-
let mut storage = ShaderStorageBuffer {
57+
let mut storage = ShaderBuffer {
5858
data: Some(data.to_vec()),
5959
..default()
6060
};
@@ -64,7 +64,7 @@ impl ShaderStorageBuffer {
6464

6565
/// Creates a new storage buffer with the given size and asset usage.
6666
pub fn with_size(size: usize, asset_usage: RenderAssetUsages) -> Self {
67-
let mut storage = ShaderStorageBuffer {
67+
let mut storage = ShaderBuffer {
6868
data: None,
6969
..default()
7070
};
@@ -86,7 +86,7 @@ impl ShaderStorageBuffer {
8686
}
8787
}
8888

89-
impl<T> From<T> for ShaderStorageBuffer
89+
impl<T> From<T> for ShaderBuffer
9090
where
9191
T: ShaderType + WriteInto,
9292
{
@@ -99,13 +99,13 @@ where
9999
}
100100

101101
/// A storage buffer that is prepared as a [`RenderAsset`] and uploaded to the GPU.
102-
pub struct GpuShaderStorageBuffer {
102+
pub struct GpuShaderBuffer {
103103
pub buffer: Buffer,
104104
pub had_data: bool,
105105
}
106106

107-
impl RenderAsset for GpuShaderStorageBuffer {
108-
type SourceAsset = ShaderStorageBuffer;
107+
impl RenderAsset for GpuShaderBuffer {
108+
type SourceAsset = ShaderBuffer;
109109
type Param = SRes<RenderDevice>;
110110

111111
fn asset_usage(source_asset: &Self::SourceAsset) -> RenderAssetUsages {
@@ -141,14 +141,14 @@ impl RenderAsset for GpuShaderStorageBuffer {
141141
contents: &data,
142142
usage: source_asset.buffer_description.usage,
143143
});
144-
Ok(GpuShaderStorageBuffer {
144+
Ok(GpuShaderBuffer {
145145
buffer,
146146
had_data: true,
147147
})
148148
}
149149
None => {
150150
let buffer = render_device.create_buffer(&source_asset.buffer_description);
151-
Ok(GpuShaderStorageBuffer {
151+
Ok(GpuShaderBuffer {
152152
buffer,
153153
had_data: false,
154154
})

examples/shader/gpu_readback.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use bevy::{
1414
*,
1515
},
1616
renderer::{RenderContext, RenderDevice},
17-
storage::{GpuShaderStorageBuffer, ShaderStorageBuffer},
17+
storage::{GpuShaderBuffer, ShaderBuffer},
1818
texture::GpuImage,
1919
Render, RenderApp, RenderStartup, RenderSystems,
2020
},
@@ -62,19 +62,19 @@ impl Plugin for GpuReadbackPlugin {
6262
}
6363

6464
#[derive(Resource, ExtractResource, Clone)]
65-
struct ReadbackBuffer(Handle<ShaderStorageBuffer>);
65+
struct ReadbackBuffer(Handle<ShaderBuffer>);
6666

6767
#[derive(Resource, ExtractResource, Clone)]
6868
struct ReadbackImage(Handle<Image>);
6969

7070
fn setup(
7171
mut commands: Commands,
7272
mut images: ResMut<Assets<Image>>,
73-
mut buffers: ResMut<Assets<ShaderStorageBuffer>>,
73+
mut buffers: ResMut<Assets<ShaderBuffer>>,
7474
) {
7575
// Create a storage buffer with some data
7676
let buffer: Vec<u32> = (0..BUFFER_LEN as u32).collect();
77-
let mut buffer = ShaderStorageBuffer::from(buffer);
77+
let mut buffer = ShaderBuffer::from(buffer);
7878
// We need to enable the COPY_SRC usage so we can copy the buffer to the cpu
7979
buffer.buffer_description.usage |= BufferUsages::COPY_SRC;
8080
let buffer = buffers.add(buffer);
@@ -104,7 +104,7 @@ fn setup(
104104
commands
105105
.spawn(Readback::buffer(buffer.clone()))
106106
.observe(|event: On<ReadbackComplete>| {
107-
// This matches the type which was used to create the `ShaderStorageBuffer` above,
107+
// This matches the type which was used to create the `ShaderBuffer` above,
108108
// and is a convenient way to interpret the data.
109109
let data: Vec<u32> = event.to_shader_type();
110110
info!("Buffer {:?}", data);
@@ -156,7 +156,7 @@ fn prepare_bind_group(
156156
pipeline_cache: Res<PipelineCache>,
157157
buffer: Res<ReadbackBuffer>,
158158
image: Res<ReadbackImage>,
159-
buffers: Res<RenderAssets<GpuShaderStorageBuffer>>,
159+
buffers: Res<RenderAssets<GpuShaderBuffer>>,
160160
images: Res<RenderAssets<GpuImage>>,
161161
) {
162162
let buffer = buffers.get(&buffer.0).unwrap();

examples/shader/storage_buffer.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use bevy::{
33
mesh::MeshTag,
44
prelude::*,
55
reflect::TypePath,
6-
render::{render_resource::AsBindGroup, storage::ShaderStorageBuffer},
6+
render::{render_resource::AsBindGroup, storage::ShaderBuffer},
77
shader::ShaderRef,
88
};
99

@@ -21,7 +21,7 @@ fn main() {
2121
fn setup(
2222
mut commands: Commands,
2323
mut meshes: ResMut<Assets<Mesh>>,
24-
mut buffers: ResMut<Assets<ShaderStorageBuffer>>,
24+
mut buffers: ResMut<Assets<ShaderBuffer>>,
2525
mut materials: ResMut<Assets<CustomMaterial>>,
2626
) {
2727
// Example data for the storage buffer
@@ -33,7 +33,7 @@ fn setup(
3333
[0.0, 1.0, 1.0, 1.0],
3434
];
3535

36-
let colors = buffers.add(ShaderStorageBuffer::from(color_data));
36+
let colors = buffers.add(ShaderBuffer::from(color_data));
3737

3838
let mesh_handle = meshes.add(Cuboid::from_size(Vec3::splat(0.3)));
3939
// Create the custom material with the storage buffer
@@ -69,7 +69,7 @@ fn update(
6969
time: Res<Time>,
7070
material_handles: Res<CustomMaterialHandle>,
7171
mut materials: ResMut<Assets<CustomMaterial>>,
72-
mut buffers: ResMut<Assets<ShaderStorageBuffer>>,
72+
mut buffers: ResMut<Assets<ShaderBuffer>>,
7373
) {
7474
let material = materials.get_mut(&material_handles.0).unwrap();
7575

@@ -97,7 +97,7 @@ struct CustomMaterialHandle(Handle<CustomMaterial>);
9797
#[derive(Asset, TypePath, AsBindGroup, Debug, Clone)]
9898
struct CustomMaterial {
9999
#[storage(0, read_only)]
100-
colors: Handle<ShaderStorageBuffer>,
100+
colors: Handle<ShaderBuffer>,
101101
}
102102

103103
impl Material for CustomMaterial {
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
title: "`ShaderStorageBuffer` renamed to `ShaderBuffer`"
3+
pull_requests: [22558]
4+
---
5+
6+
`ShaderStorageBuffer` has been renamed to `ShaderBuffer` and `GpuShaderStorageBuffer` has been renamed to
7+
`GpuShaderBuffer`. Update your imports and type references accordingly.

0 commit comments

Comments
 (0)