...
...

ATI R420 — канадский ответ на калифорнийский NV40. Часть 2

ATI R420 — канадский ответ на калифорнийский NV40. Часть 2

Мы уже начали рассматривать особенности архитектуры R420 в нашем предыдущем обзоре (КГ №31'2004), теперь настало время ознакомиться со многими новыми 3D-технологиями, которые были реализованы наряду с улучшенными техническими характеристиками в R420.

Технология 3Dc — новый алгоритм сжатия карт нормалей

Прежде, чем мы начнем объяснения нашим читателям, что же такое технология 3Dc от ATI и как же она работает, необходимо прояснить вопрос относительно того, что же такое эти самые карты нормалей и как они используются.
Сегодняшние трехмерные объекты состоят из некоторого числа треугольников, на которые "натянуты" 2D-текстуры. Реалистичные изображения с множеством деталей и неровностей можно получить весьма просто: нужно всего лишь увеличить количество используемых полигонов. Переходы между границами трехмерного объекта станут более плавными, мелкие детали выделятся и т.д. Все достаточно просто — знай повышай себе количество полигонов да любуйся на все улучающийся трехмерный объект. Но на самом деле дополнительные полигоны обойдутся при рендеринге графическому процессору неслабой нагрузкой, что неминуемо скажется на скоростных показателях рендеринга сцены, иными словами, значение fps будет явно прихрамывать. Именно для того, чтобы решить вопрос с приданием изображению наилучшего визуального вида с минимально-возможными потерями ресурсов графического процессора и памяти, были разработаны различные технологии имитации рельефности, одной из которых карты нормалей, по сути, и являются.

Сами карты нормалей — это текстуры, в которых хранится информация о неровностях трехмерного объекта в виде компонент вектора, который перпендикулярен поверхности объекта в данной точке — так называемый вектор нормали. Что же это дает? Применение карт нормалей вместе с текстурами высокого разрешения дает нам возможность получать наиболее детализированные и качественные трехмерные объекты без увеличения числа полигонов на модели. В картинах с презентации ATI примеры использования карт нормалей для построения различных трехмерных моделей подобраны как нельзя лучше: визуальное отличие видно невооруженным взглядом. Модели, использующие карты нормалей, отличаются большей детализацией и наличием таких мелких деталей, которые незаметны на обычных полигональных моделях.
Что же требуется от разработчиков, чтобы задействовать эту технологию? Как оказалось, не очень много=): .



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

Здесь, естественно, стоит сделать оговорку на то, что сходство между исходной высокополигональной моделью и моделью, использующей карты нормалей, не будет 100%. Карты нормалей не содержат геометрической информации, а значит, не могут дать стопроцентно идентичный объект на выходе. Полученный при помощи карт нормалей результат — это игра света и тени с человеческим глазом, который вряд ли сможет увидеть различие, но, тем не менее, оно будет.

Итак, мы разобрались с тем, что же такое карты нормалей, выяснили, что это очень здорово и полезно, но теперь настала очередь ложки дегтя=). Да, в описанных выше примерах мы используем малополигональную исходную модель, на которую накладывается карта нормалей, после чего объект приобретает высокую детализацию. Однако подобно обычным текстурам, карты нормалей должны где-то хранится, а самое главное — сжиматься, так как в несжатом виде они будут занимать достаточно много места в локальной памяти акселератора. В несжатом виде карты нормалей и текстуры давали бы слишком высокую нагрузку на шину памяти, которой необходимо было бы "прокачивать" через себя слишком большие объемы информации. Для обычных текстур давно уже разработаны специальные методы компрессии — DXTC, алгоритмы которого входят в DirectX 9.0. Этими же алгоритмами можно было бы пользоваться и для карт нормалей, однако на практике при сжатии их методами компрессии DXTC карты нормалей теряют часть информации, из-за чего появляются некоторые артефакты и о воссоздании высокополигональной модели речи идти уже не может.

Именно для решения проблемы компрессии карт нормалей компанией ATI и была разработана технология 3Dc, которая позволяет сжимать карты нормалей, тем самым освобождая шину памяти от непомерной нагрузки. Технология реализована в чипе ATI R420 хардварно, т.е. чип сам на аппаратном уровне умеет распаковывать карты нормалей, сжатые алгоритмом 3Dc, что называется "на лету".

Как же это работает на практике? Мы опустим все математические подробности работы алгоритма 3Dс, которые просто приводят в ужас среднестатистического двоечника по алгебре: например, при использовании 3Dc карты нормалей хранят не 3, а 2 компоненты на вектор, а сам вектор принимается за единичный, после чего, как нетрудно догадаться из школьного курса векторной алгебры, несложно подсчитать третью компоненту… На общей схеме хорошо видно, как идет весь процесс от начала компрессии до построения итогового изображения при помощи сжатых методом 3Dc карт нормалей.



