Информационные технологии
Операционные системы
Информационные технологии
Информационные технологии представляют собой широкий класс дисциплин и сфер деятельности, которые относятся к технологиям создания, хранения, управления, ... читать далее »
Статьи по ИТ
29.06.2009 00:00

Графические технологии. Информационные технологии.

Словарик базовых графических терминов

Частота обновления (Refresh Rate)

Как в кинотеатре или на телевизоре, ваш компьютер симулирует движение на мониторе, выводя последовательность кадров. Частота обновления монитора указывает на то, сколько раз в секунду на экране будет обновляться картинка. Например, частота 75 Гц соответствует 75 обновлениям в секунду.

Если компьютер обрабатывает кадры быстрее, чем может выводить монитор, то в играх могут появиться проблемы. Например, если компьютер просчитывает 100 кадров в секунду, а частота обновления монитора составляет 75 Гц, то из-за накладок монитор может выводить только часть картинки за период своего обновления. В итоге появляются визуальные артефакты.

В качестве решения можно включить V-Sync (вертикальную синхронизацию). Она ограничивает число выдаваемых компьютером кадров до частоты обновления монитора, предотвращая появление артефактов. Если включить V-Sync, то число просчитываемых в игре кадров никогда не превысит частоту обновления. То есть при 75 Гц компьютер будет выводить не более 75 кадров в секунду.

Пиксель (Pixel)

Пиксель (Pixel)

Слово "Pixel" расшифровывается как "picture element" - элемент изображения. Он представляет собой крошечную точку на дисплее, которая может светиться определённых цветом (в большинстве случаев оттенок выводится сочетанием трёх базовых цветов: красного, зелёного и синего). Если разрешение экрана составляет 1024x768, то на нём можно заметить матрицу из 1024 пикселей по ширине и 768 пикселей по высоте. Все вместе пиксели и составляют изображение. Картинка на экране обновляется от 60 до 120 раз в секунду, в зависимости от типа дисплея и данных, выдаваемых выходом видеокарты. ЭЛТ-мониторы обновляют дисплей строчка за строчкой, а плоские ЖК-мониторы могут обновлять каждый пиксель по отдельности.

Вершина (Vertex)

Вершина (Vertex)

Все объекты на 3D-сцене состоят из вершин. Вершина - точка в трёхмерном пространстве с координатами X, Y и Z. Несколько вершин можно сгруппировать в полигон: чаще всего это треугольник, но возможны и более сложные формы. Затем на полигон накладывается текстура, что позволяет объекту выглядеть реалистично. 3D-куб, показанный на иллюстрации выше, состоит из восьми вершин. Более сложные объекты имеют кривые поверхности, которые на самом деле состоят из очень большого числа вершин.

Текстура (Texture)

Текстура (Texture)

Текстура - это просто 2D-картинка произвольного размера, которая накладывается на 3D-объект, чтобы симулировать его поверхность. Например, наш 3D-куб состоит из восьми вершин. До наложения текстуры он выглядит как простая коробка. Но когда мы нанесём текстуру, то коробка становится окрашенной.

Шейдер (Shader)

Шейдер (Shader)
Пиксельные программы-шейдеры позволяет видеокарте выдать впечатляющие эффекты, например, как эту воду в Elder Scrolls: Oblivion.

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

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

С выпуском следующего интерфейса прикладного программирования (API, Application Programming Interface) Microsoft DirectX 10 на свет выйдет третий тип шейдеров под названием геометрические шейдеры. С их помощью можно будет ломать объекты, модифицировать и даже уничтожать их в зависимости от требуемого результата. Третий тип шейдеров можно будет точно так же программировать, как и первые два, но роль его уже будет другой.

Скорость заполнения (Fill Rate)

