I'm interested in how to organize in code (I prefer C++) lighting.Problem is: I have Scene which contains Model where model contains Shader, someTextures and geometry Mesh. Now I want to add Light with the following fields:struct Light{    Vector3f Color;    float AmbientIntensity;    Vector3f Direction;    float DiffuseIntensity;    float SpecularIntensity;    Vector3f Position;};To apply light I need to know the values of this field and the position of the fragment pixel of geometry. This means I need to make a function like Light::lightModel(Model mdl) to get data from Model which I want to light. But also I want to make Light debuggable - show it in the scene like a Model (cube). How can I light all Models and do not light the light itself?  Make two Scenes? Scene<Model> models and Scene<Light> lights and for loop for each like this?   for (const auto& light : lights->data()) {    for (const auto& model : models->data())    {        light->lightModel(model);        model->draw(camera);    }}
How to organize Lights and Models?
opengl;shader;c++;lighting