pub trait ComputeShader:
AsBindGroup
+ Clone
+ Debug
+ FromWorld
+ ExtractResource {
// Required methods
fn compute_shader() -> ShaderRef;
fn workgroup_size() -> UVec3;
// Provided methods
fn prepare_bind_group(
commands: Commands<'_, '_>,
pipeline: Res<'_, ComputePipeline<Self>>,
render_device: Res<'_, RenderDevice>,
input: Res<'_, Self>,
param: StaticSystemParam<'_, '_, <Self as AsBindGroup>::Param>,
) { ... }
fn readback(&self) -> Option<Readback> { ... }
fn on_readback(
_trigger: Trigger<'_, ReadbackComplete>,
_world: DeferredWorld<'_>,
) { ... }
}Expand description
Trait to implement for a custom compute shader.
Required Methods§
Sourcefn compute_shader() -> ShaderRef
fn compute_shader() -> ShaderRef
Asset path or handle to the shader.
Sourcefn workgroup_size() -> UVec3
fn workgroup_size() -> UVec3
Workgroup size.
Provided Methods§
Sourcefn prepare_bind_group(
commands: Commands<'_, '_>,
pipeline: Res<'_, ComputePipeline<Self>>,
render_device: Res<'_, RenderDevice>,
input: Res<'_, Self>,
param: StaticSystemParam<'_, '_, <Self as AsBindGroup>::Param>,
)
fn prepare_bind_group( commands: Commands<'_, '_>, pipeline: Res<'_, ComputePipeline<Self>>, render_device: Res<'_, RenderDevice>, input: Res<'_, Self>, param: StaticSystemParam<'_, '_, <Self as AsBindGroup>::Param>, )
Optional bind group preparation.
Sourcefn on_readback(
_trigger: Trigger<'_, ReadbackComplete>,
_world: DeferredWorld<'_>,
)
fn on_readback( _trigger: Trigger<'_, ReadbackComplete>, _world: DeferredWorld<'_>, )
Optional processing on readback. Could write back to the CPU buffer, etc.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.