pub struct CpuFallback { /* private fields */ }Expand description
CPU fallback that implements the same interface as GPU compute for hardware without compute shader support.
Each “kernel” is implemented as a Rust function operating on CPU-side arrays. This allows the engine to function on older hardware, albeit at lower performance.
Implementations§
Source§impl CpuFallback
impl CpuFallback
Sourcepub fn deactivate(&mut self)
pub fn deactivate(&mut self)
Deactivate (revert to GPU).
Sourcepub fn particle_integrate(
&mut self,
positions: &mut [[f32; 4]],
velocities: &mut [[f32; 4]],
params: &ParticleIntegrateParams,
)
pub fn particle_integrate( &mut self, positions: &mut [[f32; 4]], velocities: &mut [[f32; 4]], params: &ParticleIntegrateParams, )
CPU particle integration (matches particle_integrate kernel).
Sourcepub fn lorenz_step(
&mut self,
points: &mut [[f32; 3]],
sigma: f32,
rho: f32,
beta: f32,
dt: f32,
)
pub fn lorenz_step( &mut self, points: &mut [[f32; 3]], sigma: f32, rho: f32, beta: f32, dt: f32, )
CPU Lorenz attractor integration.
Sourcepub fn mandelbrot_iterate(
&mut self,
z_re: &mut [f32],
z_im: &mut [f32],
c_re: &[f32],
c_im: &[f32],
iterations: &mut [u32],
max_iter: u32,
)
pub fn mandelbrot_iterate( &mut self, z_re: &mut [f32], z_im: &mut [f32], c_re: &[f32], c_im: &[f32], iterations: &mut [u32], max_iter: u32, )
CPU Mandelbrot iteration.
Sourcepub fn julia_iterate(
&mut self,
z_re: &mut [f32],
z_im: &mut [f32],
c_re: f32,
c_im: f32,
iterations: &mut [u32],
max_iter: u32,
)
pub fn julia_iterate( &mut self, z_re: &mut [f32], z_im: &mut [f32], c_re: f32, c_im: f32, iterations: &mut [u32], max_iter: u32, )
CPU Julia set iteration.
Sourcepub fn prefix_sum_exclusive(&mut self, data: &mut [u32])
pub fn prefix_sum_exclusive(&mut self, data: &mut [u32])
CPU prefix sum (exclusive scan).
Sourcepub fn prefix_sum_inclusive(&mut self, data: &mut [u32])
pub fn prefix_sum_inclusive(&mut self, data: &mut [u32])
CPU prefix sum (inclusive scan).
Sourcepub fn radix_sort(&mut self, keys: &mut [u32], values: &mut [u32])
pub fn radix_sort(&mut self, keys: &mut [u32], values: &mut [u32])
CPU radix sort (key-value pairs, ascending).
Sourcepub fn frustum_cull(
&mut self,
positions: &[[f32; 3]],
radii: &[f32],
planes: &[[f32; 4]; 6],
) -> Vec<usize>
pub fn frustum_cull( &mut self, positions: &[[f32; 3]], radii: &[f32], planes: &[[f32; 4]; 6], ) -> Vec<usize>
CPU frustum culling.
Sourcepub fn skin_vertices(
&mut self,
positions: &[[f32; 3]],
normals: &[[f32; 3]],
bone_indices: &[[u32; 4]],
bone_weights: &[[f32; 4]],
bone_matrices: &[[f32; 16]],
inv_bind_matrices: &[[f32; 16]],
out_positions: &mut [[f32; 3]],
out_normals: &mut [[f32; 3]],
)
pub fn skin_vertices( &mut self, positions: &[[f32; 3]], normals: &[[f32; 3]], bone_indices: &[[u32; 4]], bone_weights: &[[f32; 4]], bone_matrices: &[[f32; 16]], inv_bind_matrices: &[[f32; 16]], out_positions: &mut [[f32; 3]], out_normals: &mut [[f32; 3]], )
CPU skinning: transform vertices by bone matrices.
Sourcepub fn fluid_diffuse(
&mut self,
grid: &mut [f32],
scratch: &mut [f32],
width: usize,
height: usize,
diffusion_rate: f32,
dt: f32,
iterations: usize,
)
pub fn fluid_diffuse( &mut self, grid: &mut [f32], scratch: &mut [f32], width: usize, height: usize, diffusion_rate: f32, dt: f32, iterations: usize, )
CPU fluid diffusion (Jacobi iteration).
Sourcepub fn histogram_equalize(
&mut self,
data: &mut [f32],
bin_count: usize,
min_val: f32,
max_val: f32,
)
pub fn histogram_equalize( &mut self, data: &mut [f32], bin_count: usize, min_val: f32, max_val: f32, )
CPU histogram equalization.
Sourcepub fn last_execution_us(&self, name: &str) -> Option<u64>
pub fn last_execution_us(&self, name: &str) -> Option<u64>
Get the last execution time for a named kernel, in microseconds.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for CpuFallback
impl RefUnwindSafe for CpuFallback
impl Send for CpuFallback
impl Sync for CpuFallback
impl Unpin for CpuFallback
impl UnsafeUnpin for CpuFallback
impl UnwindSafe for CpuFallback
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§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.Source§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.