Wednesday, November 22nd, 2017

Новые возможности DirectX 11: тесселяция

Published on Март 2, 2009 by   ·   Комментариев нет

Термин «тесселяция» стал широко обсуждаться, начиная с выпуска Microsoft Xbox 360 в конце 2005 года, — разработанный ATI видеочип Xenos включал в себя выделенный аппаратный модуль тесселяции.

Причина такого решения была весьма очевидна: это должно было улучшить процесс создания авторского контента и позволить разработчикам и художникам создавать более реалистичные и сложные персонажи, избегая при это огромных накладных расходов.

В основе этого подхода лежала идея, что объект, расположенный далеко от точки обзора, будет менее детализирован, потому что его тяжело рассмотреть, но по мере его приближения число треугольников в изображении этого объекта экспоненциально увеличивается с целью увеличения его детализации для того, чтобы он выглядел более реалистично. Достоинством этого метода является то, что, когда рассматривает полностью просчитанное изображение, среднее количество обработанных треугольников остается близко к постоянному значению, так что игроку значительно реже приходится сталкиваться с резкими падениями производительности.

Традиционно, создание персонажей до момента, как к ним будет применена полигональная сетка, продвигается от Sub-D модели к анимированной модели с картами смещения. Как только сетка будет применена и даже до того, как ее направят в GPU, она будет рассчитана в соответствии с различными уровнями детализации (LOD). Различные уровни LOD могут использоваться для различных классов аппаратных средств или они могут использоваться, когда персонажи или другие столь же значимые объекты находятся далеко от игрока — это добавляет сцене больше деталей с минимальными потерями в производительности.

Подобный выигрыш в производительности наиболее реален для консольной разработки, потому что там аппаратные средства зачастую очень ограничены. Для платформы ПК тесселяция приносит некоторую существенную выгоду. И это является одной из причин, почему AMD представило аппаратное обеспечение для тесселяции в Radeon HD 2900 XT, которое включено в состав всех последующих GPU компании. По сути оно пока что еще не использовалось, но подобный шаг AMD заставил индустрию больше узнать о потенциальной выгоде, предлагаемой аппаратной тесселяцией.

Поговорив с Кевином Гии (Kevin Gee) из Microsoft и Ричардом Хадди из AMD, мы смогли подтвердить информацию о том, что тесселятор Xbox 360 (и видеокарт серий Radeon HD 2000, 3000 и 4000) несовместим с DirectX 11, но тесселятор DX11 покрывает все продукты, которые уже находятся на рынке. Другой хорошей новостью является то, что в тесселятор чипов серии Radeon HD 4000 действительно было внесено несколько изменений, предоставивших разработчикам доступ к соответствующей функции в приложениях DirectX 10 — это было невозможно с модулем тесселяции, находящемся внутри чипов серий HD 2000 и 3000.
К тому же, хотя разработчики вряд ли будут использовать этого для сегодняшних приложений, тесселятор RV7xx является действительно полезным инструментом, поскольку он позволяет разработчикам и художникам уже сегодня экспериментировать с тесселяцией в программной среде, которая, как ожидается, будет очень похожа на DirectX 11. В конце концов, графический конвейер DirectX 11 — это расширение DirectX 10, главным дополнением которого является тесселятор.

Во время презентации на Nvision 2008 Гии говорил о том, что модуль тесселяции DirectX 11 является более устойчивым и более гибким, чем модули тесселяции сегодняшних GPU AMD (включая Xenos). Однако интересно то, что он до сих пор непрограммируемый — он полагается на Hull Shader, который должен предоставлять ему правильную информацию, и на Domain Shader, который берет данные тесселятора и преобразует их в вершину прежде, чем отправить их далее по конвейеру.

Процесс тесселяции объекта начинается в Hull Shader (иначе поверхностный шейдер) — он берет контрольные точки и затем вычисляет требуемый уровень тесселяции. После этого базисного преобразования контрольные точки отправляются в Domain Shader (иначе зональный или доменный, шейдер) — тесселятор ничего не знает о контрольных точках.

Вместо этого тесселятору предоставляют некое количество параметров тесселяции, которые по сути сообщают ему требуемый уровень тесселяции на определенном патче. Hull Shader также сообщает тесселятору, в каком режиме он должен работать — разработчик сможет определять. каким способом будет выполняться процесс тесселяции, поскольку, хотя модуль тесселяции и обладает фиксированным набором функций, у него есть несколько операционных режимов.

Тесселятор берет то, что было передано ему из Hull Shader и работает в патче над созданием требуемой дополнительной геометрии. Как только эта работа будет закончена, он выдаст доменные точки (domain points) и данные топологии.
Доменные точки передаются в Domain Shader, который создает на их основе вершины, которые доступны остальной части конвейера. Тем временем, данные топологии направляются прямиком на стадию сборки примитивов конвейера — это происходит потому, что эти данные не нужны шейдерам, они предназначены для растеризатора.
Здесь важно отметить, что на всех этапах стадии тесселяции работа производится не с треугольниками; вместо этого, обрабатываются патчи и точки. Патчи представляют собой кривые или области поверхности и обычно являются четырехугольниками (иначе квадами). Конечно, патчи могут быть представлены и треугольниками, но это менее распространено, потому что большинство 3D-приложений авторинга работают с квадами. Это первый случай, когда DirectX работает без треугольников, так что это весьма существенный шаг вперед.

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

narrative papers

Источник: http://www.bit-tech.net





Смотрите также:

Tags: ,

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]