Сравнение качества графики в играх на видеокартах AMD и NVIDIA
реклама
Оглавление
- Вступление
- Способы оптимизаций
- Фильтрация текстур, подмена уровней текстур
- Манипуляции с шейдерами
- Алгоритмы сглаживания
- Фиктивные кадры
- Тестовый стенд и ПО
- Методика тестирования
- Тестирование
- Assassin's Creed IV: Black Flag
- Battlefield 4
- Crysis 3
- F1 2013 Codemasters
- Far Cry 3
- Hitman: Absolution
- Metro: Last Light
- Sleeping Dogs
- The Elder Scrolls V: Skyrim
- World Of Tanks 0.8.11
- Заключение
Вступление
Первоапрельский материал
|
Надеемся, вы вдоволь повеселились над нашим шуточным обзором гранёного стакана. А теперь серьезно.
реклама
Теория гласит, что конкуренция – благо для потребителя, механизм, который заставляет производителей повышать качество и снижать стоимость своей продукции. На практике, как известно, не существует такого преступления, на которое не пойдет капиталист ради хотя бы ста процентов прибыли. И жертвой этого преступления зачастую оказывается сам потребитель, не способный разобраться во всех тонкостях работы товара, который он приобретает.
Не являются исключением из правила и видеокарты. Из десятка с лишним компаний, присутствующих на рынке пятнадцать лет назад, остались лишь единицы, а разработчиков высокопроизводительных решений только два. И борьба за кошелек потребителя между NVIDIA и AMD (в девичестве ATI) продолжается все эти годы. В ход идут как объективные технические преимущества и достижения, так и маркетинг. Для того чтобы оценить производительность видеокарты, существует множество инструментов, но не всегда количество означает качество.
В начале прошлого десятилетия, в самый разгар борьбы между ATI и NVIDIA, сообщество энтузиастов было удивлено вскрывшимися масштабами махинаций с качеством картинки в угоду производительности у обоих вендоров. Стало ясно, что это не случайные ошибки и просчеты производителей, а заранее спланированные изменения в аппаратном и программном обеспечении, способные обеспечить прирост производительности в ущерб качеству построенного изображения.
Прежде, чем перейти к сравнению качества рендеринга современных видеокарт, вспомним, с чего начиналась нечестная борьба за скорость, какие механизмы использовали производители, чем все в итоге закончилось, и закончилось ли? Мы решили не давать молодому поколению фанатов новых аргументов для своих священных войн, поэтому не будем упоминать, кто из разработчиков использовал ту или иную технологию. А старое поколение и так все помнит, поэтому разве что ухмыльнется, или смахнет ностальгическую слезу. Приступим.
Способы оптимизаций
Фильтрация текстур, подмена уровней текстур
Считается, что начало махинациям с качеством картинки было положено на заре DirectX 8 видеокарт, с выходом GeForce3 и Radeon 8500. В то время, основная масса приложений использовала DirectX 7, который недалеко ушел по своим возможностям от простого 3D ускорения. Работа графического процессора, преимущественно, сводилась к выборке текстур и закраске сцены. Скорость выполнения данных операций очень быстро росла, удваиваясь практически каждое поколение, так что уже с выходом GeForce 2 GTS и Radeon 7500 производители столкнулись с избыточной производительностью в ряде задач и решили сделать акцент на качество картинки.
реклама
Новые видеокарты и приложения начали активно использовать вместо билинейной фильтрации текстур анизотропную, которая значительно улучшала качество картинки на дальних планах сцены. Трилинейная фильтрация позволяла сглаживать переходы между уровнями текстур. Естественно, эти механизмы начали использовать и в тестах производительности видеокарт, поскольку данные алгоритмы были ресурсоемкими и давали существенное снижение производительности. В условиях невысокой производительности центральных процессоров, зачастую неспособных прокормить графические, это был хороший способ разменять теоретическую производительность на практическое улучшение качества картинки.
Но очень быстро вскрылся ряд нюансов. В частности, видеокарты одного производителя демонстрировали заметное превосходство над конкурентом в ресурсоемких режимах с использованием анизотропной фильтрации. Но все очень быстро встало на свои места. Лидерство в скорости являлось следствием агрессивных оптимизаций алгоритма сглаживания, который работал только на поверхностях под углами 0 и 90 градусов, а на наклонных поверхностях, например 45 градусов, не работал вовсе. Кроме того, при использовании анизотропной фильтрации, отключалась трилинейная, и переходы между уровнями текстур становились заметны.
Но на этом игры с текстурами не закончились, в дело пошли манипуляции уровнями текстур. У каждой текстуры в игре есть несколько уровней, предназначенных для закраски сцены на разном удалении от наблюдателя. Максимальное качество и детализация под ногами персонажа, минимальное – вдали.
Таким образом, немного упрощается работа графического процессора по отрисовке дальних планов и экономится место в видеопамяти. Драйвер видеокарты подменял уровни текстур на более высокие, т.е. вместо нулевого, самого качественного, использовался первый, вместо первого – второй, и т.д. Качество картинки практически не страдало, а вот производительность вырастала на десяток процентов, а то и более, что в условиях жесткой конкурентной борьбы нередко становилось аргументом для потребителя.
Но рано или поздно, тайное всегда становится ясным. Энтузиасты вывели производителей на чистую воду, замалчивать и скрывать проблемы стало бессмысленно. Производители, в свою очередь, нашли способ выйти из положения с выгодой для себя. Они позволили пользователям самим выбирать между качеством, скоростью, или компромиссным режимом отрисовки сцены, добавив соответствующие органы управления в панель настроек драйвера. В конце концов, качество картинки страдало незначительно, а лишний десяток процентов производительности мог оказаться совсем не лишним.
Данный механизм управления качеством сохранился до сих пор в панели управления драйвера, хотя и изрядно эволюционировал, расширив области применения, поскольку ATI и NVIDIA находили все новые и новые способы повышать производительность в ущерб качеству.
Манипуляции с шейдерами
Добавив в панель управления драйвером механизм, позволяющий управлять оптимизациями качества текстур, производители решили лишь часть проблем, ведь помимо программных манипуляций были и аппаратные, в частности вышеупомянутый алгоритм анизотропной фильтрации только горизонтальных и вертикальных текстур. Исправить ситуацию можно было только выпустив новые GPU, что не было в те времена большой проблемой, линейки видеокарт обновлялись каждые полгода. Технологии не стояли на месте и возможности программирования железа росли. На смену DirectX 8 пришла его обновленная версия, DirectX 8.1, принесший поддержку пиксельных шейдеров версии 1.4.
Разумеется, оба производителя наперегонки начали рассказывать о том, что их графические процессоры поддерживают данный API в полной мере, но один из них слукавил. Возможности поддерживались не полностью, часть функционала не была реализована в железе, но производитель бодро рапортовал об успехах освоения новой версии API от Microsoft. Увы, первые же приложения с поддержкой PS 1.4 вскрыли несостоятельность этих заявлений, и для достижения требуемого качества сцены приходилось использовать пиксельные шейдеры версии 1.3 в несколько проходов, что фатально сказывалось на производительности. Но горевать по этому поводу долго не стали, наступала эпоха DirectX 9, эпоха, когда накал борьбы за скорость и кошельки потребителей достиг своего пика.
С выходом легендарных Radeon 9700 Pro и GeForce FX 5800 Ultra разница в подходах к реализации возможностей нового API стала видна невооруженным глазом. Один из производителей предлагал быстрый, но не очень гибкий в плане программирования графический процессор. Второй производитель заложил в свой продукт поразительные возможности программирования, значительно превышающие требования Microsoft, но расплачиваться за это пришлось скоростью работы в DirectX 9 приложениях. Отставание от конкурента было столь значительным, что компания не могла на это закрыть глаза.
Вскоре с помпой был выпущен драйвер, радикально повышающий производительность новых видеокарт в основных приложениях, которые использовались для оценки производительности, в частности, 3D Mark. Научно объяснить такие приросты было невозможно, а в магию энтузиасты не верили, так что пришлось в очередной раз разбираться с нововведениями эффективных менеджеров и программистов. Выяснилось, что драйвер видеокарты определял приложение и подменял код шейдера на более простой, дающий схожую, но не тождественную картинку. Обезвредить данную оптимизацию можно было простым переименованием исполняемого файла из, к примеру, 3dmark.exe в 3dmrak.exe. Драйвер не узнавал приложение, не подменял код шейдера, и скорость опускалась до старых, уже привычных значений.
Впрочем, впоследствии производитель опять сумел извлечь для себя выгоду и поднять производительность, на этот раз честно. Драйвер научился оптимизировать код шейдеров для исполнения без потери качества, т.е. менять и переставлять инструкции оптимальным, для исполнения на своем графическом процессоре, образом, но без каких либо отличий в качестве сцены.
Дальнейшее развитие поменяло производителей местами. Мощная, но негибкая графическая архитектура одной фирмы оказалась неспособна изогнуться под требования DirectX 9c и пиксельные и вершинные шейдеры версии 3.0. Второму производителю оказалось проще нарастить мускулы своим графическим процессорам в новой линейке, а по возможностям программирования пришлось внести очень незначительные изменения, благодаря заложенному в прошлую линейку фундаменту. Это был ад, как для пользователей, так и для программистов. Фактически сосуществовало несколько линеек адаптеров с разными возможностями, DirectX 9, 9a, 9b и 9с. Т.е. при написании игры, необходимо было учитывать все эти различия между семействами и использовать те функции, которые умело каждое конкретное семейство.
Но нюансов было много, а люди были склонны ошибаться, так что все это многообразие породило множество ошибок и артефактов в играх, которые исправлялись все новыми и новыми патчами. Сравнивать между собой различные семейства видеокарт по производительности стало практически невозможно. Из-за различий в железе, игровые движки давали разные картинки на разных подверсиях API, а попытки вручную выставить идентичные настройки качества часто приводили к появлению артефактов. Не обошлось и без заявлений производителей о поддержке тех API, которые графические процессоры поддерживали лишь частично, но это уже пройденный этап.
реклама
Стоит вспомнить и о точности вычислений. Производители часто декларировали более высокие точности, нежели умело их железо. К примеру, вместо заявленных 24-битных вычислений, были только 16-битные. Вместо 32-битных, 24-битная, а то и те же 16 бит. Это добавило множество бессонных ночей и седых волос программистам, которые честно пытались разобраться, почему на выходе получается совсем не то, что должно. А пользователи получали новые веселые артефакты в играх.
К счастью, Microsoft и вендоры сделали для себя выводы, и с приходом DirectX 10 требования к «железу» стали жестче, а возможности практически уравняли. Новое «железо» было значительно более гибким в программном плане, так что без особых проблем могло исполнять код всех подверсий DirectX 9.
Алгоритмы сглаживания
Казалось бы, с выходом DirectX 10 должно было наступить долгожданное счастье, и оно наступило, но не для всех. Видеокарты вышли задолго до операционной системы и игр с поддержкой нового API. Они обладали огромной математической производительностью, которую некуда было девать. Так что борьба вновь переместилась на поле качества изображения. К уже известным алгоритмам суперсэмплингового и мультисэмплингового добавились методы краевого сглаживания и сглаживая полупрозрачных текстур. Это позволило значительно повысить качество картинки ценой несущественного падения итоговой производительности. Пользователи были счастливы, а несчастными во всей этой истории в очередной раз оказались тестеры видеокарт.
Ведь алгоритмы сглаживания в панели управления множились как кролики в хороший год, и не всегда было понятно, чем метод сглаживания 4xQ отличался от 6x, какие алгоритмы были более качественными и как они комбинировались в различных настройках. Выяснилось также и то, что один из производителей обошел конкурента на поле качества и обладал более развитыми алгоритмами сглаживания. Но тут встала другая проблема, как сравнивать между собой видеокарты разных производителей при настройках высокого качества. Выставлять максимальное качество? Некорректно, ведь более качественная картинка требовала больше мощности, что сказывалось на производительности. Приводить к общему знаменателю? Тоже некорректно, ведь в таком случае не использовались новые прогрессивные алгоритмы, на которые производитель потратил транзисторный бюджет GPU.
Но эти вопросы прошли мимо большинства пользователей, немногие вдавались в такие подробности, да и того накала борьбы, что несколько лет назад, уже не было.
Фиктивные кадры
Отдельного упоминания заслуживают и относительно недавние исследования метода подсчета кадров. Один из производителей заявил, что выпустил специальный набор для тестирования производительности видеокарт, который способен честно считать количество отрисованых кадров. Особенности и извилистость пути кадра от игрового движка до изображения на мониторе позволяли некорректно подсчитывать количество кадров в секунду, отрендереных видеокартой. Ведь кадром могло считаться всего лишь несколько строк, вместо целой картинки. Производитель, таким образом, подчеркивал, что его решения дают не только более честные показатели скорости, но и более плавный видеоряд. Впоследствии, второй производитель выпустил обновление драйверов, в котором повысил плавность выводимого видеоряда, но это далось ожидаемым падением производительности. Так или иначе, в этот раз в выигрыше оказались, наконец-то, все.
Какие можно сделать выводы из написанного выше? Оба производителя неоднократно использовали различные ухищрения, чтобы повысить привлекательность своих продуктов. И эта борьба продолжается уже более десяти лет. Странно думать, что энтузиасты способны выявить все механизмы обмана потребителя, ведь дело давно поставлено на поток и лишь совершенствуется с течением времени. Значительная часть оптимизаций уже давно легализована и может быть настроена в панели управления драйвера. Аппаратных оптимизаций уже не осталось, все настраивается программно. Каждый сам может выбрать, что для него важнее, шашечки, или ехать.
Но выбор этот непростой. Стоит ли пожертвовать производительностью ради качества картинки? Насколько важно качество картинки и положение отдельных пикселей для игрового процесса? Готовы ли пользователи мириться с тем, что производители будут молча применять агрессивные оптимизации, незначительно, но все же меняющие картинку? Пускай с этим разбираются диванные теоретики и философы, а мы приступим к тестированию современных видеокарт с целью выявления различий в качестве изображения.
реклама
Страницы материала
Лента материалов раздела
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила