Volumetric Rendering Resources

November 24, 2022

Overview

This document contains a list of resources, articles, presentations, forum threads, and research papers relating to Sky Rendering, Atmospherics, Volumetric Clouds, Volumetric Lighting, and/or Volumetric Fog. Listed in no particular order. With additional details or summaries appended as we get to them.

Links

Authoring Pseudo Volume Textures

  • A brief review on a method to author 2D Texture Flipbooks as Pseudo Volume Textures in Unreal Engine 4.

Volumetric Light Scattering as a Custom Renderer Feature in URP | raywenderlich.com

  • A detailed tutorial on crafting a "sort of Volumetric" Light Scattering screen shader using Unity's Universal Render Pipeline.

Sebastian Hillaire's Website

  • Sébastien Hillaire is a principal graphics engineer at Epic Games working on Unreal Engine, previously at EA working on Frostbite. He shares various articles and publications relevant to volumetric and atmospheric rendering techniques.

Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite

  • A specific publication from Sébastien Hillaire regarding Frostbite's volumetric sky and cloud rendering techniques, challenges, and solutions.

Physically Based and Scalable Atmospheres in Unreal Engine

  • A detailed presentation from Sébastien Hillaire regarding atmosphere rendering techniques developed on and used in Unreal Engine 4 / 5. Presented at SIGGRAPH 2020, Physically Based Shading in Theory and Practice.

Volumetric Clouds | Unreal Engine Documentation

  • Unreal Engine 4's volumetric cloud documentation. Describes the volumetric cloud controls offered to designers as part of the volumetric clouds included in the engine.

Oz: The Great and Volumetric

  • A brief article by Magnus Wrenninge, Chris Kulla, and Viktor Lundqvist from Sony Pictures Imageworks. The authors describe various volumetric rendering optimizations and techniques, including multiple scattering approximation and efficient traversal of frustrum buffers.

Art-Directable Multiple Volumetric Scattering

  • Another brief article from Magnus Wrenninge, this one relating to an expensive method for computing multiple scattering approximations. In short, Wrenninge samples several random walks from a set of initial scatter points. Referred to as computationally expensive, the method described used 16 bounces @ 256 rays/pixel with a total render time in excess of 60 minutes.

Production Volume Rendering

  • Julian Fong, Magnus Wrenninge, Christohper Kulla, and Ralf Habel publish a detailed 90-page document on production volume rendering for film and animation. Focused on path-tracing techniques. Addresses volume concepts and optimizations.

Optical Properties of Aerosols and Clouds: The Software Package OPAC in: Bulletin of the American Meteorological Society Volume 79 Issue 5 (1998)

  • A sort of introduction to a software package, OPAC. Useful primarily for scientific reference data relating to various clouds, aerosol types, height profiles, etc.

Sky Atmosphere | Unreal Engine Documentation

  • Unreal Engine 4 docs on the engine's built-in sky and atmosphere rendering system. Self described as, "The Sky Atmosphere component in Unreal Engine 4 (UE4) is a physically-based sky and atmosphere-rendering technique. It's flexible enough to create an Earth-like atmosphere with time-of-day featuring sunrise and sunset, or to create extraterrestrial atmospheres of an exotic nature. It also provides an aerial perspective to which you can simulate transitions from ground to sky to outer space with proper planetary curvature."

Temporal AA

  • A presentation from Brian Karis (Engineering Fellow of Graphics @ Epic Games). Detailed discussion on Temporal Anti-Aliasing in Unreal Engine. Brian Karis on Twitter.

Destiny 2 Skybox Clouds

  • Tony Arechiga, a sky and background artist working on Destiny 2, describes various techniques he uses to create skyboxes, specifically working on cloud cards and static time of day systems.

Chapter 13. Volumetric Light Scattering as a Post-Process | NVIDIA Developer

  • A GPU Gems 3 breakdown on creating a post-procesisng effect that simulates volumetric light scattering in screen space. Hightlights are the details on using an occlusion pre-pass as well as caveats and edge cases.

