Введение
Ситуация у AMD удручающая. До сих пор у компании было два стоящих предложения: Radeon HD 2900 XT, работающая лучше GeForce 8800 GTS 640 MB по схожей цене (но и с большим шумом и пиковым энергопотреблением), а также, возможно, и Radeon HD 2600 XT, но только для любителей домашнего кинотеатра.
Между двумя этими видеокартами большой разрыв, и цены тоже соответствующие. AMD готовилась закрыть этот разрыв видеокартами Radeon HD 3850 и 3870, которые были объявлены на днях. По крайней мере, так предполагалось сделать, пока внезапно "лучший друг" не выпустил карту, удивившую всех. nVidia объявила, что GeForce 8800 GT 512 MB имеет просто непревзойдённое соотношение цена/производительность.
Call of Duty 4. Нажмите на картинку для увеличения.
Ситуация оказалась весьма ироничной, поскольку high-end видеокарта AMD уступает модели nVidia, продающейся за $230 (у нас пока цены дороже, конечно). Текущая ситуация напомнила нам времена, о которых мы уже давно забыли: появление первого Radeon. Да, внезапный запуск GeForce 8800 GT охарактеризовался проблемами с доступностью видеокарт, и ситуация будет напряжённой до января. Поэтому нам всё же весьма интересно было посмотреть, что AMD предложит в данном ценовом диапазоне для сезона рождественских/новогодних покупок.
Direct3D 10.1: не совместима?
С новой линейкой GPU Radeon HD 3000 AMD первой поддержала новую версию Direct3D, а именно, Direct3D 10.1, о чём мы уже писали. Но что новая версия API Microsoft нам приготовила?
Когда этим летом появилась первая информация насчёт Direct3D 10.1, некоторые сайты пустили тревожный слух о том, что новая версия будет несовместима с предыдущей! В результате в сети сразу же появились отклики недовольных пользователей. По сути, Microsoft получила последствия того ажиотажа, который был подогрет вокруг Direct 3D. Действительно, геймерам уже пришлось смириться, что новая версия DX10 несовместима с предыдущей и будет работать только с новой ОС от редмондской компании: Vista. Но Microsoft смело утверждала, что такой шаг необходим для задела на будущее и свободы от наследственной совместимости. И через несколько месяцев после Vista появляются слухи о том, что будет выпущена новая версия DX10.1, которая снова будет несовместима. У многих геймеров эта новость переполнила чашу терпения.
Instancing 10: демо Direct3D 10 SDK.
Но, как часто бывает со слухами в Интернете, они не оправдались. Версия Direct3D 10.1 полностью совместима с предыдущей. Но давайте несколько глубже рассмотрим вопрос совместимости. До девятой версии разные итерации DirectX следовали одна за другой и сохраняли обратную совместимость. Когда вы устанавливали новую версию DirectX, то могли играть во все старые игры, использовавшие предыдущую версию. Точно так же для игры можно было создать интерфейс DirectX 9, но использовался он только как интерфейс DirectX 8. Среди всего прочего, разработчики могли использовать один код для поддержки двух видов карт, если не опираться на расширенные функции, которые присутствуют в DirectX 9. Для этого программисты получали доступ к структуре, которая обеспечивала полный список возможностей видеокарты. Однако эта совместимость больше не существует в Direct3D 10. Чтобы старые игры работали под Vista, Microsoft интегрировала оба API.
Точно так же, интерфейс Direct3D 10 не даёт доступ к девятой версии API, поскольку многие функции были удалены. Если разработчик желает представить игру с поддержкой Direct3D 9 и 10, то ему придётся компилировать две отдельные версии игры, что мало отличается от того, если бы, скажем, ему пришлось программировать под OpenGL и Direct3D. В данном случае API несовместимы.
Напротив, весьма возможно создать интерфейс Direct3D 10.1 на карте, относящейся к поколению "только" Direct3D 10, поскольку новый API является надмножеством последнего. Всё, что есть в Direct3D 10, есть и в версии 10.1. Задача разработчика заключается лишь в том, чтобы он не вызывал на карте Direct3D 10 функции, которые есть только в Direct3D 10.1, и такой подход давно практикуется на предыдущих версиях API.
Вполне понятно, что доступные GPU класса Direct3D 10 (G8x, G9x и R6x0) не поддерживают последние добавления API, и именно этот момент больше всего смущает геймеров. На самом деле, что касается поддержки старых GPU, то Microsoft обещала "смерть" Caps bits с Direct3D 10, и компания сдержала своё слово... в каком-то смысле; сейчас Caps bits уже не существуют, но на смену пришла функция, которую Microsoft называет Feature Level. Основное отличие заключается в том, что теперь не нужно проверять, что поддерживает каждая отдельная функция. Достаточно проверить функциональный уровень Direct3D 10 или Direct3D 10.1, чего достаточно для определения спектра возможностей, поддерживаемых GPU.