Очень часто на коробке с видеокартой можно встретить значение скорости заполнения. В принципе, скорость заполнения указывает на то, с какой скорость графический процессор может выдавать пиксели. У старых видеокарт можно было встретить скорость заполнения треугольников (triangle fill rate). Но сегодня выделяют два типа скорости заполнения: пиксельную (pixel fill rate) и текстурную (texture fill rate). Как уже говорилось, пиксельная скорость заполнения соответствует скорости выдачи пикселей. Она рассчитывается как число растровых операций (ROP), помноженное на тактовую частоту.

Текстурную скорость заполнения ATi и nVidia считают по-разному. nVidia считает, что скорость получается умножением числа пиксельных конвейеров на тактовую частоту. А ATi умножает число текстурных блоков на тактовую частоту. В принципе, оба способа корректны, поскольку nVidia использует по одному текстурному блоку на блок пиксельных шейдеров (то есть по одному на пиксельный конвейер).

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

Архитектура графического процессора: функции

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

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

Вершинные процессоры (блоки вершинных шейдеров)

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

Пиксельные процессоры (блоки пиксельных шейдеров)

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

Унифицированные шейдеры

Унифицированные (единые) шейдеры ещё не пришли в мир ПК, но грядущий стандарт DirectX 10 как раз опирается на подобную архитектуру. То есть структура кода вершинных, геометрических и пиксельных программ будет единая, хотя шейдеры будут выполнять разную работу. Новую спецификацию можно посмотреть в Xbox 360, где графический процессор был специально разработан ATi для Microsoft. Будет весьма интересно увидеть, какой потенциал несёт новый DirectX 10.

Блоки наложения текстур (Texture Mapping Unit, TMU)

Текстуры следует выбрать и отфильтровать. Эта работа выполняется блоками наложения текстур, которые работают совместно с блоками пиксельных и вершинных шейдеров. Работа TMU заключается в применении текстурных операций над пикселями. Число текстурных блоков в графическом процессоре часто используется для сравнения текстурной производительности видеокарт. Вполне разумно предположить, что видеокарта с большим числом TMU даст более высокую текстурную производительность.

Блоки растровых операций (Raster Operator Unit, ROP)

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

Конвейеры

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

Конвейер нельзя считать строгим техническим термином. В графическом процессоре используются разные конвейеры, которые выполняют отличающиеся друг от друга функции. Исторически под конвейером понимали пиксельный процессор, который был подключён к своему блоку наложения текстур (TMU). Например, у видеокарты Radeon 9700 используется восемь пиксельных процессоров, каждый из которых подключён к своему TMU, поэтому считают, что у карты восемь конвейеров.

Но современные процессоры описать числом конвейеров весьма сложно. По сравнению с предыдущими дизайнами, новые процессоры используют модульную, фрагментированную структуру. Новатором в этой сфере можно считать ATi, которая с линейкой видеокарт X1000 перешла на модульную структуру, что позволило достичь прироста производительности через внутреннюю оптимизацию. Некоторые блоки процессора используются больше, чем другие, и для повышения производительности графического процессора ATi постаралась найти компромисс между числом нужных блоков и площадью кристалла (её нельзя очень сильно увеличивать). В данной архитектуре термин "пиксельный конвейер" уже потерял своё значение, поскольку пиксельные процессоры уже не подключены к собственным блокам TMU. Например, у графического процессора ATi Radeon X1600 есть 12 блоков пиксельных шейдеров и всего четыре блока наложения текстур TMU. Поэтому нельзя говорить, что в архитектуре этого процессора есть 12 пиксельных конвейеров, как и говорить, что их всего четыре. Впрочем, по традиции пиксельные конвейеры всё ещё упоминают.

С учётом сказанных допущений, число пиксельных конвейеров в графическом процессоре часто используют для сравнения видеокарт (за исключением линейки ATi X1x00). Например, если взять видеокарты с 24 и 16 конвейерами, то вполне разумно предположить, что карта с 24 конвейерами будет быстрее.

Архитектура графического процессора: технология

Техпроцесс

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

