𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
Фотография
нажмите — покажем
нажмите — покажем
Вот насколько надо просто чувствовать С++
Решил значит отладить цикл, добавил после строки GWires.Emplace(...) вызов остановки отладчика __debugbreak(), чтобы посмотреть на локальные переменные
Открываю - А у меня просто нет этих переменных!
И первые мысли: Проблема в отладчике? Нет. Проблема в IDE? Нет. В чем-то еще? А может... Деструкторы, бл!
Кароче: С++ скрытно под собой, после создания обьектов кабеля (Cable) и провода (Wire) вызывает их конструкторы (FCable::FCable() и FWire::FWire())
Мы работаем с этими обьектами
Но уже после - наоборот. Сразу вызывает их деструкторы (FCable::~FCable() и FWire::~FWire())
И затем я вызывается отладчик, когда обьекты уже как бы удалены
Решение? Ну, я ничего лучшего не придумал, кроме как после вызова отладчика вызвать консоль и написать что-то наподобие printf("123") и все :)
Зачем? Чтобы отложить вызов деструкторов ПОСЛЕ моего вызова отладчика
71 · 𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
Фотография
нажмите — покажем
нажмите — покажем
WebAssembly? WebAssembly!
Что могу сказать
Не зря. Вот не зря сука я говорил, и не однократно говорил, что STL эта ваша - фигня полная! Я, лично, не доверяю STL/std
И не зря....
Начал значит я грызть гранит науки под названием WASM, добавил еще один слой абстракции (HAL) для платформы Web
И тут вскрылось... что стандартная std::map (которую я временно использовал) у MSVC и Clang настолько разные - что на втором у меня тупо компилятор отказывался работать, ломаясь где-то очень глубоко внутри STL
Ну, не долго думая, быстренько написал еще один собственный контейнер TMap и... все! Проект запустился с пол пинка
А вот теперь представьте - если бы я изначально не писал свои велосипеды контейнеры, а сидел бы на готовеньких STL? Хо-хо-хо
68 · 𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
Фотография
нажмите — покажем
нажмите — покажем
Root Engine / Crash Handler
Ну все, дорогие друзья
Теперь после бесячего UnrealCrashHandler.exe, вас будет еще и бесить RootEngineCrashHandler.exe
Мои поздравления!! 🎉🎉🎉
Ну а если серьезно - Да, теперь у меня есть собственный Crash Handler, прямо как во всех взрослых движках
И да, как оказалось делать их - не так уж и сложно. Зато при вылете - я могу не труситься отладчиком, а тупо открыть .dmp файл и увидеть что-да-как
Все, официально это имба сегодняшнего вечера
1 · 56 · Фотография
нажмите — покажем
нажмите — покажем
Фотография
нажмите — покажем
нажмите — покажем
Но кстати говоря, от двиглодела к двиглоделам
Сегодня в тг канале Грокаем C++ / std::source_location обсуждался std::source_location
Полезная штука однако. Например для логирования. Чтобы получить имя функции и ее строку с типизацией компилятора, вместо использования тупого препроцессорного __FILE__ и написания макросов по типу UE_LOG
Но, std::source_location - это только фича только у C++20? Формально да....
Но если копнуть - нет! Она вся основана на интринсиках компилятора, которые существовали задолго до С++20. А это значит...
Что возьму я велосипед, и соберу собственную FSourceLocation прямо на C++17! Благо пишется быстро, зато логировать без макросов станет легче и чище
1 · 68 · 𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
Фотография
нажмите — покажем
нажмите — покажем
AAAHHHHH F*KING LINUX!!!!!!
КАК ЖЕ ТЯЖЕЛО БЫЛО ДЕЛАТЬ БИЛД ПОД ЕТОТ ВАШ ЧЕРТОВ ЛИНУКС
glibc такая непостоянна... я в шоке. Я даже стал больше винду ценить
Но да ладно, теперь Root Engine официально может билдиться на: Windows, Linux, и Web! (WASM)
53 · Фотография
нажмите — покажем
нажмите — покажем
Android!
Все, я устал, уже думаю закончить с Silicon Forge и выпустить его вам на растерзание, а сам пойду писать рендерер
У меня как раз появилась одна идея, возьму идею Кармака и просто дожму немного
59 · Файл
FrameGraph (RDG).pdf · 41.2 МБ · нажмите — покажем
FrameGraph (RDG).pdf · 41.2 МБ · нажмите — покажем
Файл
Clustered Deferred and Forward Shading.pdf · 7.2 МБ · нажмите — покажем
Clustered Deferred and Forward Shading.pdf · 7.2 МБ · нажмите — покажем
Файл
VPL based GI.pdf · 4.0 МБ · нажмите — покажем
VPL based GI.pdf · 4.0 МБ · нажмите — покажем
Файл
ID TECH 666 THE DEVIL IS IN THE DETAILS.pdf · 14.9 МБ · нажмите — покажем
ID TECH 666 THE DEVIL IS IN THE DETAILS.pdf · 14.9 МБ · нажмите — покажем
Файл
Id Tech 8 GI.pdf · 2.7 МБ · нажмите — покажем
Id Tech 8 GI.pdf · 2.7 МБ · нажмите — покажем
Специально для вас скачал украл пару докладов с SIGGRAPH
Что ж, будет прочесывать, изучать, да писать
А что думали? Мы тут в шутки играем? Качаем готовый Raylib 3D и ImGui? Ага...
Включаем расслабленную электронную музыку и проходимся по базе:
- FrameGraph от Frostbite - База по RDG, без которой управлять Vulkan'ом или DX12 в принципе не возможно. Вот ее штрудируем до посинения
- Clustered Deferred and Forward Shading - Любимый мною кластерный шейдинг, от чего я и буду отталкиваться
- VPL based GI - Ну и как же не попробовать использовать халявные динамические источники света для генерации Эммисива как у GI?
- ID TECH 666 и Id Tech 8 GI - ну, у этих безумцев все стабильно. Первое что они считают: Это количество занятых регистров на варпе видеокарты
6 · 84 · 𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
Фотография
нажмите — покажем
нажмите — покажем
Выходит по IQ меня и табуретки отличает только твердость вещества: Табуретка тверда, а я мягкий ахаха
1 · 41 · ОтветВыходит по IQ меня и табуретки отличает только твердость вещества: Табуретка тверда, а я мягкий ахаха
А еще оказывается целых 8 лет я был на учете в психдиспансере, сам не догадываясь об этом
Впрочем - Теперь это многое объясняет...
44 · 𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
Фотография
нажмите — покажем
нажмите — покажем
"Component words which do not correspond to any fragment shader output will also result in undefined values for blending or color attachment writes" - Vulkan Specification
39 · 𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
Фотография
нажмите — покажем
нажмите — покажем
Угадайте на что я потратил целый час зависания драйвера и черного экрана
Кто найдет ошибку - прям респект
1 · 36 ·