Relict Engine: DevLog 20260802
Краткий список изменений
Доделана поддержка сцен и сцены внедрены в пайплайн отрисовки.
Переделан MulticastDelegate на версию, которая не требует использования std::bind
Продолжаю разведение GameThread и RenderThread (по сути осталось только деревья Сборщика мусора растащить окончательно)
Добавлена первая заготовка под юниты света в виде DirectionalLight юнита.
Добавлена двойная буферизация для буфера команд RenderThread
Комментарий
Рано обрадовался, работы (не по движку) пока еще довольно много + духота по мозгам долбит. Ползу медленней, чем обычно, поэтому решил пока бросить приоритет на отладку и производительность того, что уже сделано, чем на добавление нового функционала.
Как всегда больше всего проблем вылезает в Linux сборке - ведро как-то более либерально ко всему относится (причем настолько, что я ему уже не доверяю). Есть проблемы с крэшами сборки из-за Сборщика мусора при удалении объектов из разных потоков (происходит из-за состояния гонки [Родитель приходит к состоянию очистки памяти раньше, чем дочерние, что не есть правильно]), и кроме того, как полностью разделить деревья и вынести триггеры сборщика в отдельные не связанные сущности решения похоже нет (При этом такое поведение наблюдатся исключительно в Linux; Windows как-то пофиг на это, что добавляет отдельно батхерта). Хотя, возможно надо было так изначально делать, т.к. из-за кросс потоковых деревьев приходится паузить треды на тике Сборщика. Если деревья будут разделены, то этого делать будет уже не нужно, а следовательно и производительность несколько увеличится (в прочем там могут другие проблемы вылезти).
Так-же наконец-то добрался до света и pbr. Базовый (очень базовый) шейдер уже написал, теперь нужно прописать логику для юниформов (std140, естно) и работой со светом через ++. Думаю, сначала поэкспериментирую на DirectionalLight (как самом простом варианте), потом добавлю уже остальные по готовому шаблону. Финальным аккордом по теме глобального света должна стать реализация объемного источника света (нужен для реализации физически корректного света от звезд)