Несколько усложняет понимание то, что для обозначения техпроцесса сегодня используют как микрометры (мкм), так и нанометры (нм). На самом деле всё очень просто: 1 нанометр равен 0,001 микрометру, поэтому 0,09-мкм и 90-нм техпроцессы - это одно и то же. Как уже отмечалось выше, меньший техпроцесс позволяет получить более высокие тактовые частоты. Например, если сравнивать видеокарты с чипами 0,18 мкм и 0,09 мкм (90 нм), то вполне разумно ожидать от 90-нм карты более высокой частоты.

Тактовая частота графического процессора

Тактовая частота графического процессора измеряется в мегагерцах (МГц), то есть в миллионах тактов за секунду.

Тактовая частота напрямую влияет на производительность графического процессора. Чем она выше, тем больше работы можно выполнить за секунду. Для первого примера возьмём видеокарты nVidia GeForce 6600 и 6600 GT: графический процессор 6600 GT работает на частоте 500 МГц, а у обычной карты 6600 - на 400 МГц. Поскольку процессоры технически идентичны, 20% прирост тактовой частоты 6600 GT приводит к более высокой производительности.

Но тактовая частота - это ещё далеко не всё. Следует учитывать, что на производительность очень сильно влияет архитектура. Для второго примера возьмём видеокарты GeForce 6600 GT и GeForce 6800 GT. Частота графического процессора 6600 GT составляет 500 МГц, но 6800 GT работает всего на 350 МГц. А теперь примем во внимание, что у 6800 GT используются 16 пиксельных конвейеров, а у 6600 GT - только восемь. Поэтому 6800 GT с 16 конвейерами на 350 МГц даст примерно такую же производительность, как процессор с восемью конвейерами и удвоенной тактовой частотой (700 МГц). С учётом сказанного, тактовую частоту вполне можно использовать для сравнения производительности.

Локальная видеопамять

Память видеокарты очень сильно влияет на производительность. Но разные параметры памяти влияют по-разному.

Объём видеопамяти

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

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

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

Ширина шины памяти

Ширина шины памяти - один из самых важных аспектов производительности памяти. Современные шины имеют ширину от 64 до 256 бит, а в некоторых случаях даже 512 бит. Чем шире шина памяти, тем больше информации она может передать за такт. А это напрямую влияет на производительность. Например, если взять две шины с равными частотами, то теоретически 128-битная шина передаст в два раза больше данных за такт, чем 64-битная. А 256-битная шина - ещё в два раза больше.

Более высокая пропускная способность шины (выражается в битах или байтах в секунду, 1 байт = 8 бит) даёт более высокую производительность памяти. Именно поэтому шина памяти намного важнее, чем её объём. При равных частотах 64-битная шина памяти работает со скоростью всего 25% от 256-битной!

Возьмём следующий пример. Видеокарта со 128 Мбайт видеопамяти, но с 256-битной шиной даёт намного более высокую производительность памяти, чем 512-Мбайт модель с 64-битной шиной. Важно отметить, что у некоторых карт из линейки ATi X1x00 производители указывают спецификации внутренней шины памяти, но нас интересуют параметры внешней шины. Например, у X1600 внутренняя кольцевая шина имеет ширину 256 бит, но внешняя - всего 128 бит. И в реальности шина памяти работает со 128-битной производительностью.

Типы памяти

Память можно разделить на две основные категории: SDR (одиночная передача данных) и DDR (удвоенная передача данных), при которой данные передаются за такт в два раза быстрее. Сегодня технология одиночной передачи SDR устарела. Поскольку у памяти DDR данные передаются в два раза быстрее, чем у SDR, важно помнить, что у видеокарт с памятью DDR чаще всего указывают удвоенную частоту, а не физическую. Например, если у памяти DDR указана частота 1000 МГц, то это эффективная частота, при которой должна работать обычная память SDR, чтобы дать такую же пропускную способность. А на самом деле физическая частота составляет 500 МГц.

