Как стать автором
Обновить

Комментарии 3

Отличная статья, спасибо!

Где можно почитать (и что конкретнее гуглить) про графические движки, чтобы понять почему спекание объектов в один ускоряет прорисовку?

Это как-то совсем не очевидно, ведь общее число треугольников не меняется. Та же штука вероятно и со склеиванием текстур в одну.

Могу предположить только, что возникает бутылочное горлышко где-то в передаче команд от процессора в видеокарту - если я буду передавать на отрисовку миллион объектов, то я условно буду миллион раз выделять память под это, а если они запечены - достаточно это сделать один раз. Видимо, нужно разобраться в том как в принципе сейчас работают современные рендереры и прикинуть на каком этапе какие у них могут возникать потребности в ресурсах?..

Обычно в документации к игровому движку приведены общие сведения об оптимизации и лучших практиках. Но почитать детальнее - тут лучше искать какие-то специальные статьи про игровые движки, видеокарту, 3д-графику. Опять же, есть профайлер и различные свои соображения разработчик может проверять самостоятельно, на практике - запуская игру и смотря как изменяются fps и draw calls.

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

Всё, опять же, зависит от ситуации - если сшивать слишком много треугольников в один меш, то профит от его более быстрой отрисовки нивелируется в определённых сценариях тем, что камера не сможет отсечь лишнее. В случае примера со стихами - незачем читать сто стихотворений за раз, если публика пришла всего на 10 минут и банально не успеет всё послушать.

С материалами (текстура входит в их состав) ситуация похожая - если очень условно, то это как макнуть кисточку в одну краску и легко и быстро красить все объекты в один лишь этот цвет. Если же у нас одни объекты должны быть зелёные, другие красные, третьи синие, десятые - желтые, то всё замедляется, так как нужно сначала покрасить все зелёные в зелёный, потом помыть кисточку, макнуть её в красный, ну и так далее.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации