понедельник, 6 июля 2020 г.

Профилирование шейдеров

Не так давно в Vulkan появились расширения GL_ARB_shader_clock  и   GL_EXT_shader_realtime_clock, с их помощью можно получить время работы шейдера и время работы потока в сабгруппе.


В моей библиотеке для отладки и профилирования GLSL кода glsl_trace эти расширения используются для замера времени работы каждой пользовательской функции в коде, а также для построения тепловой карты кадра, где видны самые медленные пиксели.
Библиотека используется в моем фреймворке FrameGraph, где реализованы функции упрощающие работу с отладчиком и профилировщиком шейдеров.

Типичный маршинг по SDF

Рисование геометрии выглядит хуже, но в данном примере нет тяжелых фрагментных шейдеров.


Более интересно посмотреть как работает RTX:


Тут видно, что на границах ограничивающих объемов (BVH) время работы увеличивается.


Еще интересное наблюдение - кролик невиден из-за шторы, но на нахождение пересечений с ним тратится не мало времени, причем поиск пересечений уходит вглубь иерархии в поиске точных пересечений.

Комментариев нет:

Отправить комментарий