Currently, the volume resolution of each mipmap texture is 2n+1. This ugly number was chosen because it was implemented using 3x3x3 Gaussian kernel.
However, I think that choosing 3x3x3 Gaussian kernel was a poor decision. I suspect that the 2n+1 resolution doesn't fit nicely on the GPU memory architecture, which may impact GPU read/write performance.
Instead, we can perform mipmap filtering using 4x4x4 Gaussian kernel on light texture with the resolution of 2n. Beside fitting nicely on GPU memory, we can also divide the compute shader thread groups equally. Voila!
Currently, the volume resolution of each mipmap texture is 2n+1. This ugly number was chosen because it was implemented using 3x3x3 Gaussian kernel.
However, I think that choosing 3x3x3 Gaussian kernel was a poor decision. I suspect that the 2n+1 resolution doesn't fit nicely on the GPU memory architecture, which may impact GPU read/write performance.
Instead, we can perform mipmap filtering using 4x4x4 Gaussian kernel on light texture with the resolution of 2n. Beside fitting nicely on GPU memory, we can also divide the compute shader thread groups equally. Voila!