A high-performance Rust application that demonstrates real-time 3D graphics with particle effects on an ESP32-S3 microcontroller, achieving 50-60 FPS on an RM67162 AMOLED display with touch input capabilities.
- Interactive 3D wireframe cube with dual control:
- Automatic quaternion-based rotation
- Touch-based gesture control (drag to rotate)
- 3D particle system with 200 particles:
- Physics-based bouncing within cube boundaries
- Random vibrant colors
- Full 3D rotation synchronized with cube
- Tile-based rendering with horizontal batching
- Double-buffered rendering with selective clearing
- Hardware-accelerated DMA transfers at 80 MHz SPI
- Real-time FPS counter
- 50-60 FPS (3.5× improvement over baseline)
- ~85% reduction in data transfer per frame (257KB → 40-80KB)
- DMA transfer optimization through horizontal tile batching
- ESP32-S3 microcontroller (240 MHz)
- RM67162 AMOLED display (536×240 pixels)
- CST816S touch controller
- PSRAM for framebuffers
-
Set up ESP32 Rust environment:
. ~/export-esp.sh
-
Build and flash:
cargo run --release
- Automatic Rotation: Cube continuously rotates around the Y-axis
- Touch Gesture: Touch and drag to rotate the cube interactively
For detailed architecture, build instructions, and modification patterns, see CLAUDE.md.
This project is licensed under the MIT License. See the LICENSE file for details.