Оригинал материала: https://3dnews.kz/173292

Что такое T&L. Часть 2

Из постингов в конференции выясняется, что многие совершенно не понимают, зачем нужен T&L. Зачастую высказываются мнение, что T&L должен прибавлять FPS. Это не так. Мы уже публиковали сборник высказываний разработчиков об T&L (см. About T&L), пора и самим сказать пару слов.

Продолжить тему хочется с трёх скриншотов трёхмерной модели, сделанной в 3D Studio MAX.

Это модель мини-вэна, которая содержит немногим более двадцати тысяч полигонов. А вот четыре очень известных картинки:

Тут мы имеем более сотни тысяч полигонов на модель. Грамотное использование полигональных ресурсов ядра - головная боль для программиста и дизайнера, работающего над игрой. На самом деле, если бы эти модели можно было использовать в игре, то и первая модель мини-вэна, и nVidia-вские Boxter и FireTruck выглядели бы одинаково уже с расстояния в 10 виртуальных метров. Возможно, подъехав в упор, вы бы обратили внимание на наличие некоторых кривых линий и неестественностей в первой модели. Но субьективно, и модели nVidia далеко не шедевры. Они скорее создавались, чтобы произвести количественное впечатление. До того, как мы их увидели, поверить в то, что акселератор способен переварить такую сложную модель было невозможно. Игры постепенно становятся всё более сложными. Есть несколько интересных заблуждений, которые хотелось бы разобрать.

Оrigin: Флейм, это набор инвертированных тезисов оппонента, резкие выверты темы, переход на личности в диалоге на абстрактные темы.

Так вот по поводу инвертированных тезисов. Когда nVidia пропагандирует T&L, она обьясняет, что эта технология позволит использовать более сложные модели и разгрузить центральный процессор от работы над геометрией.

Понимание того, как инвертированы эти тезисы, приходит не сразу. До нас не сразу дошло, что многие воспринимают это совсем не так, как имеет ввиду nVidia. Отсюда и горестные заявления в форумах:

"И не надо меня пугать T&L, это чудо возможно и пригодится, но только через годик. И еще надо будет оценить его полезность для GeForce."

Создание игры - концепция

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

При создании игры группа разработчиков ставит перед собой цель - добиться баланса в расходе ресурсов процессора. Перед началом работ необходимо оценить примерные сроки окончания работ над проектом, сделать футуристический прогноз развития оборудования к моменту выхода игры, рассчитать системные требования, на которые может претендовать ядро, чтобы не быть слишком медленным. Если ядро пишется с нуля, то знать его системные требования изначально невозможно. Возможно, если бы развитие центральных процессоров пошло быстрее, мы бы увидели в Quake и закапывающихся в землю монстров, и имеющих обоняние персонажей, и много чего из того, что обещала iD вначале. Но процессоры оказались слабы, едва потянув те полигональные изыски, которые позволил себе Джон Кармак. Да и то, вспомните, сколько было стонов о непозволительной жадности к ресурсам, требованиях к процессору и памяти. Всё это в прошлом.

Если абстрагироваться от конкретных цифр, то в эпоху софтверного рендеринга ядро обязано было поделить 100% используемого им процессорного времени на 4 равных (в реальной жизни - вовсе не равных) части:

  1. Рассчёт физики
  2. Рассчёт искуственного интеллекта и скриптов
  3. Рассчёт геометрических данных (модели, архитектура)
  4. Растеризация изображения и вывод на монитор

Поскольку всё это делалось процессором, игра имела равно убогую физику, искуственный интеллект, простенькую графику и примитивные модельки. Для того, чтобы создать Quake, модели в котором сегодня уже нельзя назвать примером сложной геометрии, Кармаку пришлось использовать всю мощь новейшего процессора Intel Pentium, что вызвало бурные нарекания в среде игроков, экипированных новенькими 486 и AMD K5, Cyrix 5x86 процессорами. Требовалась феноменальная мощь по работе с операциями с плавающей запятой, чтобы переварить всё это. Имея в 640x480 при 8-ми битах около 15 FPS по Timedemo, многие считали это достаточным.

Затем пришли акселераторы, был создан VQuake под 3D-чипы Verite, а затем и GL Quake, использующий возможности OpenGL, чтобы переложить работу по растеризации и установке полигонов на выделенный графический чип.

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

(c) iD Software, glnotes.txt для GLQuake 0.97

С приходом растеризирующих процессоров, поддерживающих некоторые функции работы с полигонами, можно считать, что силы распределились так:

