Contrasting differences are the very essence of existence, as the yin-yang symbol properly illustrates. Light and darkness are opposites, yet complementary, as they offset one another and give meaning through variety. Without darkness there can be no light, as they are never truly separate. By breathing light into our world, we are inevitably forced to add back the darkness that it creates. Let's follow the previous chapter and truly complete to our lighting engine by reintroducing the concept of darkness to it.
In this chapter, we will be covering the following topics:
Using OpenGL to render to and sample from cubemap textures
Advanced shadow mapping for omni-directional point lights
The use of Percentage Closer Filtering to smooth out shadow edges
Combating common and frustrating issues with shadow mapping
There's quite a bit of theory to get out of the way, so let's get to it!