The Rendering Equation

This week completes 1 year since the first time I saw the rendering equation that is, arguably, one of the most important equations in computer graphics.

$$ L_0(\pmb{x}, \hat{\omega_0}) = L_e(\pmb{x}, \hat{\omega_0}) + \int_{\Omega}^{}L_i(\pmb{x}, \hat{\omega_i})f_r(\pmb{x}, \hat{\omega_i}, \hat{\omega_0})\mid\hat{\omega_i}\cdot\hat{n}\mid d\omega_i $$

Every physically based rendering system try to solve this equation to render the scene, generating a very realistic image. Breaking it in parts, we have:

$ L_0(\pmb{x}, \hat{\omega_0}) $ is the light $ L_0 $ coming from the point $ \pmb{x} $ to the direction $ \hat{\omega_0} $

The first element $ L_e(\pmb{x}, \hat{\omega_0}) $ is the emmited light $ L_e $ coming from the point $ \pmb{x} $ to the direction $ \hat{\omega_0} $. This is useful in the case of existing a light source in the analyzed location emmiting light to the view point.

The second element

$$ \int_{\Omega}^{}L_i(\pmb{x}, \hat{\omega_i})f_r(\pmb{x}, \hat{\omega_i}, \hat{\omega_0})\mid\hat{\omega_i}\cdot\hat{n})\mid d\omega_i $$

is the surface integral over all the directions $ \hat{\omega_i} $ of the unit sphere $ \Omega $ with center in $ \pmb{x} $. So, for every direction $ \hat{\omega_i} $, this integral is calculating:

$$ L_i(\pmb{x}, \hat{\omega_i})f_r(\pmb{x}, \hat{\omega_i}, \hat{\omega_0})\mid\hat{\omega_i}\cdot\hat{n}\mid $$

Where $ L_i(\pmb{x}, \hat{\omega_i}) $ is the amount of light arriving at $ \pmb{x} $ from $ \hat{\omega_i} $ direction.

The $ f_r(\pmb{x}, \hat{\omega_i}, \hat{\omega_0}) $ is the Bidirectional Reflectance Distribution Function or BRDF. The BRDF is a per material function that says, basically, how much light is reflected from $ \hat{\omega_i} $ to $ \hat{\omega_0} $.

And finally, the $ \mid \hat{\omega_i}\cdot\hat{n} \mid $ is a geometric term, called Lambert term, where $ \hat{n} $ is the surface normal at the point $ \pmb{x} $. This term serves to magnify the amount of light reaching from $ \omega_i $ to $ \pmb{x} $ based on the angle between both $ \omega_i $ and $ \hat{n} $ directions.

Of course, the implementation of a physically based renderer can’t actually solve this equation. Instead, it approximates the equation using a method like Ray Tracing or Path Tracing to converge the final image into a realistic result.