То есть с процессора сняли проблемы растеризации, и отдали их на откуп акселератору. Освободившееся процессорное время стало возможным потратить на более сложные полигональные модели, улучшенную физику и AI. Помните, какие шедевры AI стали появляться с приходом акселераторов? Монстры в Unreal, скриптованные персонажи в Half-Life. А физика? Новые серии NFS, с более сложной физикой заносов, более точные алгоритмы просчёта в авиа и авто-симуляторах. Конечно, свою лепту внесли и более мощные процессоры. Всё же Pentium II и AMD K6 были гораздо мощнее стареньких Pentium.

Следующий виток эволюции акселераторов - введение аппаратного T&L в чип. Фактически это позволяет снять с процессора геометрические проблемы. Нет, не все, а лишь работу по трансформации, отсечению, освещению полигонов, всевозможную работу с skinning матрицами и некоторые другие процессы. Нельзя точно сказать, сколько процентов машинного времени это занимает, но если взять например 80% от общего количества ресурсов, которые тратятся на работу с геометрией, то получится:

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

Так куда девается то, что мы освободили? Можно сказать, что существует два вида вычислений - вычисления, где более быстро полученный результат приводит к большей динамике событий, то есть например геометрическая и растеризующая работа. Чем быстрее рассчитали геометрию, тем быстрее передали её на растеризацию, чем быстрее прошла растеризация, тем больше кадров в секунду вывелось на экран. Скорость рассчёта больше - FPS выше. Прямая зависимость.

И есть второй вид вычислений, где скорость рассчёта никак не влияет на скорость вывода информации. Как пример - декодирование MP3. Можно потратить 100% ресурсов, и декодировать весь трек в считанные секунды, но если мы хотим его послушать, не лучше ли тратить по 3% ресурсов системы, и декодировать поток постепенно, по мере необходимости?

AI и физика, суть та же музыка. Рассчитывать их заранее с максимальной скоростью нет необходимости. Эти параметры жёсткие, и освободившееся процессорное время фактически не оказывает никакого влияния на эти процессы. Значит, если для рассчёта AI тупого орка требуется 1% машинного времени, а одновременно рассчитывается AI 30 таких орков, то даже освободив лишнее процессорное время, и тратя не 1, а 0.5% машинного времени, мы получим лишь ресурсы, прокручиваемые вхолостую. Да, процессор будет греться меньше, но ведь на скорости игры это никак не скажется.

Излишек машинного времени

Вспомним ещё раз, что даёт нам T&L:

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

То есть, если разработчик решил применить аппаратный T&L, он автоматически освободил процессор от работы над геометрией. У процессора появился дополнительный ресурс, который можно бросить на другие нужды.

  • BMW M5
  • 400 л.с на 6800 об/мин.
  • Максимальная скорость 300+ км/ч
  • Вес - 2.29 тонны

Рассмотрим аналогию. Возьмём BMW M5. Теоретический потолок машины - 300+Км/ч, практический потолок - 250Км/ч благодаря умной электронной блокировке. В машине два пассажира - "физик" и "математик". "Физик" занимается физикой и AI, "математик" озабочен геометрией и растеризацией. Разогнав это авто до 250Км/ч по германскому автобану, вы решаете выкинуть математика из авто, думая, что скорость ещё возрастёт. И вот бедный математик летит в кювет, однако умная электроника по прежнему не пускает ваше авто ехать быстрее 250Км/ч. Вы будете истерично заявлять, что выкидывание математика (геометрии и растеризации) не увеличило скорость (FPS) машины?

Хорошо. А если вы загрузились в это авто двумя группами по пять человек. Пять физиков, пять математиков. Бедные амортизаторы будут скрести о шины, разогнаться уже будет очень и очень сложно. То есть скорость авто (FPS) будет низок. Она перегружена физикой и математикой.

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

Вот и по аналогии с этим. T&L снимает часть нагрузки на процессор, и если бы в игре был сложный AI, рассчёт которого при загруженном геометрии процессоре требовал бы много времени, то использование аппаратного T&L сделало бы игру быстрее.

Что же касается второго пункта, то есть более сложных моделей, то не забывайте о том, что скорость всей системы зависит от работы самого медленного её компонента. Нужно ещё накладывать текстуры, передавать их по шине, передавать геометрическую информацию в акселератор на обработку и делать много других операций. Тут скорость ограничивается не только скоростью процессора и памяти, но и шириной канала данных, который обеспечивает AGP и другие шины ПК.

Фактически, прирост производительности от использования T&L вы заметите только тогда, когда к примеру на 1ГГц Pentium III игра будет 80% времени рассчитывать AI и физику. Возникнет дилема - либо рассчитывать оставшимися 20% геометрию, либо давать её на откуп акселератору. В первом случае FPS будет низок, так как у процессора просто не хватает ресурсов, во втором - гораздо выше, так как чип акселератора ничем, кроме графики, не занят.

