Managing light input
Good data organization is important in every aspect of software design. It's hard to imagine an application that would run quickly and efficiently, yet wants have a strong, powerful, and flexible framework running in the backend. Our situation up until this point has been fairly manageable, but imagine you want to draw additional textures for the map, entities, and all your particles. This would quickly become tiresome to deal with and maintain. It's time to utilize our engineering ingenuity and come up with a better system.
Interface for light users
First and foremost, each class that desires to use our lighting engine would need to implement their own version of drawing certain types of textures to the buffer(s). For diffuse maps, we already have the plain old regular Draw
calls, but even if they are all lucky enough to have the same signature, that's not good enough. A common interface for these classes is needed in order to make them a successful part of the lighting...