Коэффициент сжатия при использовании алгоритмов 3Dc составляет 1:4, что весьма и весьма существенно помогает экономить пропускную способность памяти. Чтобы карты нормалей были распакованы в шейдерный код, требуется внести всего лишь несколько инструкций, что не должно пагубно сказаться на производительности. Таким образом, со своей прямой задачей — сжатием карт нормалей — новый алгоритм справляется более чем хорошо: остается только надеется, что его поддержат разработчики игр, тем более, что ATI продвигает 3Dc как открытый стандарт (т.е. никаких лицензионных отчислений не требует). Сами карты нормалей уже используются девелоперами в следующих проектах:

• FarCry
• Lord of the Ring: Return of the King
• Half Life 2
• Doom 3
• Serious Sam 2

Из них метод компрессии карт нормалей 3Dc поддерживают:
• Half Life 2
• Serious Sam 2

Достаточно неплохо, учитывая то, что реализация новой технологии несложна и не требует от программистов больших умственных или физических усилий. Будем надеяться, что новую технологию не постигнет участь еще одного "начинания" ATI — "TrueForm"=).

Нужны ли нам шейдеры 3.0?
Отчасти мы уже рассматривали данный вопрос в нашем обзоре архитектуры NV40. После рассмотрения архитектуры ATI R420 пора, пожалуй, расставить точки над i и поделиться своими соображениями на сей счет. Ответ, как ни странно, не появился даже с анонсом ATI R420. Как мы уже говорили в обзоре по NV40, и что уже неоднократно подтвердилось, ATI на сегодняшний день не может заявить поддержку пиксельных и вершинных шейдеров версии 3.0 в своем новом решении. Количество исполняемых инструкций шейдера, наличие предикат и количество константных регистров, динамические переходы — все это недоступно, или доступно, но в недостаточной степени, чтобы удовлетворить требованиям спецификаций шейдеров версии 3.0, которые уже были оглашены Microsoft'ом.

Гибкость и возможности программирования на графических процессорах компании NVIDIA всегда были и ныне находятся вне конкуренции. Казалось бы, компания разрабатывает свои собственные инструменты для девелоперов по программированию, ведет постоянную работу с разработчиками игр по обучению реализации потенциала своих графических чипов, проводит семинары, форумы, создает собственный язык программирования Cg, наконец! И все это проходит практически незаметно: большинство тестов в игровых приложениях (особенно с использованием пиксельных шейдеров 2.0) все равно показывают преимущество карт ATI. Почему так происходит? Причина банальна — программистам лень оптимизировать свой код под архитектуру отдельного чипа, пусть это даже чип NVIDIA. Есть нормативы, разработанные Microsoft, на которые все и равняются. На языке Microsoft HLSL (Microsoft High Level Shader Language) пишется большинство шейдеров, и именно на нем прекрасно себя чувствуют карты на чипах ATI. К чему же это я клоню? А к тому, что хотя NVIDIA и имеет всегда на порядок более гибкую и продвинутую архитектуру для программистов, но в итоге подавляющему большинству девелоперов это не нужно. Боюсь, что с шейдерами версии 3.0 повторится та же история, что и в свое время с шейдерами 2.0а. На данный момент мы можем констатировать только постепенное внедрение игр с поддержкой пиксельных и вершинных шейдеров 2.0 на фоне подавляющего большинства движков игр, которые, в лучшем случае, используют шейдеры версии 1.1 для реализации уже опробованных эффектов вроде красивой шейдерной водички и прочих нехитрых радостей, которые в свое время приводили просто в дикий восторг владельцев тогда еще NVIDIA GeForce 3 (ох, никогда не забуду впечатления от Morrowind, который был на памяти автора данного материала первой игрой, что смогла показать народу шейдеры во всей красе).

