Что такое Direct X 10, которые поддерживают или неподдерживают карты. Что вообще такое Direct X и для чего он нужен? И чем так хорош тот самый Direct X 10?
Для людей несведующих в программировании поясняю, что DirectX - это БИБЛИОТЕКА, разработанная Microsoft для поддержки и программирования для мультимедия устройст в ОС Windows. Это набор dll файлов, разработанных не только для видео карт, но и для звука, джойстиков и даже сетевых устройств.
Что представляет из себя Direct X с точки зрения программиста? Это набор функций (интерфейсов) для языка С++ (хотя возможно использование и в других языках, таких, как более высокоуровневый Delphi или более низкоуровневый Assembler), которые позволяют выполнять различные действия над устройствами (ввод, вывод, диагностика, получение справочной информации, включение, выключение и т.п.). Основным преимуществом Direct X являлось то, что программист, работая с той или иной аппаратурой использовал одни и теже функции, не задумываясь о том, какая конкретно видеокарта, звуковой чип или джойстик присоединен к компьютеру. Другими словами, основное достоинство DirectX - это его аппаратная независимость.
Подводя к этогу все вышесказанное я могу сказать, что DirectX 10 - это комплекс аппаратнонезависимых средств разработки, созданная для работы и программирования только под OC Windows, поддерживающий новейшие аппаратные возможности современных видеокарт.
Сам DirectX не является мерилом качества или прогрессивности видеокарты. Более того, НИГДЕ КРОМЕ Windows DirectX не используется.
Для разработки консольных видеоигр используются совсем другие средства - это открытая библиотека для 3D разработки под названием OpenGL или собственные аппаратные интерфейсы.
В заключении говоря о DirectX, я хотел бы сказать, что самое ее большое достоинство, а именно аппаратная независимость, для консолей является скорее недостатком. Все те внутренние проверки, которые выполняет библиотека при исполнении run-time кода, определяя возможности той или иной видеокарты на PC, лишь замедляют процесс исполнения программы на консоли, где аппаратная часть является фиксированной.
В XBox 360 существует своя собственная операционная система. Для разработки игр для этой приставки Microsoft выпустила свою библиотеку API DirectX XBOX 360. И поскольку они довольно схожи с библиотекой API DirectX 10 портирование игр на PC - довольно простое дело.
При этом возникают сложности у Sony. Например, целевой платформой для многих игроделов была и является сейчас PC. Например, у такого гиганта, как EA Sports. Доработка игр на 360 занимает гораздо меньшее время и меньше усилий при достижении оптимального результата. Поэтому, очень часто для PS3 (и для PS2) портированием занимается не непосредственно комманда из EA, а третьи фирмы.
Не буду спорить о том, что мощнее RSX или Xenos (видеоподсистема для XBox 360).
Хотя, как мне кажется, возможности Xenos немного преувеличены в средствах массовой дезинформации. Меня немного смущает тот факт, что ATi, как создатель Xenos, даже через год не смогла выпустить видеокарту для PC, которая смогла бы побить GF 8800GTX от NVidia, появившийся на прилавках в США аж в августе 2006 года. На текущий момент и синтетические и игровые тесты показывают преимущество NVidia, которое оно уже держит более года на той уже старой, по меркам PC индустрии, видеокарте. Возникает достаточно резонный вопрос - почему ATi, имея такой козырь в кармане как Xenos, производительности которой приписывают чудеса, не смогла до сих пор создать что-либо, что смогло показать NVidia кузькину мать?
Как мне кажется, вся проблема в тех самых пресловутых 48 унифицированных пиксельных шейдерах. Последние топовые карты семейства Radeon тоже снабжены ими, но не смогли обойти по производительности 8800GTX ни в одном тесте. Более сложная архитектура чипсетов, работающих на картах Geforce в конечном счете более дорога, но и более производительна. Это как, к примеру, двигатель автомобиля. С одной стороны у нашего УАЗ Патриота движок 2,6 литра, а у Suzuki Grand Vitara всего 2. Но у Патриота 128лс, а у Suzuki - 140 лс. Аналогично с видеокартами - у Xenosa номинальная максимальная производительность 1,5 миллиарда вертексов в секунду, а у RSX - 1,3 миллиарда. Но в тоже время в RSX у каждого вертексного конвейера 27 операций за тик, а в Xenose - 10 операций. В результате 48 шейдерных конвейера Xenosa дают (10 * 48 * 500Мгц) 240 миллионов операций с плавающей точкой в секунду, а 36 шейдеров RSX ( 27*36*650МГц) = 632 миллионов операций.
Так какой графический чип быстрее? Который выдает больше вертексов или который быстрее работает с шейдерами?
То, что Xenos превосходит по своему быстродействию RSX - это сказка - придуманная Microsoft. Была просто взята одна цифра и выдана за неоспоримый факт в расчете на то, что простой обыватель не захочет копаться в подробностях. И аналогия с автомобилями тут вполне уместна. Но на самом деле их сравнивать просто нельзя.
Почему? Да потому, что архитектура и идеология приставок исключительно разная. XBox 360 - это идеология компьютера в первую очередь. Даже прототипом для его создания был компьютер PowerMac от Apple. И следовательно на XBox 360 распространяются все те же правила что и для обычного компьютера, кроме одного - ее невозможно апгрейдить. Как и в обычном компьютере на составные части приставки от Microsoft возложены четко определенные задачи: видеочип занимается графикой, процессор - расчетами, а память - хранением оперативных данных. Соответственно графический чип имеет тенденцию к устареванию, как и любой другой графический чип на PC.
Архитектура PS3 в корне отличается от компьютерной. При ее создании использовались не только передовые технологии, а также технологии скорее более близкие к аркадным аппаратам, чем к PC. И, конечно, близкие к PS2. Вся система представляет из себя единое целое, и особенны взаимосвязаны друг с другом Cell и RSX. Используя для взаимодействия очень шуструю шину Cell легко берет на себя задачи RSX, обеспечивая дополнительную производительность графической подсистемы. Все это я подробно объяснил в статье “Ужас и красота программирования для PS3”.
Обе платформы имеют свои плюсы. Для текущего момента XBox 360 имеет много шансов оставаться лидером ближайшие полгода или год. Во-первых, сама архитектура процессора достаточно проста и хорошо известна - PowerPC процессоры от IBM уже десятилетие на рынке. Во-вторых, унифицированная система шейдеров видеочипа, унифицированная память на этой приставке, отличное API превращают ее просто в программистский рай. Писать для нее легко и портировать для нее или с нее тоже несложно. Но основной проблемой для 360 были и остаются ее узкие места - это ее архитектура, а именно ее железо - оно уже устарело.
Sony имеет диаметрально противоположные проблемы. Сложная архитектура, новейшие технологии, отсутствие хороших средств разработки создают затруднения для создания игр для нее. Однако с железом у PS3 все просто замечательно, более того - ее потенциал не раскрыт и на треть. Иными словами - под нее просто еще не научились программировать. Хотя, если быть объективными - программирование для PS2 было еще сложнее, однако это не помешало этой приставке набрать в свою развлекательную базу более 10 тысяч игр.
Как мне кажется, все что я написал в предыдущем посту для многих мало что объяснило. Что за хрень такая, вертексы, шейдеры и прочая лабудень. С вашего разрешения я немного объясню, что это такое и с чем это едят.
Для начала вертекс. На самом деле это точка. Но не простая точка, а точка “опорная” - своеобразный угол, из которых строятся трехмерные фигуры. Она имеет 3 координаты в пространстве, а также несет в себе кучу разной другой информации - это и ее цвет, как она отражает цвет, какая текстура на нее наложена, где у нее лицевая сторона, и так далее. Как я писал выше, вертекс - это основа для трехмерной модели - 3 вертекса составляют простейшую трехмерную фигуру, которая представляет собой треугольник и на компьютерном языке называется простейшим полигоном (многоугольником). Мы часто слышим это слово “полигон”, особенно когда идет спор о качестве графики. Так вот из полигонов составляются все 3D модели.
Поэтому, когда говорится, что Xenos может выдавать 1,5 миллиардов вертексов в секунду, а RSX - 1,3 - то это значит, что эти графические подсистемы способны просчитать и показать на экране 1,5 / 3 = 500 и 1,3 / 3 = 433 миллионов полигонов в секунду соответственно. А если мы хотим играть комфортно, т.е. иметь fps не ниже 60, то получим, что на экране наших телевизоров (мониторов) может появиться трехмерная картина, состоящая из примерно 8 миллионов полигонов для XBox 360 и 7 миллионов полигонов для PS3.
Но такой подход к определению качества изображения здорово бы определил характеристики первых трехмерных графических ускорителей, но никак не подходит к современным видеочипам. Особенно тогда, когда появилось такое понятие, как шейдер! Что это?
Шейдер (дословно, “то, что затеняет”) - это набор программных команд, которые используются графическим оборудованием в основном для выполнения эффектов рендеринга. Рендеринг - это просчет трехмерной сцены. Шейдеры используются при создании графических приложений, позволяя разработчику программировать программируемый конвейер (конвейеры) графического процессора (GPU).
Существует следующие виды шейдеров:
1. Вертексные шейдеры - это шейдеры, которые воздействуют только на группу вертексов и, как следствие, изменяют такие их характеристики, как позиция, цвет, координаты текстуры и т.д. Вертексы, обработанные вертексными шейдерами как правило поступают в геометрические шейдеры.
2. Геометрические шейдеры используются для объединения группы вертексов в отдельный объект и далее на вертексы воздействуют пиксельные шейдеры.
3. Пиксельные шейдеры воздействуют на каждый отдельный пиксель существующего объекта, накладывая текстуры, бампкарты или, например, затуманивание.
Иными словами, шейдеры это программы. Эти программы описывают изменения объекта сложными формулами, описывающими тот или иной графический трехмерный эффект. Например, волны, облака, муар от раскаленного асфальта, взрывы, выстрелы, капли дождя, огненные шары, магические спецэффекты - все это результат действия тех или иных шейдеров. Например, простые серые кубы под их воздействием превращаются в объемный дым, или белые полупрозрачные квадраты становятся каплями дождя на стекле гоночного автомобиля. Кстати - бампкарты - это специальная технология текстурирования, позволяющая изменить “рельеф” плоского объекта. Например, кто видел Heavenly Sword и видел, что на лице главной героини просматриваются поры и дефекты кожи - это результат работы бампкарт - если описывать рельеф кожи вертексами, то не хватит никакой вычислительной мощи.
Но не стоит к этому относить антиалиазинг в XBox 360 и PS3 - для этого существует специальный аппаратный фильтр в модулях вывода. По моему мнению, это чудесное добавление к GPU, позволяющее заметно улучшать картинку при малых затратах. В Xenos этот модуль реализован несколько лучше, позволяя осуществлять лучшее сглаживание, чем PS3 (4 AA sample * 8ROPs * 500МГц = 16 гигасэмплов/с против 2 AA * 8ROPs * 650 MГц = 10 гигасэмплов/с) .
Так или иначе, шейдеры добавляют очень большое количество информации в любую трехмерную сцену. С учетом того, что результатом действия шейдеров не являются вертексы, объемность объектов в 3D играх увеличивается на порядок.
Как вы понимаете, для исполнения этих сложнейших задач необходима совершенно невероятная вычислительная мощь. Все вычисления при этом производятся над реальными числами, так называемые операции с плавающей точкой. Быстрота этих вычислений измеряется в FLOPS (операциях), а обеспечиваются они так называемыми шейдерными конвейерами.
А теперь сравним возможности Xenos и RSX в этой области.
Xenos содержит 48 унифицированных шейдерных конвейера. Каждый из них содержит 2 арифметико-логических модуля (ALU) и способен выполнить 10 FLOPS (операций) за такт. Такт - это минимальная для вычислений единица, 1 “проход”. Если процессор имеет тактовую частоту 500 МГц (как у Xenos), это значит, что в секунду он делает 500 миллионов таких проходов. Для расчета шейдеров Xenos способен произвести 48 конвейеров * 10FLOPS * 500 МГц = 240 MFlops или 240 миллионов операций с плавающей точкой в секунду. По другому - каждый конвейер может выполнить 2 арифметически-логических команды за такт, т.е. 2 ALU * 48 шейдеров * 500 МГц = 48 миллиардов команд в секунду
В PS3 все гораздо сложнее. Эта приставка не содержит унифицированных шейдерных конвейеров, в ней для вертексных и пиксельных шейдеров существует свой тип конвейеров - 24 пиксельных и 8 вертексных. Каждый из них способен произвести 27 FLOPS и содержит 5 ALU для первого типа и 2 ALU для второго. Частота RSX - 650 МГц - следовательно вычислительная мощь конвейеров RSX равна 36 конвейеров * 27 FLOPS * 650МГц = 632 MFLOPS. Или в командах ALU - (24 конвейера * 5 ALU + 8 конвейеров * 2 ALU) * 650 МГц = 88 миллиардов команд в секунду.
На самом деле нельзя сказать, что RSX “работает” с шейдерами в 2 раза быстрее, чем Бокс. Вероятно, в связи с тем, что его конвейеры не являются унифицированными возможны их простои. Но совершенно определенно можно сказать, что суммарная производительность RSX не ниже производительности Xenos, однако, специфика работы RSX такова, что он рассчитан скорее для выполнения специфических задач текстурирования и анизотропной фильтрации, передавая часть своих “обязанностей” центральному процессору. Превосходство RSX в работе с текстурами очевидно, но эту тему я раскрою, если она будет кому-нибудь интересна.
В PS3 все гораздо сложнее. Эта приставка не содержит унифицированных шейдерных конвейеров, в ней для вертексных и пиксельных шейдеров существует свой тип конвейеров - 24 пиксельных и 8 вертексных. Каждый из них способен произвести 27 FLOPS и содержит 5 ALU для первого типа и 2 ALU для второго. Частота RSX - 650 МГц - следовательно вычислительная мощь конвейеров RSX равна 36 конвейеров * 27 FLOPS * 650МГц = 632 MFLOPS. Или в командах ALU - (24 конвейера * 5 ALU + 8 конвейеров * 2 ALU) * 650 МГц = 88 миллиардов команд в секунду.
/////////////////////////////////
Последний раз редактировалось wrbw, 07.12.2007 в 16:38.
спасиба очень полезная информация!
если я правильно понял - все разговоры о том что сейчас на компах 10directx а на боксе 9й - это бред?? типа на боксе вообще свой директ который и не уступает 10му?? )))) (многие ПК-юзеры ссылаются именно на это при высказываниях что мол комп в графическом плане всё равно лучше)