Разбираем различные способы освещения объемов.
четверг, 30 июля 2020 г.
четверг, 23 июля 2020 г.
Volume render, часть 2. Оптимизация
Подход с честным маршингом объема оказался слишком медленный, поэтому рассмотрим подходы к оптимизации рисования объемов.
понедельник, 6 июля 2020 г.
Профилирование шейдеров
Не так давно в Vulkan появились расширения GL_ARB_shader_clock и GL_EXT_shader_realtime_clock, с их помощью можно получить время работы шейдера и время работы потока в сабгруппе.
воскресенье, 5 июля 2020 г.
среда, 1 июля 2020 г.
Crash reporting
Что нужно для отправки и обработки крэшей:
1. С помощью google breakpad отлавливается падение приложения или необработанное исключение, далее генерируется минидамп (dmp формат) и вызывается колбэк, из которого можно отправить минидамп на сервер, самому либо средствами breakpad. У меня дополнительно отправляется лог и другие данные, поэтому отправку написал сам через CURL. Также упаковка данных с помощью brotli заметно уменьшает их размер.
2. Должен быть сервер, который принимает крэши и добавляет их в базу данных.
3. Для крэшей используется dmp формат от Майкрософт (описание), формат позволяет добавлять кастомные данные, что и использует breakpad. Чтобы прочитать dmp файл нужен sym файл с информацией об исходном коде приложения, для этого на этапе сборки нужно вызвать "dump_syms.exe app.exe > app.exe.sym". Сам dump_syms.exe должен быть собран той же версией компилятора, что и приложение, поэтому dump_syms.exe из breakpad репозитория не подходит, так как собран более старой версией (vs2015). В breakpad есть парсер дампов "minidump_stackwalk" в виде консольного приложения, но под windows он не собирается, так что пришлось написать свой парсер основываясь на их исходниках. Из минидампа извлекается информация о системе, callstack, место, адрес в памяти причина падения, например "EXCEPTION_ACCESS_VIOLATION_WRITE 0x0". Это используется для сортировки крэшей.
4. Чтобы автоматизировать процесс сборки приложения и генерации символов используется простой сервер. На сервер отпраляется скрипт сборки, идет скачивание репозитория, сборка, запускаются тесты, если все пройдены, то генерируются символы и отправляются на сервер обработки крэшей, приложение релизится.
5. Дополнительно можно сохранять pdb файл, это позволит открывать минидамп в студии.
Исходники тут.
Подписаться на:
Сообщения (Atom)