Volumetric Effects of The Last of Us: Part Two | ACM SIGGRAPH 2020 Talks

Multi-Layered Volumetric Clouds - UNIGINE 2.4 - YouTube

  • Unigine 2 Engine is a real-time game development engine specialized in photorealistic graphics. This brief video showcases their multi-layered volumetric cloud rendering solution.

Skybox in Unity on Vimeo

  • Simply a beautiful skybox rendered using Unity. Appears to be 2-dimensional skybox clouds, but the clouds react convincingly to light. Perhaps using some sort of normal or heightmapping?

Intersecting The Atmosphere - Alan Zucconi

  • A primer on ray sphere intersection from Alan Zucconi. Helpful for introductory use cases regarding planet intersection and optical depth sampling.

Ultra Dynamic Sky in Blueprints - UE Marketplace

  • A dynamic sky asset for Unreal Engine 4. Looks great, tons of features. A nice comparative example of dynamic skies in engines outside of Unity.

Nubis Volumetric Clouds - Horizon Zero Dawn - Cloud Rendering, Decima Engine, Geurilla Games

  • On authoring real-time volumetric cloudscapes in Decima Engine (the engine used for Horizon: Zero Dawn, Death Stranding, and Horizon Forbidden West).

Convincing Cloud Rendering, RURIK HÖGFELDT

  • A Master's thesis on real-time dynamic volumetric clouds in Frostbite engine. Describes a technique using ray marching and a combination of Perlin and Worley noises to render dynamic volumetric clouds. Similar to Decima Engine and Unreal Engine approach.

Create nice and feasible volumetric cloud in Unreal Engine 4

  • An example of using Unreal Engine 4 Blueprints to render Volumetric Fog.

The Visual Technology of Gears 5

  • Detailed publication of the technical underpinnings for Gears of War 5 from Colin Penty of The Coalition. Highlights are volume fog, distance field shadows, and lighting.

Low Complexity, High Fidelity: The Rendering of INSIDE - YouTube

  • The classic presentation on INSIDE's rendering systems from GDC 2016. Worth watching. Covers volumetric light sampling algorithms, dithering, AO projections, and more. Presented by Mikkel Gjoel and Mikkel Svendsen of Playdead.

GDC Vault - Low Complexity, High Fidelity - INSIDE Rendering

  • The source slides of INSIDE's rendering talk above.

Ray Marching Fog With Blue Noise « The blog at the bottom of the sea

  • Demonstration of ray marching with blue noise. Examples in Shadertoy. Blue noise is used when conducting a volumetric ray march as a ray start offset.

Pseudo-metaballs with Scriptable Renderer Features in Unity's URP -- Bronson Zgeb

Dobashi's Clouds

Gamasutra: Bartlomiej Wronski's Blog - Atmospheric scattering and "volumetric fog" algorithm -- part 1

Publications | Bart Wronski

keijiro/DepthInverseProjection: An example showing how to inverse-project depth samples into the view/world space in Unity.

Resolved - Proper way to calculate world position ---> depth value - Unity Forum

Coding Adventure: Clouds - YouTube

The Real-time Volumetric Cloudscapes of Horizon: Zero Dawn

Real-time rendering of volumetric clouds

Volumetric Clouds in Unity + Time of Day lighting - YouTube

Unity ShaderGraph Procedural Skybox Tutorial Pt.1 -- Coster-Graphics

Landscape Creation and Rendering in REDEngine 3, Marcin Gollent

GitHub - sebh/TileableVolumeNoise

Getting the Most Out of Noise in UE4 - Unreal Engine

Unity - Manual: Using Depth Textures

DecodeDepthNormal/Linear01Depth/LinearEyeDepth explanations - Unity Forum

My take on shaders: Firewatch multi-colored fog -- Harry Alisavakis

Procedural Skybox - Evan Edwards

FPSSample/CameraMotionVectors.shader at master - Unity-Technologies/FPSSample