По этой причине многие удивляются, когда для памяти их видеокарты указана частота 1200 МГц DDR, а утилиты сообщают о 600 МГц. Так что придётся привыкнуть. Память DDR2 и GDDR3/GDDR4 работает по такому же принципу, то есть с удвоенной передачей данных. Различие между памятью DDR, DDR2, GDDR3 и GDDR4 кроется в технологии производства и некоторых деталях. DDR2 может работать на более высоких частотах, чем память DDR, а DDR3 - ещё на более высоких, чем DDR2.

Частота шины памяти

Подобно процессору, память (или, точнее, шина памяти) работает на определённых тактовых частотах, измеряемых в мегагерцах. Здесь повышение тактовых частот напрямую влияет на производительность памяти. И частота шины памяти является одним из параметров, которые используют для сравнения производительности видеокарт. Например, если все другие характеристики (ширина шины памяти и т.д.) будут одинаковыми, то вполне логично утверждать, что видеокарта с 700-МГц памятью работает быстрее, чем с 500-МГц.

Опять же, тактовая частота - это ещё не всё. 700-МГц память с 64-битной шиной будет работать медленнее, чем 400-МГц память со 128-битной шиной. Производительность 400-МГц памяти на 128-битной шине примерно соответствует 800-МГц памяти на 64-битной шине. Следует также помнить, что частоты графического процессора и памяти - совершенно разные параметры, и обычно они различаются.

Интерфейс видеокарты

Все данные, передаваемые между видеокартой и процессором, проходят через интерфейс видеокарты. Сегодня для видеокарт используется три типа интерфейсов: PCI, AGP и PCI Express. Они различаются пропускной способностью и другими характеристиками. Понятно, что чем выше пропускная способность, тем выше и скорость обмена. Впрочем, высокую пропускную способность могут использовать только самые современные карты, да и то лишь частично. В какой-то момент скорость интерфейса перестала быть "узким местом", её сегодня попросту достаточно.

Самая медленная шина, для которой выпускались видеокарты, это PCI (Peripheral Components Interconnect). Если не вдаваться в историю, конечно. PCI действительно ухудшала производительность видеокарт, поэтому они перешли на интерфейс AGP (Accelerated Graphics Port). Но даже спецификации AGP 1.0 и 2x ограничивали производительность. Когда стандарт увеличил скорость до уровня AGP 4x, мы начали приближаться к практическому пределу пропускной способности, которую могут задействовать видеокарты. Спецификация AGP 8x ещё раз удвоила пропускную способность по сравнению с AGP 4x (2,16 Гбайт/с), но ощутимого прироста графической производительности мы уже не получили.

Самая новая и скоростная шина - PCI Express. Новые графические карты обычно используют интерфейс PCI Express x16, который сочетает 16 линий PCI Express, дающих суммарную пропускную способность 4 Гбайт/с (в одном направлении). Это в два раза больше, чем пропускная способность AGP 8x. Шина PCI Express даёт упомянутую пропускную способность для обоих направлений (передача данных на видеокарту и с неё). Но скорости стандарта AGP 8x было уже достаточно, поэтому мы пока не встречали ситуации, когда переход на PCI Express дал прирост производительности по сравнению с AGP 8x (если другие аппаратные параметры одинаковы). Например, AGP-версия GeForce 6800 Ultra будет работать идентично 6800 Ultra для PCI Express.

Сегодня лучше всего покупать карту с интерфейсом PCI Express, он продержится на рынке ещё несколько лет. Самые производительные карты уже не выпускаются с интерфейсом AGP 8x, и решения PCI Express, как правило, найти уже легче аналогов AGP, да и стоят они дешевле.

Решения на нескольких видеокартах

