Тема: DirectX 10
Показать сообщение отдельно
(#2 (permalink))
Старый
Virgo
Гость
 
Сообщения: n/a
По умолчанию 16.02.2007, 12:48

Кроме того, в десятой версии наконец ликвидированы пережитки, которые оставались еще с шестой-седьмой версии. Так, произошел окончательный отказ от механизмов Fixed Function Pipeline (FFP) – конвейера с фиксированной функциональностью, методики рендеринга «дошейдерной» эпохи. Это был большой набор состояний, флагов и функций для их установки, который и так уже долгое время в новых акселераторах эмулировался с помощью шейдеров и существенно «раздувал» как код видеодрайвера, так и саму библиотеку Direct3D. Под нож пошла и «развесистая» система опроса драйвера видеокарты через сам D3D о возможностях и ограничениях аппаратуры – capabilities (или кратко – caps). Зачастую данные, полученные подобным образом, были неполны или просто неверны. Разработчикам также приходилось нередко использовать всевозможные «хаки» как для отдельных поколений графически чипов, так и для некоторых особенностей архитектур видеокарт ATI и NVIDIA. Microsoft пытается в очередной раз привести все к единому, поддерживаемому всеми стандарту, и видеокарты, которые хотят называться D3D10-совместимыми, должны попросту поддерживать все возможности, оговоренные в документации на Direct3D от и до, без отклонений в сторону меньшей функциональности. Были исключены медленные вызовы рендеринга объектов из системной памяти (DrawPrimitiveUp), как и весь механизм работы с пулами памяти. На практике даже в играх топ-компаний часто злоупотр****ли этими возможностями, что сильно снижало производительность. Теперь все ресурсы должны быть явно размещены в видеопамяти перед использованием. Исчезла давно критикуемая концепция «потери и восстановления устройства» (device lost & restore) – к такому состоянию Direct3D приходил после нажатия Alt+Tab, Win+L (блокировка сессии) или Alt+Enter (переключение между полноэкранным и оконным режимами). При возникновении подобной ситуации игра должна была освободить все занятые ею ресурсы Direct3D, произвести сброс устройства, затем пересоздать эти ресурсы заново. Что происходило, во-первых, медленно, во-вторых, код обработки описанной ситуации (иногда достаточно сложный) был рассредоточен по всему графическому движку, и в случае допущенной где-то ошибки игра просто «падала» после Alt+Tab. С такой проблемой, наверное, сталкивался каждый. Сейчас из Direct3D выделен отдельный модуль под названием DXGI (DirectX Graphics Infrastructure), который отвечает за общие вопросы управления 3D-адаптерами, дисплеями и экранными режимами, гаммой, презентацией финального изображения, а также обработку ситуаций переключения режима пользователем по Alt+Enter. И наконец, за счет избавления от всех устаревших возможностей, а значит, облегчения Direct3D runtime, вместе с переносом многих проверок правильности данных с этапа рендеринга на этап создания ресурсов, были облегчены многие вызовы Direct3D, т. е. теперь можно выводить на экран больше объектов в каждом кадре при прежней производительности.
Итак, мы видим, что Microsoft учла многие недостатки и ограничения прошлых поколений своего 3D API и постаралась их исправить, зачастую путем простого отказа от накопленного «балласта». Особое внимание было уделено повышению гибкости программирования 3D-конвейера, перспективе обеспечения еще большего параллелизма между CPU и GPU, снижению объемов передаваемых в видеокарту данных, улучшению менеджмента ее ресурсов. Добавление некоторых возможностей, таких как геометрические шейдеры, открывает путь к реализации многих систем и алгоритмов полностью на GPU (системы частиц, displacement mapping). Хотя ничто не дается даром – Direct3D 10 будет работать только с Vista и только с новым поколением ускорителей. Для всего остального придется использовать девятую версию.
Сейчас на рынке уже имеется одна линейка акселераторов с поддержкой Direct3D 10 – NVIDIA GeForce 8800, финальная версия DirectX SDK вышла в декабре, а вот финальную версию D3D10-совместимых драйверов под этот акселератор можно будет увидеть лишь в январе 2007 г., когда в розничной продаже появится Microsoft Windows Vista. В скором времени стоит ожидать как младшие модели в этой линейке ускорителей от NVIDIA, так и конкурирующий продукт от ATI, имеющий пока кодовое название R600 (поступит в I квартале 2007). По-видимому, первые игры с движками, поддерживающими новый API, начнут выходить к весне-лету 2007 г.; вероятно, ими станут Crysis от Crytek или игры на Unreal Engine 3.0 (Unreal Tournament 2007). Впрочем, оба эти движка также поддерживают и DirectX 9.0c, да и полный переход на новую версию API с отказом от поддержки предыдущей произойдет не раньше чем через полтора-два года, когда текущее поколение акселераторов окончательно устареет.

Ответить с цитированием