Недостаток времени человеческого

Девелоперы игр вносят огромную лепту в происходящее на рынке графики. Технология, не поддержанная разработчиком, обречена на вымирание. Для того, чтобы создать игру, необходимо ядро. Сегодня на рынке ещё нет ни одного готового ядра, поддерживающего T&L так, как об этом мечтают обладатели GeForce и nVidia. На рынке нет ни одного примера кода AI, который требовал бы неимоверных рассчётов процессором, но обеспечивал бы большую степень реалистичности, ни в одной игре физика не рассчитывается сколько-нибудь сложно.

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

Все проекты, выходящие сегодня и в ближайшие месяцы, были начаты от полугода, до трёх-четырёх лет назад. В то время никто не слышал о T&L, и никто не рассчитывал, что с процессора можно будет снять достаточно большой кусок нагрузки. Учитывая, что разработчики игр далеко не всегда так дальновидны, как нам хотелось бы, можно считать, что игры, использующие T&L эффективно, начали разрабатываться от 3 до 6 месяцев назад. Тогда почему мы ждём прироста скорости от использования T&L сегодня? Если приблизительно прикинуть, то получается, что хитовые продукты с грамотной поддержкой T&L отстоят от нас по времени появления минимум на пол-года, а проработанные, и использующие T&L эффективно - на год и даже два.

Тогда поднимается вопрос, а стоит ли брать акселератор с T&L сегодня, если никаких игр нет, и в скором времени не предвидится? Может быть права 3dfx, которая не выпускает продукт с T&L сегодня, а ставит на Т-Buffer. Но если подойти к вопросу с обратной стороны. T-Buffer анонсирован недавно, и значит игр под него ждать придётся даже дольше, чем под T&L. А к тому моменту уже все акселераторы будут поддерживать аналогичные эффекты благодаря DirectX8. В общем то весь спор о полезности тех или иных технологий весьма спорен. Полезно и то, и другое. Вопрос лишь в том, стоит ли платить деньги за это сегодня.

Продукты на сегодняшнем рынке

Как уже было сказано, на рынке бытовых акселераторов с T&L сегодня присутствуют лишь чипы nVidia. S3 и Savage2000 - скорее неудачная попытка создать хорошую карту. Карты на Radeon от ATi появятся в скором времени, но производительность их T&L блока еще предстоит выяснить. Выбирая акселератор сегодня, важнее сравнивать практическую производительность, чем смотреть на поддерживаемые технологии. Ни T-Buffer, ни T&L сегодня использовать не получится. Единственным плюсом T&L является его полезность в программах моделирования, вроде 3DMax. T-Buffer же полностью бесполезен. Нет даже технологических демок, показывающих его красоту. Однако думать, что к моменту выхода T&L игр карты на GeForce окажутся барахлом - неправильно.

Скорее всего так случится с Doom 3, если он будет поддерживать T&L. И Unreal 2 тоже может потребовать чего-то больше. Epic и iD всегда создавали игры, ориентируясь на завтра, что позволяло им пользоваться популярностью в течении продолжительного срока. Графика в их шедеврах регулировалась в больших пределах и устаревала медленно. Остальные разработчики ориентируются на мэйнстрим. То есть рассчитывают, что если игра выйдет через год, то у всех будет стоять именно GeForce 256. Обладатели более мощных карт получат бонус в виде излишков FPS, а основная масса, которая должна купить игру, и тем самым отработать деньги, потраченные на разработку, должна не испытывать негативных эмоций от низкой производительности.

Отсюда и вывод - второе поколение T&L игр, использующих его более разумно, нежели сегодняшние MDK2 и Test Drive 6, будет оптимизировано именно под GeForce 256, который к моменту их выхода должен упасть в цене до $100 и ниже.

Кстати о ценах. Кто-то скажет, что $100, слишком высокая цена. И будет относительно прав. Другой вопрос - цена на Западе и в России. $100 для западного потребителя - продукт для среднего класса. В России - всё ещё HighEnd. При создании игр мало кто ориентируется на российский минимум, который и через год будет представлен TNT2. Несравнимые заработки, другие планки цен.

Подводя итог, хочется заметить, что прежде, чем ругать какую-либо технологи, необходимо долго и нудно в ней разбираться - а зачем она собственно нужна, каков срок её появления, какие перспективы она несёт. nVidia задала тенденцию, а плоды будут позже. Вопрос о полезности T&L закрыт, остаётся вопрос - когда мы увидим продукты.



Оригинал материала: https://3dnews.kz/173292