Использовать несколько видеокарт для увеличения графической производительности - идея не новая. В ранние дни 3D-графики копания 3dfx вышла на рынок с двумя видеокартами, работающими параллельно. Но с исчезновением 3dfx технология совместной работы нескольких потребительских видеокарт была предана забвению, хотя ATi выпускала подобные системы для профессиональных симуляторов ещё с выхода Radeon 9700. Пару лет назад технология вернулась на рынок: с появлением решений nVidia SLI и, чуть позднее, ATi Crossfire.

Совместное использование нескольких видеокарт даёт достаточную производительность, чтобы вывести игру с высокими настройками качества в высоком разрешении. Но выбирать то или иное решение не так просто.

Начнём с того, что решения на основе нескольких видеокарт требуют большое количество энергии, поэтому блок питания должен быть достаточно мощным. Всё это тепло придётся отводить от видеокарты, поэтому нужно обратить внимание на корпус ПК и охлаждение, чтобы система не перегрелась.

Кроме того, помните, что SLI/CrossFire требует соответствующей материнской платы (либо под одну технологию, либо под другую), которая обычно стоит дороже по сравнению со стандартными моделями. Конфигурация nVidia SLI будет работать только на определённых платах nForce4, а карты ATi CrossFire - только на материнских платах с чипсетом CrossFire или на некоторых моделях Intel. Ситуацию осложняет и то, что некоторые конфигурации CrossFire требуют, чтобы одна из карт была специальной: CrossFire Edition. После выхода CrossFire для некоторых моделей видеокарт ATi разрешила включать технологию совместной работы по шине PCI Express, причём с выходами новых версий драйверов число возможных комбинаций увеличивается. Но всё же аппаратный CrossFire с соответствующей картой CrossFire Edition даёт более высокую производительность. Но и карты CrossFire Edition стоят дороже обычных моделей. На данный момент вы можете включить программный режим CrossFire (без карты CrossFire Edition) на видеокартах Radeon X1300, X1600 и X1800 GTO.

Следует учитывать и другие факторы. Хотя две графические карты, работающие совместно, и дают прирост производительности, ему далеко до двукратного. Но денег-то вы отдадите в два раза больше. Чаще всего прирост производительности составляет 20-60%. А в некоторых случаях из-за дополнительных вычислительных расходов на согласование прироста нет вообще. По этой причине конфигурации на нескольких картах вряд ли оправдывают себя с дешёвыми моделями, поскольку более дорогая видеокарта, как правило, всегда обгоняет пару дешёвых карт. В общем, для большинства потребителей брать решение SLI/CrossFire смысла не имеет. Но если вы хотите включить все опции улучшения качества или играть в экстремальных разрешениях, например, 2560x1600, когда надо просчитывать больше 4 миллионов пикселей на кадр, то без двух или четырёх спаренных видеокарт не обойтись.

Визуальные функции

Кроме чисто аппаратных спецификаций, различные поколения и модели графических процессоров могут отличаться набором функций. Например, часто говорят о том, что карты поколения ATi Radeon X800 XT совместимы с Shader Model 2.0b (SM), в то время как nVidia GeForce 6800 Ultra совместима с SM 3.0, хотя их аппаратные спецификации близки друг к другу (16 конвейеров). Поэтому многие потребители делают выбор в пользу того или иного решения, даже не зная, что означает это различие. Что ж, позвольте поговорить о визуальных функциях и их значимости для конечного пользователя.

Microsoft DirectX и версии Shader Model

Эти названия чаще всего используют в спорах, но мало кто знает, что они означают на самом деле. Чтобы разобраться, давайте начнём с истории графических API. DirectX и OpenGL - это графические API, то есть интерфейсы прикладного программирования (Application Programming Interface) - открытые стандарты кода, доступные каждому.

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

Единственной сложностью остаётся то, что сегодня используются два разных API, а именно Microsoft DirectX и OpenGL, где GL расшифровывается как Graphics Library (графическая библиотека). Поскольку API DirectX сегодня в играх более популярен, мы сконцентрируемся именно на нём. Да и на развитие игр этот стандарт повлиял сильнее.

