Дошли наконец-то руки немного уделить времени. Ну и естественно - надо скомпилить ЧАЭС. Потому что, если движок не сможет переваривать такие локации и делать это достаточно быстро - под сомнение ставится целесообразность его разработки. Итак, с матами, перекурами, превышениями лимита памяти, но я всё-таки это скомпилил.
4480438 total traces casted, 3140144 luxels illuminated
8
total lightmap pages 71
9
CreateLightmapPages: 121.817964 secs
Особый цымес - сортировка лайтмап по атласам заняла 2 минуты (из-за алгоритма с деревом, Кармаковский бы справился за пару секунд, но не так плотно), построение KD-tree заняло почти минуту. И цельных 14 секунд - собственно освещение. Не, ну трасса хорошая, я еще в том году говорил.
Я уже говорил, что материалы состоят из нескольких частей и дефолтная часть имеет название по типу модели. С пересмотром концепции это утратило актуальность. Связка должна быть по формату описания вертекса, а сам формат вертекса будет плавающий, свободный.
Добавлено 28-08-2020 в 22:39:
Пока я тут изучал, как эффективнее внедрить этот механизм, мне в голову пришла одна идея, естественным образом дополняющая мою систему материалов. Поясню. На данный момент, механизм является Data-Driven процентов на 80. Что это значит? А это значит, к примеру, что если у нас в шейдере объявлен какой либо юниформ, но при этом не используется, то после компиляции шейдера, его локация будет равна -1. И в списке внешних данных он попросту не появится - т.е. эти данные не будут подготовлены движком и как следствие - не будут отнимать время на бесполезные рассчёты. На первый взгляд это бесполезная оптимизация, если речь идёт о каком-нибудь юниформ-векторе. Но скажем, когда мы передаём кости - это уже ощутимо. Но это распространяется и на текстуры! Если шейдер не использует какой-то текстурный юнит, его текстура просто не будет загружена. То есть уже экономия текстурной памяти. Аналогично надо сделать и с VBO-массивом. Он будет формироваться при загрузке динамически. Это финальный штрих по полному управлению видеопамятью из шейдера. Причём для этого используется встроенные средства GLSL.