nexus_mpm3d 0.5.0

Cross-platform 3D GPU-accelerated MPM physics.
pub use crate::mpm_shaders::solver::params::SimulationParams;
use khal::BufferUsages;
use khal::backend::{GpuBackend, GpuBackendError};
use vortx::tensor::Tensor;

/// GPU-resident simulation parameters.
pub struct GpuSimulationParams {
    /// Uniform buffer containing simulation parameters.
    pub params: Tensor<SimulationParams>,
}

impl GpuSimulationParams {
    /// Uploads simulation parameters to GPU memory.
    pub fn new(backend: &GpuBackend, params: SimulationParams) -> Result<Self, GpuBackendError> {
        Ok(Self {
            params: Tensor::scalar(
                backend,
                params,
                BufferUsages::UNIFORM | BufferUsages::COPY_DST,
            )?,
        })
    }
}