But how well does VXAO handle dynamic scenes? The answer is, quite well. Most of the voxel data can be preserved between frames, unless there are lots of moving objects or the camera moves quickly. And even if no voxel data can be preserved, voxelizing geometry again is not too expensive. Voxelization of a typical, high-detail game scene with a few million triangles can be done in about 3-5 milliseconds on a modern GPU like GeForce GTX 980.
Overall, there are three major passes in the VXAO algorithm: voxelization, voxel post-processing, and cone tracing. Voxelization is performed by rendering the triangle meshes into a 3D texture, and as such, its performance highly depends on the total number of triangles, size of these triangles, and the number of draw calls required to render them. Post-processing combines passes like clearing, filtering and downsampling voxels, and its performance depends on the total number of voxels produced during voxelization. Typical post-processing time is 0.5 – 1.5 ms. And finally, cone tracing is performed in screen space, so its performance depends on the screen resolution, shading rate, and the cone tracing pass in 1080p resolution.
VXAO video memory requirements are not frightening, either. Depending on settings, the voxel textures can take from 6 to 100 MB. Some screen-sized or smaller 2D textures are also used, which can add a few dozen megabytes in very high resolution modes. To compare, VXAO uses 4 or 8 bytes per voxel, and full VXGI adds 24, 48 or 72 bytes to that, so VXGI’s memory requirements are normally around 500 MB and can go up to 7 GB if the highest quality settings are used.
Finally, if you saw the original announcement of VXGI at Maxwell launch, you may think it works only on Maxwell. That's not true. Maxwell does have some useful hardware features, but the only one relevant to VXAO is pass-through geometry shaders, which improve voxelization performance by approximately 30%, and they can be safely replaced with regular geometry shaders. So VXGI in general and VXAO in particular can work on all DX11 class GPUs, including ones made by NVIDIA competitors, but Maxwell GPUs deliver the best performance. It’s not limited to DX11 either: DX12 and OpenGL 4.5 are also supported.