Precision of Hardware-Accelerated Trilinear Interpolation

A student I'm currently supervising found an interesting phenomenon on NVIDIA GPUs. When using trilinear interpolation with a 3D texture in Vulkan, the interpolation will not return interpolated values less than 1/2048, even if the texture stores 32-bit floating point values. In the image below, you can see a test case I created where a very small step size is used for volumetric path tracing and …

Fragment Shader Interlock Performance (α Compositing)

Over the last decades, how GPUs can be used radically evolved. In the olden days™, GPUs had specialized units for vertex and fragment processing. Due to multiple reasons, one being that different applications may utilize these different types of units to different degrees, a shift to unified units happened that would perform both vertex and fragment processing. For a more in-depth view on the …

Visualising Conic Sections

In the WebGL canvas in this article, the user can visualize conic sections by altering the coefficients of the formula above the canvas. The conic section is shown for z = 1. Conic sections are defined by the quadratic form ax² + by² + 2cxy + 2dxz + 2eyz + fz² = 0. Aliasing is reduced by implementing rudimentary anisotropic filtering as discussed in …

Geometry Shader-based 2D Shadows

For the lecture Image Synthesis at the TU München, I adapted the two algorithms shadow volumes and shadow mapping for the use in 2D scenes. In the canvas above you can test one of the two algorithms - shadow mapping. At first I implemented the two algorithms using C++ and OpenGL. Both make use of geometry shaders and layered depth maps for performant rendering. However, unfortunately neither of …