diff --git a/src/Lights.cpp b/src/Lights.cpp index 35bb116..5122d6b 100644 --- a/src/Lights.cpp +++ b/src/Lights.cpp @@ -16,6 +16,7 @@ int Light::getUBOsize() void Light::upload(UBO& lights_data) { GLuint LightDataSize = sizeof(LightData); // Одного экземпляра структуры LightData + int first = MAX_LIGHTS, last = -1; // Начало и конец диапазона загрузки источников if (count) { @@ -28,12 +29,19 @@ void Light::upload(UBO& lights_data) { lights[i].toData(); // Перевод ноды в данные для шейдера + // Определение диапазона загрузки + if (first > lights[i].index) + first = lights[i].index; + if (last < lights[i].index) + last = lights[i].index; + lights[i].uploadReq = false; // Сброс флага } } - - // Загрузка данных об источниках - lights_data.loadSub(data, sizeof(LightData)*count); + + // Если есть что загрузить (определен диапазон) + if (last > -1) + lights_data.loadSub(data + first, LightDataSize*(last - first +1), LightDataSize*(first)); // Загрузка данных об источниках } // Загружаем кол-во источников