Вчера затронули тему взаимодействия с GPU по API, тема важная, хочу побольше поговорить про это. Вот статья, она прошлогодняя, но подробная и системная, и ещё долго не устареет. Автор разбирает, что происходит между запросом на отрисовку и её появлением на экране.
Оптимизация графики — это в первую очередь про время, а не только про количество полигонов. Draw call — это запрос от CPU к GPU на отрисовку, и каждый такой запрос проходит через программную прослойку (API вроде OpenGL, DirectX, Vulkan). Чем больше запросов, тем медленнее они обрабатываются, потому что у API есть пределы скорости. CPU и GPU работают параллельно, и если хотя бы один из них «не успевает» — фреймы начинают теряться.
Ниже к посту прикреплён схематичный путь от меша к финальной картинке на экране.
Один из главных посылов этой схемы - составные элементы модели имеют прямое отношение к тому, что и как ваш графический процессор обрабатывает и интерпретирует, и насколько быстро он это делает. Именно поэтому вам надо знать из чего состоит 3D модель, и понимать как работают эти элементы.
Кроме пути модели и типичных ошибок автор разбирает способы снижения нагрузки: батчинг, текстурные атласы, LOD и отсечение невидимого.
Материал написан для 3D-художников, но будет полезен всем, кто хочет понять, почему третий Ведьмак летает (там в среднем всего лишь 2000 вызовов на отрисовку, несмотря на уровень графики и обилие деталей), а Cyberpunk... ну, вы поняли.
https://render.ru/ru/CGITEMS/post/25480
@make_game
