Struct bevy::render::render_resource::StorageBuffer
[−]pub struct StorageBuffer<T> where
T: ShaderType, { /* private fields */ }
Expand description
Stores data to be transferred to the GPU and made accessible to shaders as a storage buffer.
Storage buffers can be made available to shaders in some combination of read/write mode, and can store large amounts of data. Note however that WebGL2 does not support storage buffers, so consider alternative options in this case.
Storage buffers can store runtime-sized arrays, but only if they are the last field in a structure.
The contained data is stored in system RAM. write_buffer
queues
copying of the data from system RAM to VRAM. Storage buffers must conform to std430 alignment/padding requirements, which
is automatically enforced by this structure.
Other options for storing GPU-accessible data are:
Implementations
impl<T> StorageBuffer<T> where
T: ShaderType + WriteInto,
impl<T> StorageBuffer<T> where
T: ShaderType + WriteInto,
pub fn buffer(&self) -> Option<&Buffer>
pub fn binding(&self) -> Option<BindingResource<'_>>
pub fn set(&mut self, value: T)
pub fn get(&self) -> &T
pub fn get_mut(&mut self) -> &mut T
pub fn set_label(&mut self, label: Option<&str>)
pub fn get_label(&self) -> Option<&str>
pub fn write_buffer(&mut self, device: &RenderDevice, queue: &Arc<Queue>)
pub fn write_buffer(&mut self, device: &RenderDevice, queue: &Arc<Queue>)
Queues writing of data from system RAM to VRAM using the RenderDevice
and the provided RenderQueue
.
If there is no GPU-side buffer allocated to hold the data currently stored, or if a GPU-side buffer previously allocated does not have enough capacity, a new GPU-side buffer is created.
Trait Implementations
impl<T> Default for StorageBuffer<T> where
T: ShaderType + Default,
impl<T> Default for StorageBuffer<T> where
T: ShaderType + Default,
fn default() -> StorageBuffer<T>
fn default() -> StorageBuffer<T>
Returns the “default value” for a type. Read more
impl<T> From<T> for StorageBuffer<T> where
T: ShaderType,
impl<T> From<T> for StorageBuffer<T> where
T: ShaderType,
fn from(value: T) -> StorageBuffer<T>
fn from(value: T) -> StorageBuffer<T>
Converts to this type from the input type.
Auto Trait Implementations
impl<T> !RefUnwindSafe for StorageBuffer<T>
impl<T> Send for StorageBuffer<T> where
T: Send,
impl<T> Sync for StorageBuffer<T> where
T: Sync,
impl<T> Unpin for StorageBuffer<T> where
T: Unpin,
impl<T> !UnwindSafe for StorageBuffer<T>
Blanket Implementations
impl<T, U> AsBindGroupShaderType<U> for T where
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for T where
U: ShaderType,
&'a T: for<'a> Into<U>,
fn as_bind_group_shader_type(
&self,
_images: &HashMap<Handle<Image>, <Image as RenderAsset>::PreparedAsset, RandomState, Global>
) -> U
fn as_bind_group_shader_type(
&self,
_images: &HashMap<Handle<Image>, <Image as RenderAsset>::PreparedAsset, RandomState, Global>
) -> U
Return the T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist. Read more
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Convert 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
. Read more
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
impl<T> FromWorld for T where
T: Default,
impl<T> FromWorld for T where
T: Default,
fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using data from the given World
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
sourcefn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
T: Future, type Output = <T as Future>::Output;
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
fn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more