Resident Evil Village launched a few days back on PC and consoles to a mixed response from critics. Be that as it may, the game looks pretty good and runs even better. However, the ray-tracing aspect of it is a matter of debate. Many reviewers are calling it “one of the best ray-traced games yet” while others are calling it a “perfect PC port“. While both those claims are partially true, Village is far from being the best implementation of ray-tracing on the platform. In this post, we have a look at how ray-tracing improves the image quality of the game and how much of a performance hit it incurs. We’ll analyze AMD’s FidelityFX Combined Adaptive Compute Ambient Occlusion (CACAO) algorithm and see how it compares to vanilla SSAO.
Resident Evil Village features RTGI (ray-traced global illumination), RTAO (ray-traced ambient occlusion) as well as ray-traced reflections (although these are more or less irrelevant in this game). RTGI is a global illumination (lighting) algorithm that calculates the diffuse lighting in the scene (indirect lighting/rays that light objects after already being reflected once) as well as direct illumination due to the sun, sky, or a light source.
Traditional lighting shaders don’t account for the illumination due to light that penetrates a scene after being reflected once. This is known as indirect lighting or diffuse lighting and tends to be quite intensive due to its recursive nature. Till now, it’s been implemented using voxelization and ray-tracing. There are other methods as well but they aren’t as effective. RTGI is the most accurate as it essentially mimics the natural global illumination phenomena.
Resident Evil Village Ray Tracing on vs Off: Image Comparisons
Here’s a comparison of standard SSAO vs RTGI vs RTGI + RTAO vs CACAO. Keep in mind that SSAO and CACAO can only be enabled when ray-tracing is turned off. With RTGI enabled, the glass containers on the cupboard reflect light (rough specular). Upon turning AO off, the scene becomes slightly darker as light occlusion comes into play. However, by looking at the comparison, it seems like this is a very low-grade implementation of ray-traced AO. The number of rays dedicated to it is likely much less than one per pixel. Try opening the two pictures in different browser tabs and then switching between them if you can’t tell the difference below. 4K shots are attacked at the end of the post.
The reflection in the puddle (again, pretty low ray-count), as well as specular lighting, disappears when you disable RTGI. Although SSAO is able to handle ambient shading fairly well and CACAO making it even better, neither can account for illumination caused by indirect light rays. Only a few containers on the upper shelves are visible with standard SSAO.
Another important aspect to note here is that the quality (and performance) impact of ray-traced GI will mainly be notable when there are multiple light sources in or around the scene. If the screen is dark with only one light source, then there will be almost no difference between RTGI and SSAO. Take the above and belowexamples:
The reason is that since there is only one light source in the scene very few rays are being cast which minimizes the impact of ray-traced global illumination. Furthermore, the fact that the number of light bounces being utilized here is limited and the number of rays per scene is already low makes it even worse. At the same time, considering the relatively mild performance hit of implementing both RTGI and RTAO, it’s fairly effective in scenes with multiple light sources:
The upper image is with SSAO while the below image shows RTGI in action. The latter is clearly more accurate as it manages to demonstrate the illumination due to the lamp while the former completely misses it. The knife is also more accurately illuminated. Another interesting bit is the ray-traced ambient occlusion:
In scenes like these with multiple light sources (windows), RTGI makes a world of difference, and SSAO is far from being comparable despite the relatively low ray count dedicated to it in the game:
Continued on the next page…