И вот на фоне только начинающегося внедрения пиксельных шейдеров 2.0 NVIDIA заявляет о поддержке шейдеров 3-й версии. Стоило ли калифорнийской компании "пороть горячку", когда API, внедряющий шейдеры 3.0, еще не вышел, а подавляющая масса девелоперов только сейчас осваивает вторую версию пиксельных и вершинных программ? Можно сказать, что овчинка стоит выделки только в том случае, если не будет страдать скорость, и вот здесь начинаются проблемы. Сама NVIDIA предупреждает разработчиков о том, что одно из основных новшеств шейдеров — динамические переходы — нужно использовать разумно и весьма осторожно, так как нынешняя архитектура весьма болезненно относится к появлению подобных вещей в коде. Здесь можно понять ATI, которой бы понадобилось полностью переработать архитектуру своего R420, являющегося, по сути, наследником R360, конвейеры которого к подобного рода вещам не приспособлены вовсе. Как видим, шейдеры 3.0 есть, но с большими оговорками, и инертность разработчиков аукнется NVIDIA еще не раз, а то, что у ATI будет достаточно времени для того, чтобы основательно подойти к вопросу в своем новом чипе (ревизия R420 с поддержкой шейдеров 3.0?) — это факт, который вовсе не играет NVIDIA на руку.

По-моему, компания поспешила с реализацией шейдеров третьей версии — их время все же еще не пришло. Однако кому-то ведь нужно двигать прогресс в нужном направлении=)? Пока нет DirectX 9.0c и приложений, написанных на пиксельных и вершинных программах версии 3.0, мы не можем выяснить вопросы скоростных показателей у плат NVIDIA, а посему можем только ждать появления API и приложений под него, чтобы посмотреть на практике, что же могут сделать новые пиксельные и вершинные программы, а заодно и оценить скорость работы с ними.

Руби — враг Nalu №1
Следуя новомодным тенденциям с анонсом новых плат на базе графического процессора ATI R420, компания решила сделать покупателям приятное и в качестве образа, который должен сопровождать новые карты, выбрала шпионку Руби с жгучей прической в лучших традициях 5-го элемента. Голливудские традиции налицо=). Несколько портит впечатление явный перебор в сторону Лариски Крофт, но в целом очень даже неплохо=).
Наконец-то ATI поняла, что завлекать покупателей всяческими монстрами на коробках и на презентациях — это не выход. После запуска рекламной акции силами бабочки NVIDIA (для плат, основанных на чипах GeForce FX) во многом изменился сам подход к техно-демкам, которые выпускали компании-производители графических чипов. Теперь сама демка с реализованными в ней технологиями была уже вторична: интересовала больше маркетинговая подоплека. Персонажи техно-демок становились символами продукта и олицетворяли собой целую серию графических карт. Так было с Dusk, бабочкой для серии видеокарт NVIDIA GeForce FX, так стало с Nalu для NVIDIA GeForce 6 series, и так суждено быть Ruby для ATI R420=).

Интересные игры по версии ATI
Выбрасывать по 500 долларов за карту не имело бы большого смысла, если бы для этого не было веских причин. Интересно было взглянуть на список игр, которые сама ATI считает наиболее интересными релизами:
• Battlefield Vietnam
• Delta Force: Black Hawk Down — Team Sabre
• FarCry
• MVP Baseball 2004
• Painkiller
• Rainbow Six 3: Athena Sword
• Splinter Cell: Pandora Tomorrow
• Unreal Tournament 2004
• Thief III: Deadly Shadow
• Hitman: Contracts

Релиз практически всех этих игр уже состоялся, более того — они были тщательно нами препарированы (практически все без исключения) на предмет уникальных особенностей в графической части. Как ни прискорбно это констатировать, но что-то по-настоящему интересное смог показать только FarCry, который сейчас у всех на слуху, да, пожалуй, Painkiller благодаря неповторимому антуражу. Остальные тайтлы не несут в себе ничего интересного (с точки зрения новизны графической части, естественно).

Интересно также посмотреть на игры, релиз которых только намечается:
• City of Heroes
• Doom III
• Duke Nukem Forever
• EverQuest II
• Half-Life 2
• Lineage II
• Medal of Honor: Pacific Assault
• Xenus
• Rise of Nations: Thrones and Patriots

Ждать таких грандов мирового игростроения, как DooM III и Half-Life 2 стало уже привычным делом=). Мы ждем их уже с незапамятных времен (опять ударяемся в ностальгию по GeForce 3 и презентациях этого решения с демонстрацией DooM III), но, кажется, этим летом наши ожидания будут вознаграждены по заслугам: тогда мы и сможем сказать про целесообразность покупки таких монстров производительности, как ATI X800XT и NVIDIA GeForce 6800 Ultra.

В следующем номере "Компьютерной Газеты" мы закончим рассматривать особенности архитектуры графического чипа ATI R420, а также детально ознакомимся с недавним скандалом вокруг ATI R420, касающегося оптимизаций ATI относительно трилинейной фильтрации.

Бурдыко Алексей, Knes@tut.by




© Компьютерная газета

полезные ссылки
Корпусные камеры видеонаблюдения