Volumetric Rendering Resources
January 24, 2023
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.
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.
- 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.
- 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.
- 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."
- A presentation from Brian Karis (Engineering Fellow of Graphics @ Epic Games). Detailed discussion on Temporal Anti-Aliasing in Unreal Engine. Brian Karis on Twitter.
- 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
- Artem Kovalovs of Naughty Dog describes the rendering techniques used by the studio in creating Volumetric Fog for The Last of Us: Part Two.
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.
- 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
Gamasutra: Bartlomiej Wronski's Blog - Atmospheric scattering and "volumetric fog" algorithm -- part 1
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
- GDC 2014 presentation on landscape creation and rendering in REDEngine 3 (the in-house engine used at CD Projekt RED). Presented by Marcin Gollent, Senior Programmer at CD Projekt RED. Focused on techniques used in The Witcher 3: Wild Hunt.
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
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
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
- Jasmin Patry (Lead Rendering Engineer at Sucker Punch) describes the graphics techniques used in Ghost of Tsushima. Specifically highlights include atmospherics, parabolic sky textures, and cloud rendering techniques applied in this specific project. Presented at SIGGRAPH 2021's Advances in Real-Time Rendering.
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.
Multiple Render Targets in URP - Unity Forum
UnityMrtTest/MrtTest.shader at master - keijiro/UnityMrtTest
URP ShaderGraph with multiple RenderTargets? - Unity Forum