Light & Rendering Maths

Rendering equations are a mathematical representation for an amount of light emitting from a point along a specific viewing direction. (That is a fancy way of saying how a light-beam moves in space and bumps from surfaces.)

The equations root to light pyhsics in a straight-forward manner: due to energy conservation, no ‘light is lost’ – thus, calculating its distribution is fairly (?) simple.

Bidirectional reflectance distribution functions (BRDF) define how light is reflected at an opaque – that is, ‘normal’, tangible, not-all-absorbing – surface. That is, how light behaves when confronting an obstacle.

Image result for brdf image

As the example from  Coding Labs  suggests, a way of modelling the behaviour of light is making a distinction between diffuse reflection and specular reflection. “The idea is that the material we are simulating reflects a certain amount of light in all directions and another amount in a specular way (like a mirror).

However, re-constructing these phenomena of light that are “obvious” in the real world, is  is a tardy process in the world of 3D graphics. Namely, simulated lights do not automatically cast shadows. And, even if an object itself may be shiny and nicely lit, it likely won’t reflect the scene around it. Reflections have to be made either manually or with computer assistance.

Image result for minecraft water

 

As an example, the sky is blue and so is the water in Minecraft, but it doesn’t reflect land objects. Though, this is likely done on purpose – no reflection is much less rendering, obviously.

Taking a swing in the maths behind 3D graphs leads immediately to matrices – as those are the way of representing an object moving from point A to point B in a linear way.

Image result for matrix transformation 3d graphics

This video (~ 10 minutes) opens the foundational mathematics thoroughly yet very visually.  If you’d like the fast-lane, this is a compact representation.

 

 

 

We’ll finish with this sweet-bite: a 12-minute video covering many of the key topics of the 3D game industry domain, e.g. scanline-rendering, anti-aliasing, rendering algotirhms – and shading. I enojoyed & learned a lot!