Sample to demonstrate different ways to render a transparent 3D model.
Initial algorithm: Order Independent Transparency with Dual Depth Peeling (Bavoil and Myers 2008).
- OpenGL 4.4: Binary Space Partitioning (BSP) Tree with persistent mapped buffer
- Still work in progress since the NVidia dragon take days to build
- OpenGL 4.3: Sorted Linked List
- OpenGL 4.2: Sorted A-Buffer (Image Load Store)
- OpenGL 2 and 3.3 (initial NVidia sample):
- Dual Depth Peeling
- Front-to-Back Peeling
- Weighted Average
- Weighted Sum
- https://developer.download.nvidia.com/SDK/10/opengl/screenshots/samples/dual_depth_peeling.html
- https://developer.nvidia.com/content/transparency-or-translucency-rendering
- DualDepthPeeling.pdf
- OrderIndependentTransparency.pdf
- OrderIndependentTransparency-4.X.pdf
- GLEW: To load OpenGL symbols
- FreeGLUT: To create OpenGL context
- GLM: To manage OpenGL geometries
- Open Asset Import Library: To load the 3D NVidia dragon mesh
- FreeType: To create text glyph to render in OpenGL
- CMakeRC: To embed shader resources
All dependencies can be install by vcpkg with vcpkg install
or during the CMake configuration by setting VCPKG_ROOT=[path/to/vcpkg]
and PATH="$PATH:$VCPKG_ROOT"
environment variable. See https://learn.microsoft.com/fr-fr/vcpkg/get_started/get-started.