There are two kinds of shadows in games. “Shadows” and “Ambient Occlusion”. The latter refers to the ambient shadows that exist in crevices, edges, and surfaces hidden from the sun. It’s a form of global illumination or indirect lighting. The casting object and the shadow often overlap here. The primarily ambient occlusion technique is Screen Space Ambient Occlusion and its improved variant Horizontal Based Ambient Occlusion.
There are also newer GI techniques such as SVOGI, VXAO, and ray-traced GI but those are still fairly rare. If you do want to know about them, just remember that voxels (3D triangles) form the basis of VXAO/SVOGI while ray-tracing is used for the latter. Here’s how a voxel is formed from a triangle:
Global Illumination is a form of ambient occlusion which is usually more accurate than SSAO and its derivatives. It dramatically increases the number of light sources in a scene by assuming that every object which is capable of reflecting light can act like one. As such, this results in a better lit scene where light is bounced off the different objects (indirect or diffuse lighting) illuminating points that standard AO would have otherwise missed.
What is Global Illumination?
In simple words, Global Illumination is the process of lighting or illuminating a scene by calculating the light emitted by luminant sources on and off the screen (by approximations or tracing its path). With ray and path-tracing, the light rays from these sources are cast and they intersect various objects in the scene, thereby illuminating them. The rays will behave differently depending on the nature of the objects encountered. For example, glossy (shiny) objects will reflect the ray, while opaque ones will simply block it and redirect it somewhere else. This redirection of light rays by objects in different directions is known as indirect or diffuse lighting, while the redirected rays are called diffuse rays.
Ray Traced Global Illumination (RTGI)
These indirect or diffuse rays then act as newly cast rays, further crashing into other objects and illuminating the scene in the process, with the object redirecting them basically acting as a light source. After the ray (after multiple bounces/intersections/reflections) finally reaches the camera (your eyes), the information gathered by it is used to determine the lighting of the scene, in the sections of the scene traversed by the ray. For example, if the ray was reflected by a mirror/puddle or any other transparent object, then a reflection of the surrounding traversed geometry will be cast.
On the other hand, if the ray was blocked and reflected by an opaque/semi-opaque object, it’ll cast a shadow. Furthermore, it’ll light up the subsequent areas with a color depending on the degree of reflection. A complete reflection results in white light, while a partial reflection will result in colored light, depending on the color of the reflecting object. Generally, red, green, and blue objects reflect light rays of the same color. The effect is even more pronounced if there’s refraction. In most cases, the color of the ray is determined by the color of the pixel reflecting it.
RTVGI (Real-Time Voxel-Based Global Illumination) and Sparse Voxel Octree Global Illumination (SVOGI) are some notable examples of GI. You can read more about it here. SSAO and HBAO are rough hacks that calculate (using an integral) where the light will penetrate and which areas will be shadowed. It’s an approximation rather than the actual thing. Here is a look at global illumination
Level of Detail (LOD)
The level of detail sets the object complexity and the in-game distance (from the camera) after which objects lose detail (or get blurred). It is often dubbed as environmental quality, terrain detail, game detail, rendering quality, or some other related term in games for simplicity.
It affects the mesh quality of objects which actually just refers to the number of polygons rendered per object and in turn, the draw calls the CPU will need to send. As a result, a game with rich levels of detail will require a powerful CPU as well as a capable GPU.
Texture detail is like LOD except, no rendering happens here. These are the pre-baked textures that get loaded onto your graphics card’s VRAM and act as the skins of the in-game objects (meshes). The more detailed the textures, the more realistic will they look and accordingly consume more memory.
Continued on the next page…