DirectX 10.1 против DirectX 10

24 апрель, 2009 - 16:45Евгений Пугач

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

Впрочем, не будем отвлекаться. В двух последних тестированиях - GeForce GTX 275 и Radeon HD 4890 - я использовал новое приложение Tom Clancy's H.A.W.X. Несмотря на то, что авиасимулятором наподобие X-Plane или MS Flight Simulator эту игру не назовешь, качество изображения в ней отменное. В первую очередь выделю огромные пространства, отображаемые на экране, высокую детализацию ландшафта (при создании локаций использовались спутниковые снимки от GeoEye) и отличную обработку световых и атмосферных эффектов (турбулентные потоки воздуха, реактивная струя из сопел двигателей, солнечные лучи и т.п.) Многое из этого обрабатывается довольно сложными шейдерами.

Разработчики решили не игнорировать возможности, предоставляемые серией ATI Radeon HD 4000, и внедрили поддержку DirectX 10.1. При этом, в отличие от большинства игр, в которых смена рендерера с DX9 на DX10 или DX10.1 (Stalker: Clear Sky) направлена на улучшение изображения, в H.A.W.X. целью является увеличение быстродействия. Упрощенно это достигается прежде всего тем, что DX 10.1 позволяет использовать более сложные и длинные шейдеры, которые благодаря функции Stream Out могут обрабатывать одни и те же примитивы (вершины, пиксели, текстуры и т.п.) несколько раз без нужды каждый раз вычитывать их из буфера. При более коротких шейдерах DX10 часть сложных процедур приходится разбивать на несколько мелких, и соответственно "гонять" данные из буфера и обратно для каждого шейдера.

Достигаемый переходом с DirectX 10 на DirectX 10.1 результат меня даже немного шокировал:

DirectX 10.1 против DirectX 10

Скажем прямо, получить +8-10% производительности установкой одной "галочки" в настройках очень даже приятно. Будем надеяться, в будущем разработчики продолжат использовать все возможности современных комплектующих.