← back

DirectX 12 Weather & Environment System

A real-time weather and environment system built with DirectX 12 and C++, featuring GPU-driven particles, dynamic sky rendering, and procedural clouds.

DirectX 12 Weather & Environment System

Overview

This project implements a modular real-time weather and environment system using DirectX 12 and C++. It focuses on GPU-driven simulation, dynamic lighting, and procedural rendering techniques commonly used in modern open-world engines.

The system integrates sky rendering, weather states, particle simulation, fog, and terrain into a unified pipeline. All major systems are designed to be configurable and driven from the CPU while leveraging the GPU for performance-critical work.

screenshot

Features

  • Dynamic day/night cycle with smooth transitions
  • Procedural sky with sun, moon, and star rendering
  • FBM-based procedural clouds with wind-driven motion
  • Multiple weather types (clear, rain, storm, snow, blizzard)
  • GPU-based particle system (~50,000 particles)
  • Rain rendering with velocity-aligned streaks
  • Snow simulation with randomized drift and de-synchronized spawning
  • Distance and height-based fog
  • Heightmap terrain with player-ground interaction
  • Wind system affecting both particles and clouds

Concepts Demonstrated

  • Direct3D 12 compute pipeline for particle simulation
  • Structured buffers with UAV/SRV access patterns
  • GPU-driven billboarding via vertex shader expansion
  • Procedural noise generation (hash, value noise, FBM)
  • Atmospheric scattering approximations (Mie phase function)
  • Real-time parameter control via constant buffers
  • Resource state transitions and synchronization
  • Camera-relative simulation techniques
  • Modular system design for real-time environments

Requirements

  • Language: C++17 or later
  • Graphics API: DirectX 12
  • IDE: Visual Studio / Visual Studio Code
  • GPU with DirectX 12 support

Technologies

DirectX 12C++Graphics ProgrammingCompute ShadersReal-Time Rendering