yugofujioka/fMotionBlur: Motion Blur for Universal RP (as same as PPSv2)

Graphics/CameraMotionBlur.shader at 354e558f83df16c2155e8725ddb80a875418b84f - Unity-Technologies/Graphics

Depth Aware Upsampling Experiments -- hikiko-blog

Clouds/Clouds.shader at master - SebLague/Clouds

Converting depth values to distances from z-buffer - Unity Forum

Fog - Inigo Quilez

fog.pdf

Checkerboard Filtering

Where is "unity_CameraToWorld" documented? - Unity Forum

Creating a Volumetric Ray Marcher

Volumetric Light Scattering as a Custom Renderer Feature in URP | raywenderlich.com

Interleaved Gradient Noise: A Different Kind of Low Discrepancy Sequence « The blog at the bottom of the sea

Noise Functions

Curl Noise Slides.pdf

WickedEngine/WickedEngine/shaders at master - Kliaxe/WickedEngine

WickedEngine/volumetricCloud_renderCS.hlsl at master - Kliaxe/WickedEngine

sebh/UnrealEngineSkyAtmosphere: Unreal Engine Sky Atmosphere Rendering Technique

Production Ready Atmosphere Rendering

Precomputed Atmospheric Scattering, Eric Bruneton

  • Eric Bruneton presents a new implementation of a method to precompute atmospheric scattering. Atmospheric scattering is performance intensive, so developers often precompute and store the results of the current atmospheric values into a texture. The sky then samples the color values from this texture based on the sky view angle and other parameters in order. Bruneton describes in this document one method to precompute atmospheric scattering phenomena.

Scrawk/Brunetons-Improved-Atmospheric-Scattering: A Unity port of Brunetons improved atmospheric scattering

  • A port of the Precomputed Atmospheric Scattering method described above from Bruneton. This is an implementation of the system in Unity itself, which could be helpful to developers looking to understand more details on the implementation within the context of Unity engine.

Rendering Parametrizable Planetary Atmospheres with Multiple Scattering in Real-Time

  • Oskar Elek of Charles University (Prague) describes a method of precomputing atmospheric scattering to a set of lookup tables (LUTs) used by the fragment shader of the skybox in rendering. An early example of precomputed atmospheric scattering to LUTs. Examples of in-atmosphere and in-space views are provided as well. References Bruneton's Precomputed Atmospheric Scattering publication as well.

Fast Volume Rendering with Spatiotemporal Resampling (restir)

  • This paper from Daqi Lin (University of Utah), Chris Wyman (NVIDIA), and Cem Yuksel (Universal of Utah) describe a volume rendering technique using spatiotemporal resampling to achieve fast volumetrics with dynamic lighting.

Flickering Stars - Colored (Ben Golus)

  • Ben Golus introduces color to a noise-based star rendering technique by leveraging Unity's blackbody ramp algorithm.

Real-Time Samurai Cinema: Lighting, Atmosphere, and Tonemapping in Ghost of Tsushima - YouTube

Creating the Atmospheric World of Red Dead Redemption 2: A Complete and Integrated Solution

Red Dead Redemption 2 - Atmospherics and Clouds

  • Fabian Bauer, Lead Graphics Programmer at Rockstar Games presents a 60-minute talk on the complete and integrated solution for atmospherics in Red Dead Redemption 2. Interesting techniques applied here include essentially combining or integrating the close-range volumetrics in the frustum voxel grid with the long-range volumetrics created by the ray march. He also describes a rendering technique used to ensure accurate and complete depth information is accumulated when conducting checkerboarded volumetric sampling.

Bilateral Edge Detection

Multiple Render Targets in URP - Unity Forum

UnityMrtTest/MrtTest.shader at master - keijiro/UnityMrtTest

URP ShaderGraph with multiple RenderTargets? - Unity Forum

OceanView | ShaderToy

Sun, sky, and clouds | ShaderToy

Read more