Mastering Fog Rendering in OpenGL: Adding Depth and Atmosphere to Your Graphics (part 1/2)