DirectX - это создание Microsoft. В действительности, в DirectX входит несколько API, только один из которых используется для 3D-графики. DirectX включает API для звука, музыки, устройств ввода и т.д. За 3D-графику в DirectX отвечает API Direct3D. Когда говорят о видеокартах, то имеют в виду именно его, поэтому в данном отношении понятия DirectX и Direct3D взаимозаменяемы.

DirectX периодически обновляется, по мере того, как графические технологии продвигаются вперёд, а игровые разработчики внедряют новые методы программирования игр. Поскольку популярность DirectX быстро возросла, производители графических процессоров начали подгонять выпуск новых продуктов под возможности DirectX. По этой причине видеокарты часто привязывают к аппаратной поддержке того или иного поколения DirectX (DirectX 8, 9.0 или 9.0c).

Ситуацию усложняет и то, что части API Direct3D могут меняться со временем, без смены поколений DirectX. Например, в спецификации DirectX 9.0 указана поддержка Pixel Shader 2.0. Но обновление DirectX 9.0c включает Pixel Shader 3.0. Таким образом, хотя карты относятся к классу DirectX 9, они могут поддерживать разные наборы функций. Например, Radeon 9700 поддерживает Shader Model 2.0, а Radeon X1800 - Shader Model 3.0, хотя обе карты можно отнести к поколению DirectX 9.

Помните, что при создании новых игр разработчики учитывают владельцев старых машин и видеокарт, так как если игнорировать этот сегмент пользователей, то уровень продаж будет ниже. По этой причине в игры встраивается несколько путей кода. У игры класса DirectX 9 наверняка есть для совместимости путь DirectX 8 и даже путь DirectX 7. Обычно, если выбирается старый путь, то в игре исчезают некоторые виртуальные эффекты, которые есть на новых видеокартах. Но, по крайней мере, можно играть даже на старом "железе".

Многие новые игры требуют установки новейшей версии DirectX, даже если видеокарта относится к предыдущему поколению. То есть новая игра, которая будет использовать путь DirectX 8, всё равно требует установки новейшей версии DirectX 9 для видеокарты класса DirectX 8.

Каковы же различия между разными версиями API Direct3D в DirectX? Ранние версии DirectX - 3, 5, 6 и 7 - были относительно просты по возможностям API Direct3D. Разработчики могли выбирать визуальные эффекты из списка, после чего проверять их работу в игре. Следующим важным шагом в программировании графики стал DirectX 8. В нём появилась возможность программировать видеокарту с помощью шейдеров, поэтому разработчики впервые получили свободу программировать эффекты так, как им нужно. DirectX 8 поддерживал версии Pixel Shader от 1.0 до 1.3 и Vertex Shader 1.0. DirectX 8.1, обновлённая версия DirectX 8, получила Pixel Shader 1.4 и Vertex Shader 1.1.

Microsoft DirectX и версии Shader Model

В DirectX 9 можно создавать ещё более сложные программы-шейдеры. DirectX 9 поддерживает Pixel Shader 2.0 и Vertex Shader 2.0. DirectX 9c, обновлённая версия DirectX 9, включила спецификацию Pixel Shader 3.0.

DirectX 10, грядущая версия API, будет сопровождать новую версию Windows Vista. На Windows XP установить DirectX 10 не получится.

HDR-освещение и OpenEXR HDR

HDR расшифровывается как "High Dynamic Range", высокий динамический диапазон. Игра с HDR-освещением может дать намного более реалистичную картинку, чем игра без такового, причём не все видеокарты поддерживают HDR-освещение.

Перед появлением видеокарт класса DirectX 9 графические процессоры были серьёзно ограничены точностью вычислений освещения. До сих пор освещение можно было рассчитывать только с 256 (8 бит) внутренними уровнями.

Когда появились видеокарты класса DirectX 9, они получили возможность выдавать освещение с высокой точностью - полные 24 бита или 16,7 млн. уровней.

