Тесселяция directx 11 что это
C выходом NVIDIA GeForce GTX 480 технологические возможности графических ускорителей AMD и NVIDIA в плане поддержки аппаратной тесселяции сравнялись. Как это сказывается на качестве картинки и кто из ускорителей лучше с этим справляется, попытаемся выяснить в этом обзоре
Разработчики DiRT 2 не стали включать в свой продукт поддержку DirectX 10, их детище работает либо с 9-й, либо с 11-й версией DirectX. Говоря откровенно, во время игры в DiRT 2 довольно сложно почувствовать разницу между визуализацией с помощью DX9 и DX11. Без пристального изучения скриншотов и демонстрационных роликов не обойтись.
Ну что же, посмотрим, как изменится производительность участников нашего теста при переходе от DirectX 9 к DirectX 11.
Все без исключения герои нашего теста в разрешении 1680x1050 показывают отличную производительность во всех режимах. Без полноэкранного сглаживания и анизотропной фильтрации, в DirectX 9 лидером оказывается видеокарта GeForce GTX 480, которая обходит как по минимальному, так и по среднему показателю частоты смены кадров даже Radeon HD 5970. Переход к DirectX 11 и включение тесселляции меняет расстановку сил и вот уже показатель минимальной частоты смены кадров выше у Radeon HD 5970, а средний наравне с GeForce GTX 480. Видеокарта AMD Radeon HD 5870 как в DirectX 9, так и в DirectX 11 оказывается медленнее GeForce GTX 480. Включение полноэкранного сглаживания и анизотропной фильтрации не влияет на расстановку сил между новинкой NVIDIA и Radeon HD 5870, а вот Radeon HD 5970 и в DirectX 9 и в DirectX 11 обходит GeForce GTX 480 как по минимальному, так и по среднему показателю fps.
В целом, повышение разрешения заметно повлияло на производительность всех участников тестирования, особенно в режимах со сглаживанием. Расстановка сил между Radeon HD 5870 и GeForce GTX 480 не изменилась, детище NVIDIA по-прежнему быстрее во всех режимах. А вот схватка GeForce GTX 480 с Radeon HD 5970 как со сглаживанием, так и без него, почти везде закончилась победой последнего.
В сцене Sun Shafts из игры S.T.A.L.K.E.R.: Зов Припяти не демонстрируют высокой частоты смены кадров даже самые мощные ускорители. Посмотрим, какую производительность покажут нам наши герои в DirectX 11 с включённой тесселляцией и без неё. Но для начала, несколько скриншотов.
Без тесселляции и сглаживания видеокарта AMD Radeon HD 5870 идёт наравне с GeForce GTX 480, с небольшим перевесом представителя NVIDIA по средней частоте смены кадров. Однако, стоит включить тесселляцию и GeForce GTX 480 обходит своего основного конкурента как по минимальному, так и по среднему значению fps. А вот после включения полноэкранного сглаживания GeForce GTX 480 сдаёт позиции и практически на равных выступает с Radeon HD 5870. Обратите внимание на то, что разница в производительности между режимами с включённой тесселляцией и без неё невелика. Это вполне закономерно, поскольку отличия в качестве картинки после активации тесселляции минимальны. Абсолютным чемпионом в разрешении 1680x1050 является видеокарта Radeon HD 5970, которая показывает лучшие результаты как с тесселляцией, так и без неё.
Рост разрешения не сильно изменил картину. Ускоритель Radeon HD 5970 всё ещё лидирует во всех режимах, GeForce GTX 480 слегка обгоняет Radeon HD 5870, за исключением, пожалуй, самого тяжёлого режима без тесселляции, но с включённым полноэкранным сглаживанием и анизотропной фильтрацией.
Включение тесселляции в современных компьютерных играх и тестовых утилитах, если те, конечно, поддерживают эту технологию, безусловно, самым лучшим образом влияет на качество картинки. Окружающий трёхмерный мир уже не кажется таким безжизненным нереально правильным. Те элементы, которые ранее были обычными текстурированными прямоугольниками, теперь выглядят более естественно, а игра света на их поверхностях буквально завораживает. Стоит отметить блестящее исполнение трёхмерного мира в Unigine Heaven Benchmark 2.0. Однако, что касается реальных игр, то здесь ситуация не столь однозначная. Без пристального рассмотрения скриншотов и видеороликов не так просто сходу ответить на вопрос, что же изменилось после включения тесселляции. Так что по-настоящему яркие впечатления от применения тесселляции в игровых проектах – это вопрос скорее перспективных игр. Будет ли в них эта технология задействована так же глубоко, как в Unigine Heaven 2.0? Хочется верить, что да. Что же касается расстановки сил между участниками нашего теста, то в режимах с включённой тесселляцией GeForce GTX 480 опережает Radeon HD 5870, как в «синтетике», так и в реальных играх. Противостояние GeForce GTX 480 и Radeon HD 5970 в современных играх оканчивается победой последнего, но в «синтетике» впереди GeForce, что позволяет предположить, что в перспективных играх результаты GeForce GTX 480 и Radeon HD 5970 будут ближе.
В этом коротком уроке мы рассмотрим состояния рендера (render state). Они позволяют настроить рендер и определяются тремя интерфейсами:
- ID3D11RasterizerState - Этот интерфейс используется для настройки стадии растеризации конвейера рендера.
- ID3D11BlendState - этот интерфейс используется для смешивания (blending).
- ID3D11DepthStencilState - этот интерфейс используется для настройки теста глубины и трафарета. Мы уже рассматривали настройку теста глубины (отключали Z буфер). Позже в другом уроке мы рассмотрим тест трафарета.
Давайте сначала рассмотрим ID3D11RasterizerState.
Состояние растеризации [ ]
Создайте проект, подключите к нему фреймворк 4 версии. Меш, текстуру и шейдеры возьмите из этого урока
В этом урок мы выведем меш два раза, один раз нормально (Solid) и второй - его сетку (WireFrame).
Рассмотрим следующий код:
Здесь мы описываем настройки и создаем два состояния растеризации. Также вы можете сделать чтобы рисовались только передние или задние примитивы, определить какие будут считаться передними, включить сглаживание и т.д. Эти параметры вы можете расмотреть самостоятельно, в будущем мы возможно затронем их.
Включение нужного состояния растеризации включается через метод RSSetState() контекста.
Вот что у вас должно получиться:
Смешивание [ ]
Эффект смешивания позволяет делать примитивы прозрачными, кроме того смешивание позволяет работать с альфа цветом.
Уравнение смешивания
В Direct3D для создания иллюзии прозрачности, мы используем уравнение которое вычисляет заключительный цвет. Уравнение имеет следующие переменные:
(ФЦ) - финальный цвет
(ИП) - исходный (Source) пиксель
(ЦП) - целевой (Destination) пиксель
(ИФС) - исходный (Source) фактор смешивания
(ЦФС) - целевой (Destination) фактор смешивания
(ФА) - финальная альфа
(ИА) - исходная (Source) альфа
(ЦА) - целевая (Destination) альфа
(+) - бинарный оператор
(Х) - умножение матриц
Direct3D использует два разных уравнения смешивания - для цвета и для альфы. Вот эти уравнения:
Бинарный оператор (+) может быть одним из перечисления:
Чтобы использовать данные уравнения, вы просто заполняете структуру D3D11_RENDER_TARGET_BLEND_DESC. Значениями из D3D11_BLEND и D3D11_BLEND_OP
Вы наверняка помните серию недавних скринов. Тогда Кристина Коффин сказала, единственное что я вижу на скринах – так это отключенную тесселяцию…
Tessellator (модуль тесселяции)
Тесселяция не является совершенно новой технологией, впервые её стали использовать видеопроцессоры Xenos, которые были разработаны компанией AMD для игровых консолей Xbox 360 в 2005 году. Однако модуль тесселяции использованный в DirectX 11 является более устойчивым и гибким, нежели модуль, использованный в графических процессорах Xenos.
Тесселяция – увеличения количества полигонов
Тесселяция улучшает процесс создания авторского контента и позволит разработчикам и художникам создавать более реалистичных и сложных персонажей, избегая при этом огромных расходов производительности системы. В основе тесселяции лежит идея о том, что объект, расположенный далеко от точки обозрения, будет менее детализирован, из-за того, что его тяжело рассмотреть, но по мере его приближения количество треугольников в изображении объекта экспоненциально увеличивается с целью улучшения его детализации для того, чтобы он выглядел более реалистично. Совершенством этого метода является то, что, при рассмотрении просчитанного изображения, среднее число обработанных треугольников остается близко к устойчивому значению, так что игроку существенно реже доведется встречаться с резкими падениями производительности его системы. Подобный выигрыш в производительности наиболее подходит для разработки консольных игр, потому что там аппаратные средства часто очень ограничены, но и для платформы ПК тесселяция принесет значительную выгоду.
Все стадии обрабатываются в графическом процессоре
Процесс тесселяции предмета начинается в Hull Shader (поверхностный шейдер) – он берет контрольные точки и вычисляет нужный уровень тесселяции. После этой базисной реорганизации контрольные точки отправляются в Domain Shader (доменный шейдер) – тесселятор абсолютно ничего не знает о контрольных точках. Вместо этого тесселятору предоставляют некоторое количество параметров тесселяции, которые задают ему требуемый уровень тесселяции на определенном патче (особые минимальные кусочки объекта). Hull Shader сообщает тесселятору, в каком порядке он должен работать – разработчик сможет определить, каким методом произойдет процесс тесселяции, поскольку модуль тесселяции располагает фиксированным комплектом функций, у него есть несколько операционных режимов. Тесселятор берет то, что было подано ему из Hull Shader и действует в патче над формированием требуемой добавочной геометрии. Как только эта стадия будет завершена, он выдаст доменные точки (domain points) и данные топологии. Доменные точки подаются в Domain Shader, который создает на их основе вершины, доступные прочей части конвейера. Одновременно данные топологии адресуются прямо на этап сборки примитивов конвейера – это совершается потому, что данные шейдерам не нужны, они подготовлены для растеризатора. Здесь нужно отметить то, что на всех этапах стадии тесселяции работа ведется не с треугольниками – вместо этого обрабатываются патчи и точки. Патчи представляют собой кривые или области поверхности и практически всегда являются четырехугольниками. Это первый случай, когда DirectX использует в качестве примитивов не треугольники, и это является существенным шагом вперед.
Минимальный уровень тесселяции
Максимальный уровень тесселяции
Все описаное выше осуществляется за один проход через конвейер DirectX 11. Исходя из этого, мы видим, что у него есть значительный потенциал стать невообразимо эффективным способом добавления огромного количества деталей в будущие игры.
Преимущества тесселяции
Поскольку с помощью тесселяции можно не только улучшать форму объектов, но и порою заметно изменять их геометрию, то в ряде источников управляемый процесс тесселяции называют геометрическими шейдерами.
Наиболее существенный вклад в новый уровень графики обеспечивает тесселяция, которую можно будет включить или отключить при необходимости. Именно это нововведение мы рассмотрим повнимательнее. На представленных ниже изображениях, вы сможете увидеть, какие именно изменения вступают в силу при включении и отключении тесселяции.
Без тесселяции
Тесселяция включена
Без тесселяции
Тесселяция включена
Без тесселяции
Тесселяция включена
Тесселяция на порядок повышает количество использованных полигонов в каждой сцене. Конечно, подобные эффекты можно реализовать и другими способами, однако применение тесселяции позволяет более эффективно использовать шину данных, а также легко масштабировать производительность при помощи настроек уровня детализации.
C выходом NVIDIA GeForce GTX 480 технологические возможности графических ускорителей AMD и NVIDIA в плане поддержки аппаратной тесселяции сравнялись. Как это сказывается на качестве картинки и кто из ускорителей лучше с этим справляется, попытаемся выяснить в этом обзоре
- AMD Radeon HD 5870
- AMD Radeon HD 5970
- NVIDIA GeForce GTX 480
-
Тестирование всех видеокарт в данном обзоре проводилось на стенде следующей конфигурации:
Тестовый стенд Центральный процессор Intel Core i7 870 @ 4.0 ГГц (182x22) Система охлаждения CPU Glacialtech F101 + 2 x 120 мм Материнская плата ASUS Maximus III Extreme Оперативная память Super Talent DDR3 @ 1890, 9-9-9-24-1T Жёсткий диск Samsung SpinPoint 750 ГБ Блок питания IKONIK Vulcan 1200 Вт Корпус Cooler Master test bench 1.0 Операционная система Microsoft Windows 7 x64 Ultimate Версии драйверов: Для видеокарт NVIDIA использовались драйверы ForceWare 197.17;
Для видеокарт AMD использовались драйверы Catalyst 10.3 c Catalyst CrossFireX Profiles 10.3Приложение Разрешение Графические режимы Варианты настроек тесселяции STALKER: Call of Pripyat. Сцена Sun Shafts 1680x1050
1920x1200DX 11, Max. Detail, No AA/AF, Real Shadows
DX 11, Max. Detail, 4xAA/16xAF, Real ShadowsTessellation Off
Tessellation OnColin MCRae DiRT 2 1680x1050
1920x1200DX 9 Ultra Detail, No AA/AF
DX 9 Ultra Detail, 4xAA/16xAF
DX 11 Ultra Detail, No AA/AF, Tessellation On
DX 11 Ultra Detail, 4xAA/16xAF, Tessellation OnUnigine Heaven v 2.0 1680x1050
1920x1200DX11, High Detail, No AA/4xAF Tessellation Off
Tessellation Moderate
Tessellation Normal
Tessellation ExtremeНачнём мы, пожалуй, с новой версии синтетического тестового пакета Unigine Heaven 2.0. Основной акцент в Heaven 2.0 был сделан на демонстрации различных режимов тесселляции. Пользователь может выбрать один из нескольких режимов работы этой технологии: выключена (Off), умеренная (Moderate), нормальная (Normal) и экстремальная (Extreme). Чтобы наглядно проиллюстрировать различия между вышеозначенными режимами, мы сделали несколько скриншотов:
Разница между режимами видна невооружённым глазом. Включение тесселляции в Unigine Heaven 2.0 придаёт изображению больше реализма. Часть объектов приобрела “жизненный” объём, благодаря чему, виртуальный мир стал восприниматься намного лучше. Ну что же, посмотрим какие результаты в этом тесте покажут самые мощные модели AMD и NVIDIA.
Во всех без исключения режимах тесселляции при разрешении 1680x1050 NVIDIA GeForce GTX 480 оказывается заметно быстрее своего основного конкурента – AMD Radeon HD 5870. Более того, при включении тесселляции, по минимальному показателю fps GeForce GTX 480 оказывается быстрее Radeon HD 5870 в разы! Самая большая разница между этими видеокартами в экстремальном режиме тесселляции. Видеокарта AMD Radeon HD 5970 оказывается быстрее топ-модели NVIDIA, но только до тех пор, пока не активирована тесселляция. В режиме moderate двухчиповый монстр от AMD всё ещё лидирует по среднему значению частоты кадров, однако проигрывает около 10 fps по минимальному значению. Переход к режиму Normal позволяет GeForce GTX 480 выйти почти на равных с Radeon HD 5970 по среднему значению частоты смены кадров, а по минимальному – опередить двухчипового соперника на всё те же 10 fps, как и в режиме moderate. Активация экстремального режима тесселляции кладёт на лопатки Radeon HD 5970, а вот GeForce GTX 480 как ни в чём не бывало, продолжает показывать приличную частоту смены кадров. Очень интересно, посмотрим, что будет при переходе к более тяжёлому разрешению.
Более высокое разрешение не изменило общее положение дел. В Unigine Heaven 2.0 после активации тесселляции, особенно в экстремальных режимах, идёт “на дно” даже Radeon HD 5970. В то же время детище NVIDIA производит благоприятное впечатление. Сложные сцены даются этому ускорителю заметно легче, чем конкурентам производства AMD. Справедливости ради, стоит отметить, что тестовый пакет Unigine Heaven 2.0 является синтетическим, что не позволяет переносить полученные в нём результаты производительности на реальные игры. Более того, пока что сложно сказать, будут ли игры, выпущенные в ближайшее время, поддерживать настолько сложные режимы тесселляции. От синтетики – к реальным играм, на очереди Colin McRae DiRT 2.
Разработчики DiRT 2 не стали включать в свой продукт поддержку DirectX 10, их детище работает либо с 9-й, либо с 11-й версией DirectX. Говоря откровенно, во время игры в DiRT 2 довольно сложно почувствовать разницу между визуализацией с помощью DX9 и DX11. Без пристального изучения скриншотов и демонстрационных роликов не обойтись.
Ну что же, посмотрим, как изменится производительность участников нашего теста при переходе от DirectX 9 к DirectX 11.
Все без исключения герои нашего теста в разрешении 1680x1050 показывают отличную производительность во всех режимах. Без полноэкранного сглаживания и анизотропной фильтрации, в DirectX 9 лидером оказывается видеокарта GeForce GTX 480, которая обходит как по минимальному, так и по среднему показателю частоты смены кадров даже Radeon HD 5970. Переход к DirectX 11 и включение тесселляции меняет расстановку сил и вот уже показатель минимальной частоты смены кадров выше у Radeon HD 5970, а средний наравне с GeForce GTX 480. Видеокарта AMD Radeon HD 5870 как в DirectX 9, так и в DirectX 11 оказывается медленнее GeForce GTX 480. Включение полноэкранного сглаживания и анизотропной фильтрации не влияет на расстановку сил между новинкой NVIDIA и Radeon HD 5870, а вот Radeon HD 5970 и в DirectX 9 и в DirectX 11 обходит GeForce GTX 480 как по минимальному, так и по среднему показателю fps.
В целом, повышение разрешения заметно повлияло на производительность всех участников тестирования, особенно в режимах со сглаживанием. Расстановка сил между Radeon HD 5870 и GeForce GTX 480 не изменилась, детище NVIDIA по-прежнему быстрее во всех режимах. А вот схватка GeForce GTX 480 с Radeon HD 5970 как со сглаживанием, так и без него, почти везде закончилась победой последнего.
В сцене Sun Shafts из игры S.T.A.L.K.E.R.: Зов Припяти не демонстрируют высокой частоты смены кадров даже самые мощные ускорители. Посмотрим, какую производительность покажут нам наши герои в DirectX 11 с включённой тесселляцией и без неё. Но для начала, несколько скриншотов.
Без тесселляции и сглаживания видеокарта AMD Radeon HD 5870 идёт наравне с GeForce GTX 480, с небольшим перевесом представителя NVIDIA по средней частоте смены кадров. Однако, стоит включить тесселляцию и GeForce GTX 480 обходит своего основного конкурента как по минимальному, так и по среднему значению fps. А вот после включения полноэкранного сглаживания GeForce GTX 480 сдаёт позиции и практически на равных выступает с Radeon HD 5870. Обратите внимание на то, что разница в производительности между режимами с включённой тесселляцией и без неё невелика. Это вполне закономерно, поскольку отличия в качестве картинки после активации тесселляции минимальны. Абсолютным чемпионом в разрешении 1680x1050 является видеокарта Radeon HD 5970, которая показывает лучшие результаты как с тесселляцией, так и без неё.
Рост разрешения не сильно изменил картину. Ускоритель Radeon HD 5970 всё ещё лидирует во всех режимах, GeForce GTX 480 слегка обгоняет Radeon HD 5870, за исключением, пожалуй, самого тяжёлого режима без тесселляции, но с включённым полноэкранным сглаживанием и анизотропной фильтрацией.
Включение тесселляции в современных компьютерных играх и тестовых утилитах, если те, конечно, поддерживают эту технологию, безусловно, самым лучшим образом влияет на качество картинки. Окружающий трёхмерный мир уже не кажется таким безжизненным нереально правильным. Те элементы, которые ранее были обычными текстурированными прямоугольниками, теперь выглядят более естественно, а игра света на их поверхностях буквально завораживает. Стоит отметить блестящее исполнение трёхмерного мира в Unigine Heaven Benchmark 2.0. Однако, что касается реальных игр, то здесь ситуация не столь однозначная. Без пристального рассмотрения скриншотов и видеороликов не так просто сходу ответить на вопрос, что же изменилось после включения тесселляции. Так что по-настоящему яркие впечатления от применения тесселляции в игровых проектах – это вопрос скорее перспективных игр. Будет ли в них эта технология задействована так же глубоко, как в Unigine Heaven 2.0? Хочется верить, что да. Что же касается расстановки сил между участниками нашего теста, то в режимах с включённой тесселляцией GeForce GTX 480 опережает Radeon HD 5870, как в «синтетике», так и в реальных играх. Противостояние GeForce GTX 480 и Radeon HD 5970 в современных играх оканчивается победой последнего, но в «синтетике» впереди GeForce, что позволяет предположить, что в перспективных играх результаты GeForce GTX 480 и Radeon HD 5970 будут ближе.
Читайте также: