diff --git a/src/Lights.cpp b/src/Lights.cpp index dc32e82..35bb116 100644 --- a/src/Lights.cpp +++ b/src/Lights.cpp @@ -18,7 +18,23 @@ void Light::upload(UBO& lights_data) GLuint LightDataSize = sizeof(LightData); // Одного экземпляра структуры LightData if (count) - lights_data.loadSub(data, sizeof(LightData)*count); // Загрузка данных об источниках + { + for (int i = 0; i < MAX_LIGHTS; i++) + { + lights[i].recalcMatrices(); // Пересчитаем матрицы по необходимости (проверка внутри метода) + + // Если требуется загрузка + if (lights[i].uploadReq) + { + lights[i].toData(); // Перевод ноды в данные для шейдера + + lights[i].uploadReq = false; // Сброс флага + } + } + + // Загрузка данных об источниках + lights_data.loadSub(data, sizeof(LightData)*count); + } // Загружаем кол-во источников lights_data.loadSub(&count, sizeof(count), LightDataSize*MAX_LIGHTS);