VulkanW3DViewer¶
Modern Vulkan-based renderer for W3D format files from Command & Conquer Generals
-
Getting Started
Install dependencies, build the project, and run your first model in minutes.
-
User Guide
Learn how to load models, navigate the 3D viewport, and use the interface.
-
W3D Format
Technical documentation for the Westwood 3D file format.
-
Architecture
Dive into the codebase structure and understand how it all fits together.
Overview¶
VulkanW3DViewer is a high-performance 3D model viewer designed to load and render W3D format files used in Command & Conquer: Generals. The project leverages modern Vulkan 1.3+ features including dynamic rendering, providing a reference implementation for parsing and displaying:
- Meshes with full material and texture support
- Skeletal hierarchies and bone structures
- Animations with real-time playback
- Hierarchical LOD (HLod) with dynamic level switching
Disclaimer
EA has not endorsed and does not support this product. All rights go to their respective owners.
Features¶
- Modern Vulkan Rendering - Uses Vulkan 1.3+ with dynamic rendering (no VkRenderPass)
- Complete W3D Support - Meshes, hierarchies, animations, and HLod
- Real-time Animation - Smooth skeletal animation playback
- Texture Support - Automatic texture loading with custom path support
- Debug Visualization - Skeleton rendering and model inspection
- Cross-platform - Windows, Linux, macOS support
Requirements¶
| Component | Requirement |
|---|---|
| GPU | Vulkan 1.3+ support |
| Vulkan SDK | 1.3 or later |
| CMake | 3.20 or later |
| Compiler | C++20 (Clang recommended) |
Quick Example¶
# Clone with submodules
git clone --recursive https://github.com/ViTeXFTW/VulkanW3DViewer.git
cd VulkanW3DViewer
# Build (Linux/macOS)
./scripts/rebuild.sh release
# Run with a model
./build/release/VulkanW3DViewer model.w3d
Development Status¶
All core phases are complete:
| Phase | Description |
|---|---|
| Vulkan foundation - device, swapchain, pipeline | |
| W3D file parsing - chunk reader, data structures | |
| Static mesh rendering with viewer controls | |
| Hierarchy/pose with bone matrices | |
| HLod assembly with LOD switching | |
| Materials with texture support | |
| Animation loading and playback | |
| Skeletal animation rendering |
License¶
This project is licensed under the MIT License.