Оптимизация в 3D-графике: максимум качества, минимум ресурсов
Оптимизация в 3D-графике: максимум качества, минимум ресурсов

Простым языком про оптимизацию 3D-графики. Как художники и разработчики видеоигр добиваются лучшего качества изображения при минимальных затратах системных ресурсов. Разберём ключевые принципы оптимизации и технологии, которые лежат в их основе.

5858
33

Открывайте форточку, сейчас я буду нудить!

Mip-mapping: никогда не замечал разницы в производительности с ним и без него. Да, разница должна быть, но её почему-то нет.

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

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

Всякие-разные батчинги: например можно объединить несколько статичных объектов в один, который использует один материал (привет атласы), или объединить несколько, с одним материалом, динамических объектов на ЦПУ(Юнити так может делать для объектов с маленьким полигонажем, но насколько я могу судить, сейчас от этого выхлопа нет). Есть ещё варианты, когда могут объединяться объекты с разными материалами, не я на таком нузко уровне эту кухню не знаю, и не скажу как это работает.
В общем случае, видеокарта не любит когда её сетапят, она переключается в состояние сетапа, в котором она ничего не может делать, и вход и выход из этого состояния довольно долгие, и чем меньше таких сетапов будет- тем выше будет фпс.

И ещё на тему "не любит когда её сетапят" ГПУ инстансинг:
Если нужно отрисовать несколько одинаковых мешей с одним материалом, у которых отличаются какие-то небольшие параметры, типа положения, скейла и цвета, то не обязательно сетапить видеокарту 30 раз, чтобы нарисовать 30 копий меша, можно насетапить её один раз, передав изменяющиеся параметры массивом из 30 значений.

4

Mip-mapping: никогда не замечал разницы в производительности с ним и без него. Да, разница должна быть, но её почему-то нет.Разница была во времена рива тнт 128. Сейчас мипмапы даже на мобилках не делают для повышения производительности.
Мипмапы нужны лишь для моделей, которые рисуются вдалеке, чтобы не было каши и стробящих пикселей из-за большой детализации текстуры, которая рисуется на маленьком объекта вдалеке. Мипмапы решают эту проблему, делая текстуру маленькой и уменьшая плотность пикселей.

2