$ show ArthurBrussee/brush
Brush is a 3D Gaussian Splatting engine for real-time rendering and training of 3D scenes from multi-view images. It features a modular Rust workspace architecture with applications for desktop GUI (eframe/egui), headless CLI, C FFI, and WebAssembly (web). The system loads datasets (COLMAP, Nerfstudio, RealityCapture), initializes and optimizes Gaussian splats via gradient descent using the Burn tensor library for autodiff, and renders via a wgpu-based rasterization pipeline. Key innovations include a GPU-accelerated radix sort for depth ordering, an actor model for async processing, and a virtual file system for cross-platform file access.
The LLM identified 5 files worth highlighting for reuse:
A GPU-accelerated radix sort implementation in WGSL for wgpu, optimized for sorting Gaussian splats by depth during rendering. It uses 4-bit passes and shared memory for efficiency. The crate is self-contained (only depends on wgpu types and brush-cube for math) and could be extracted for any wgpu-based sorting need. Demonstrates non-obvious skill in GPU parallel sort optimization.
Implements an actor model for asynchronous execution using message passing between hosts and workers. It provides a clean abstraction for offloading work (like rendering or training steps) to separate threads or WASM workers, with message routing and handling. The crate has minimal dependencies (only parking_lot and crossbeam-channel for sync primitives) and could be used in any Rust project needing an actor model. Shows skill in designing a safe, extensible async framework.
A virtual file system that abstracts over native disk, in-memory, and WASM file access. It provides a unified async interface for reading files, handling the complexities of WASM (using fsync and web APIs) and native std::fs. The crate is isolated (depends only on async-trait and wasm-bindgen conditionally) and could be extracted for any cross-platform file access need. Demonstrates skill in handling platform-specific file system differences with a clean trait-based interface.
Implements the evaluation of Spherical Harmonics (SH) for color and their vector-Jacobian products (VJPs) for backward pass in the rendering pipeline. The kernels are written in Rust for Burn tensor operations and handle arbitrary SH degrees. This component is somewhat coupled to the render crate but the SH math is self-contained and could be adapted for other GPU autodiff frameworks. Shows non-obvious skill in deriving and implementing SH VJPs for efficient gradient computation.
A set of format-specific loaders (COLMAP, Nerfstudio, RealityCapture) that share a common trait (SceneLoader). Each format is implemented in its own file, making it easy to add new formats. The loader abstraction is isolated from the rest of the dataset crate and could be used in any project needing to load multi-view scene data. Demonstrates skill in designing an extensible plugin system for data formats.