A blazingly fast GPU-driven voxel rendering engine with procedurally generated worlds and multiplayer support
Features โข Quick Start โข Architecture โข Documentation โข Contributing
Render3D is a cutting-edge voxel rendering engine written in Rust, designed for high-performance, scalable game development. It combines modern GPU rendering techniques with sophisticated procedural generation to deliver an infinite, dynamically generated world reminiscent of sandbox games like Minecraft.
Built on wgpu for cross-platform GPU support (Vulkan, DirectX 12, Metal), Render3D pushes the boundaries of what's possible with voxel rendering through:
- ๐ GPU-Driven Rendering Pipeline - Indirect drawing with compute shader culling
- ๐ Infinite Procedural Worlds - 11 biomes with caves, ore, and structures
- ๐ Multiplayer Architecture - Authoritative server with client prediction
- โก Extreme Performance - Optimized for high-end rendering loads
- ๐จ Advanced Visuals - CSM shadows, water simulation, atmospheric effects
Tested on windows 11, might not work on windows 10. You can clone repo and try complinig game on linux and/or macOS. Game may need up to 5 minutes to compile shaders and start game. Game based on Vulkan api recommended!
2026-03-09.19-19-56.mp4
| Feature | Details |
|---|---|
| Graphics API | wgpu - Universal GPU abstraction layer |
| Rendering Method | GPU-driven with indirect dispatch and compute culling |
| Vertex Buffers | Unified buffers (560MB capacity) with sub-allocation |
| Shadows | 4-cascade CSM with PCF filtering (up to 2048ร2048) |
| Effects | Water physics, bloom, god rays, atmospheric scattering |
| Culling | CPU AABB + GPU frustum culling for optimal performance |
Technical Highlights:
- Indirect Drawing: Single
draw_indirectcall for entire terrain - Greedy Meshing: Automatic face merging reduces geometry by 75%+
- Zero-Copy Uploads: Lock-free async mesh generation to GPU
- Compute Shaders: Pre-draw visibility pass eliminates hidden geometry
| Feature | Details |
|---|---|
| Terrain | FBM Perlin noise with dynamic height variation |
| Biomes | 11 unique biomes (Plains, Mountains, Deserts, Oceans, etc.) |
| Caves | "Cheese" and "Spaghetti" patterns for natural cave systems |
| Ores & Blocks | Deterministic procedural placement |
| Structures | Trees, vegetation, and procedural features |
| Height | 256 blocks (16 subchunks ร 16 blocks) |
Generation Pipeline:
- Multi-threaded async generation (FastNoise-Lite)
- Deterministic seeding (same seed = same world)
- Mesh building decoupled from rendering loop
| Feature | Details |
|---|---|
| Architecture | Authoritative server with client-side prediction |
| Protocols | QUIC (reliable) + UDP (real-time) hybrid stack |
| State Sync | Delta compression for chunks and entities |
| Latency Handling | Client movement prediction & reconciliation |
- Rust 1.70+ - Install from rustup.rs
- GPU Support - Vulkan 1.2+, DirectX 12, or Metal
- OS: Windows, Linux, macOS
# Clone repository
git clone https://github.com/B4rtekk1/Render3D.git
cd render3d
# Build (release mode recommended for performance)
cargo build --release
# Run the engine
cargo run --release
# Run in debug mode (slower, useful for development)
cargo runUpon startup, the engine will:
- Initialize GPU device and surfaces
- Generate initial world chunks
- Load textures and shaders
- Display main menu
Use the menu to create a new world or connect to a server.
WASD โ Move around
SPACE โ Jump
SHIFT โ Sprint (hold)
MOUSE โ Look around
LEFT CLICK โ Place/Destroy block
RIGHT CLICK โ Interact
ESC โ Pause menu
F1 โ Toggle UI
F3 โ Debug info
| Constant | Default | Purpose |
|---|---|---|
RENDER_DISTANCE |
10 | Chunks to load around player |
WORLD_HEIGHT |
256 | Maximum build height |
CHUNK_SIZE |
16 | Horizontal chunk dimension |
SUBCHUNK_HEIGHT |
16 | Vertical subchunk size |
CSM_CASCADE_COUNT |
4 | Shadow cascades |
CSM_SHADOW_MAP_SIZE |
2048 | Shadow texture resolution |
MAX_CHUNKS_PER_FRAME |
4 | Mesh uploads/frame limit |
Input Processing
โ
Game State Update
โ
Chunk Generation/Loading
โ
Mesh Building (Worker Threads)
โ
GPU Buffer Uploads
โ
Frustum Culling (Compute Shader)
โ
[Shadow Pass] โ [Terrain Pass] โ [Water Pass] โ [Composite] โ [UI]
โ
Present to Screen
Unified Vertex Buffer
[Chunk 0] [Chunk 1] [Chunk 2] ... [Max 10M vertices]
Unified Index Buffer
[Chunk 0] [Chunk 1] [Chunk 2] ... [Max 256M indices]
Indirect Buffer (Draw Commands)
[DrawIndirectArgs ร Num Active Chunks]
โ
[Compute Shader Culls Invisible Chunks]
โ
[GPU Executes Surviving Commands]
World (Infinite)
โโ Chunk [16ร16 horizontal]
โโ SubChunk 0-15 [16ร16ร16 voxels each]
โ โโ Voxel (Block data)
โโ Metadata (Mesh status, AABBs)
| Technique | Benefit |
|---|---|
| Indirect Dispatch | Single GPU call instead of thousands |
| Greedy Meshing | 75%+ reduction in triangle count |
| Compute Culling | Invisible geometry skipped entirely |
| Async Generation | No frame drops during world exploration |
| Zero-Copy Uploads | Direct memory mapping to GPU |
For detailed folder documentation, see FOLDER_STRUCTURE.md
Core Modules:
src/app/- Application loop, window, and inputsrc/core/- Block/chunk/biome data structuressrc/render/- Rendering pipeline and GPU managementsrc/world/- Procedural generation and chunk loadingsrc/multiplayer/- Networking and server/client logicsrc/player/- Camera and character controllersrc/ui/- Menu and HUD renderingassets/- Textures, fonts, and configuration
# Debug build (fast compilation, slower runtime)
cargo build
# Release build (slow compilation, optimized runtime)
cargo build --release
# With verbose output
RUST_LOG=debug cargo run --release
# Run tests
cargo test --releaseKey libraries used:
- wgpu (28.0) - GPU rendering
- winit (0.29) - Window/input handling
- tokio (1.40) - Async runtime
- quinn (0.11) - QUIC networking
- fastnoise-lite (1.1) - Procedural generation
- glyphon (0.10) - Text rendering
- cgmath (0.18) - Linear algebra
See Cargo.toml for complete dependency list.
- FOLDER_STRUCTURE.md - Detailed project organization
- DEVELOPMENT.md - Development guidelines
- DOCUMENTATION_MAP.md - Doc index
Key Topics:
- Rendering system architecture
- Procedural generation algorithms
- Networking protocol specification
- Performance optimization techniques
- GPU memory management
- โ GPU-driven rendering pipeline
- โ Procedural world generation
- โ Multiplayer networking framework
- โ Shadow mapping system
- ๐ Inventory and crafting systems
- ๐ Advanced terrain features (rivers, biome blending)
- ๐ Particle systems and effects
- ๐ Performance profiling tools
- ๐ Mod support framework
- ๐ฏ GPU path tracing for ray-traced lighting
- ๐ฏ Voxel cone tracing for global illumination
- ๐ฏ Streaming world format (larger than RAM)
- ๐ฏ Advanced network compression
- ๐ฏ Server administration tools
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes with clear messages
- Push to your fork
- Submit a Pull Request
- Run
cargo fmtbefore committing (code style) - Use
cargo clippy --releaseto check for issues - Keep PRs focused on a single feature
- Update documentation when changing APIs
- Test on both debug and release builds
Target Specifications (Release Build)
| Metric | Target |
|---|---|
| FPS | 200+ (RTX 3050 4GB @ 1080p) |
| Memory | < 0.5GB (with render distance 12) |
| GPU Memory | ~1.5GB |
| Chunk Load Time | < 6ms |
| Frame Time | 4-7ms |
Performance varies by hardware and settings.
- Issues: Report bugs on GitHub Issues
- Discussions: Join GitHub Discussions
- Email: Contact via project repository
- wgpu team - For excellent GPU abstraction
- Minecraft - For inspiring voxel-based design
- Rust community - For amazing ecosystem
- Dynamic Light sources: Torch and lantern support with propagation.
- Entity System: Passive mobs and enemy AI.
- Inventory UI: Drag-and-drop item management.
- Modding API: Wasm-based plugin system.
- Post-Processing: TAA (Temporal Anti-Aliasing) and Motion Blur.
This project is licensed under the MIT License. See the LICENSE file for details.