С 16,7 млн. уровней и после того, как был сделан следующий шаг по производительности видеокарт класса DirectX 9/Shader Model 2.0, на компьютерах стало возможным и HDR-освещение. Это довольно сложная технология, и смотреть её нужно в динамике. Если говорить простыми словами, то HDR-освещение увеличивает контрастность (тёмные оттенки выглядят темнее, светлые - светлее), в то же время повышая количество деталей освещения на тёмных и светлых областях. Игра с HDR-освещением кажется более живой и реалистичной, чем без него.

Графические процессоры, соответствующие последней спецификации Pixel Shader 3.0, позволяют рассчитывать освещение с более высокой 32-битной точностью, а также выполнять смешение (blending) с плавающей запятой. Таким образом, видеокарты класса SM 3.0 могут поддерживать специальный метод HDR-освещения OpenEXR, специально разработанный для киноиндустрии.

Некоторые игры, которые поддерживают только HDR-освещение методом OpenEXR, не пойдут с HDR-освещением на видеокартах Shader Model 2.0. Впрочем, игры, которые не опираются на метод OpenEXR, будут работать на любой видеокарте DirectX 9. Например, Oblivion использует метод OpenEXR HDR и позволяет включать HDR-освещение только на новейших видеокартах, которые поддерживают спецификацию Shader Model 3.0. Например, nVidia GeForce 6800 или ATi Radeon X1800. Игры, которые используют 3D-движок Half-Life 2, та же Counter-Strike: Source и грядущая Half-Life 2: Aftermath, позволяют включать HDR-рендеринг на старых видеокартах DirectX 9, которые поддерживают только Pixel Shader 2.0. В качестве примеров можно привести линейку GeForce 5 или ATi Radeon 9500.

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

HDR-освещение и OpenEXR HDR

Полноэкранное сглаживание

Полноэкранное сглаживание (сокращённо AA) позволяет устранить характерные "лесенки" на границах полигонов. Но следует учитывать, что полноэкранное сглаживание потребляет немало вычислительных ресурсов, что приводит к падению частоты кадров.

Сглаживание очень сильно зависит от производительности видеопамяти, поэтому скоростная видеокарта с быстрой памятью сможет просчитать полноэкранное сглаживание с меньшим ущербом для производительности, чем недорогая видеокарта. Сглаживание можно включать в различных режимах. Например, сглаживание 4x даст более качественную картинку, чем сглаживание 2x, но это будет большим ударом по производительности. Если сглаживание 2x удваивает горизонтальное и вертикальное разрешение, режим 4x его учетверяет.

Полноэкранное сглаживание

Текстурная фильтрация

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

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

На сегодня самым лучшим способом фильтрации текстур является анизотропная фильтрация (AF). Подобно полноэкранному сглаживанию, анизотропную фильтрацию можно включать на разных уровнях. Например, 8x AF даёт более высокое качество фильтрации, чем 4x AF. Как и полноэкранное сглаживание, анизотропная фильтрация требует определённой вычислительной мощности, которая увеличивается по мере повышения уровня AF.

Текстурная фильтрация

Текстуры высокого разрешения

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

У современных игр есть несколько наборов текстур, так что игра без проблем будет работать на старых видеокартах с меньшим количеством видеопамяти, а также и на новых картах с большим объёмом видеопамяти. Например, игра может содержать три набора текстур: для 128 Мбайт, 256 Мбайт и 512 Мбайт. Игр, которые поддерживают 512 Мбайт видеопамяти, сегодня очень мало, но они всё же являются самой объективной причиной для покупки видеокарты с таким объёмом памяти. Хотя увеличение объёма памяти практически не сказывается на производительности, вы получите улучшение визуального качества, если игра поддерживает соответствующий набор текстур.

Текстуры высокого разрешения
















автор: Дмитрий Чеканов
источник: www.thg.ru


© WIKI.RU, 2008–2017 г. Все права защищены.