Skip to content

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.

    Quick Start

  • User Guide


    Learn how to load models, navigate the 3D viewport, and use the interface.

    User Guide

  • W3D Format


    Technical documentation for the Westwood 3D file format.

    W3D Format

  • Architecture


    Dive into the codebase structure and understand how it all fits together.

    Architecture


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.