This project implements volumetric participating media rendering using Disney's Photon Beam algorithm and traditional Photon Mapping, fully utilizing DirectX12 and NVIDIA RTX features. It forms part of my graphics programming portfolio, showcasing advanced global illumination techniques in real-time rendering.
🔗 YouTube Showcase (DirectX12)
Beam and Sruface Photon
Surface Photon Only
Beam Only
Beam and Photon Sampling Visualization
Different Parameter Effects - Adjusting scattering coefficient, extinct coefficient and HG symmetric factor
-
DirectX12 Implementation (This Repository)
https://github.com/donguklim/DirectX12PhotonBeam -
Vulkan Implementation (Based on NVIDIA Ray-Tracing Tutorial)
https://github.com/donguklim/vk_raytracing_tutorial_KHR/tree/master/photon_beam
- Simulates photon interactions on surfaces via ray tracing.
- Stores radiance sampled from photon hits on surfaces.
- Simulates photon beams through participating media like air.
- Samples scattering and extinction based on beam paths and density.
- Produces realistic volumetric lighting effects.
| Mode | Scattering Direction |
|---|---|
| Uniform | Evenly scattered in all directions |
| Forward | Scattered near beam’s previous direction |
| Backward | Scattered opposite to the beam’s direction |
- Light reflection is controlled by random seed updates.
- To avoid flickering, linear interpolation blends two seed-based frames.
- Adjusting seed interval simulates underwater wave-like effects.
🎞️ Example of dynamic lighting:
Jump to 20:00 in demo video
-
- Jensen, Henrik. (2001). A Practical Guide to Global Illumination using Photon Maps.
-
- Derek Nowrouzezahrai, Jared Johnson, Andrew Selle, Dylan Lacewell, Michael Kaschalk, Wojciech Jarosz. A programmable system for artistic volumetric lighting. ACM Transactions on Graphics (Proceedings of SIGGRAPH), 30(4):29:1–29:8, August 2011.
- Wojciech Jarosz, Derek Nowrouzezahrai, Iman Sadeghi, Henrik Wann Jensen. A comprehensive theory of volumetric radiance estimation using photon points and beams. ACM Transactions on Graphics (Presented at SIGGRAPH), 30(1):5:1–5:19, January 2011.
-
"Introduction to 3D Game Programming with DirectX 12" book - Sample codes in
Commonfolder.- Common/ - The original codes have been modified.
-
tiny gltf -
stb_image.h,stb_image_write.h,json.hpp,tiny_gltf.h -
Microsoft DirectX Samples - DirectXRaytracingHelper.h DXSampleHelper.h
- Specular surfaces are handled using plain ray tracing, as photon techniques are insufficient in those cases.
- Parameters such as light hue, intensity, and air murkiness control the scattering visuals and beam density.
For more rendering and simulation projects, check out my main portfolio repository:
🔗 Graphics Portfolio





