ГПУ вечеринка

May 17, 2015 20:57

После того как kunaifusu написал про архитектуру современных GPU, покопался в поисковике, а, оказывается, моего коммента про тесселяцию уже нет. :(

Поэтому, выкладываю тут:

OK "Тесселяция для дятлов". 18+, конечно.

***

Сейчас в играх для одной Маши куча моделей:

{1}. Много LoD'ов, которые подставляются на разном растоянии. Ибо зачем нам рисовать грудь Маши в миллион треугольников, когда она в ста метрах, а на первом плане няшный Паша. То есть понятно зачем, то Technical Art Director режет.

LoD'ов 3-4, часто больше. В момент появления сильно подняли утилизацию и позволили (только они и позволили) отодвинуть туман на дистанции.

{2}. Моделька для освещения (высокополигональная), дополненая всякими няшностями вроде лайтмапов, бампмапов, нормалмапов (один из законов Мерфи: если вам в техническом тексте непонятен термин, пропустите его). 20 лет шаманских взываний к духу 3D позволили назвать освещение главной проблемой графики: на крутых системах оно более чем наполовину нагружает карточку.

+1

{3}. Моделька для обсчета физики. То есть для collision - пересекается ли модель с чем-то. Из-за особой уличной магии особенностей алгоритмов на каждый кадр нужно прочекать порядка 10 вариантов, поэтому треугольников должно быть максимально мало, но чтобы модель не валилась под текстуры при этом.

Замечание для любителей няшной LA2: использовать только одежду и не хранить тело нельзя когда мы хотим произвольную анимацию и физику -- по чему одежда скользить будет, а?

+1

{умножить на икс}. Мы же хотим чтобы Маша была няшной, да? Значит ей нужно больше одного наряда. А просто сменить текстуру если, например, Маша сменила обтягивающую футболку на корсет (опять эти груди!) недостаточно.

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

***

Банальная реализация тесселяции сводит модели к двум: общей и физики (потому что всё равно супернизкополигональная). Тесселяция -- это низкополигональная модель + difference map высокого разрешения.

Что делает тесселяция?

Тесселяция превращает треугольник и кусок difference map'а wrap'ающегося на него в няшную кучу треугольников, которую няшные карточки очень няшно умеют рисовать.

При этом можно заказать 100 треугольников (на каждый в исходной моделе), можно 10, можно 1000. Можно и 10000, если difference map приготовили большой.

Всё! LoD'ы не нужны, как скрипачи.

Мало того, difference map -- это map, то есть 2D картинка, если дятлы не в курсе. А из 2D картинок можно делать коллажи, как в Фотошопе.

Всё! Берем Машу в корсете и Машу в обтягивающей футболке и получаем ужасную Машу из паралельного измерения.

***

Difference map'ы были ещё (из того что на моей памяти) в Corel Bruce. Только там не было тесселяции, а рисовали обычными мирскими вокселями (ОМВ). Технология эпохи динозавров короче.

programming, gpu, article

Previous post Next post
Up