Imagine hiking to a lake on a summer day - sitting under a shady tree and watching the water gleam under the sun.In this scene, the differences between light and shadow are examples of direct and indirect lighting.
The sun shines onto the lake and the trees, making the water look like it's shimmering and the leaves appear bright green. That's direct lighting. And though the trees cast shadows, sunlight still bounces off the ground and other trees, casting light on the shady area around you. That's indirect lighting.
For computer graphics to immerse viewers in photorealistic environments, it's important to accurately simulate the behavior of light to achieve the proper balance of direct and indirect lighting.
What Is Direct and Indirect Lighting? Light shining onto an object is called direct lighting.
It determines the color and quantity of light that reaches a surface from a light source, but ignores all light that may arrive at the surface from any other sources, such as after reflection or refraction. Direct lighting also determines the amount of the light that's absorbed and reflected by the surface itself.
Direct lighting from the sun and sky. Light bouncing off a surface, illuminating other objects is called indirect lighting. It arrives at surfaces from everything except light sources. In other words, indirect lighting determines the color and quantity of all other light that arrives at a surface. Most commonly, indirect light is reflected from one surface onto other surfaces.
Indirect lighting generally tends to be more difficult and expensive to compute than direct lighting. This is because there is a substantially larger number of paths that light can take between the light emitter and the observer.
Direct and indirect lighting in the same setting. What Is Global Illumination? Global illumination is the process of computing the color and quantity of all light both direct and indirect that is on visible surfaces in a scene.
Accurately simulating all types of indirect light is extremely difficult, especially if the scene includes complex materials such as glass, water and shiny metals - or if the scene has scattering in clouds, smoke, fog or other elements known as volumetric media.
As a result, real-time graphics solutions for global illumination are typically limited to computing a subset of the indirect light - commonly for surfaces with diffuse (aka matte) materials.
How Are Direct and Indirect Lighting Computed? Many algorithms can be used for computing direct lighting, all of which have strengths and weaknesses. For example, if the scene has a single light and no shadows, direct illumination is trivial to compute, but it won't look very realistic. On the other hand, when a scene has multiple light sources, processing them all for each surface can become expensive.
To tackle these issues, optimized algorithms and shading techniques were developed, such as deferred or clustered shading. These algorithms reduce the number of surface and light interactions to be computed.
Shadows can be added through a number of techniques, including shadow maps, stencil shadow volumes and ray tracing.
Shadow mapping has two steps. First, the scene is rendered from the light's point of view into a special texture called the shadow map. Then, the shadow map is used to test whether surfaces visible on the screen are also visible from the light's point of view. Shadow maps come with many limitations and artifacts, and quickly become expensive as the number of lights in the scene increases.
Stencil shadows in Doom 3' (2004). Image source: Wikipedia. Stencil shadow volumes are based on extruding scene geometry away from the light, and rendering that extruded geometry into the stencil buffer. The contents of the stencil buffer are then used to determine if a given surface on the screen is in shadow or not. Stencil shadows are always sharp, unnaturally so, but they don't suffer from common shadow map problems.
Until the introduction of NVIDIA RTX technology, ray tracing was too costly to use when computing shadows. Ray tracing is a method of rendering in graphics that simulates the physical behavior of light. Tracing the rays from a surface on the screen to a light allows for the computation of shadows, but this can be challenging if the light comes from one point. And ray-traced shadows can quickly get expensive if there are many lights in the scene.
More efficient sampling methods were developed to reduce the number of rays required to compute soft shadows from multiple lights. One example is an algorithm called ReSTIR, which calculates direct lighting from millions of lights and shadows with ray tracing at interactive frame rates.
Direct illumination and ray-traced shadows created with ReSTIR, compared to a previous algorithm. What Is Path Tracing? For indirect lighting and global illumination, even more methods exist. The most straightforward is called path tracing, where random light paths are simulated for each visible surface. Some of these paths reach lights and contribute to the finished scene, while others do not.
Path tracing is the most accurate method capable of producing results that fully represent lighting in a scene, matching the accuracy of mathematical models for materials and lights. Path tracing can be very expensive to compute, but it's considered the holy grail of real-time graphics.
Comparison of path tracing with a less complete ray-tracing algorithm and rasterization. How Does Direct and Indirect Lighting Affect Graphics? Light map applied to a scene. Image courtesy of Reddit. Direct lighting provides the basic appearance of realism, and indirect lighting makes scenes look richer and more natural.
One way indirect lighting has been used in many video games is through omnipresent ambient light. This type o










