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 pixels are set to red if the hardware-accelerated trilinear interpolation is zero while the manually performed trilinear interpolation is larger than zero. I wanted to share this here in this post in case someone else will ever be confronted with a similar problem and can't figure out what the source of the problem is.