Суббота, 20 Апреля 2024, 16:15:20
Приветствую Вас Гость | RSS
Поиск
Главная | Каталог статей | Регистрация | Вход
Igor ViV
           Персональный Портал
Форма входа
Меню сайта

Категории каталога
Мои статьи [30]

Друзья сайта

Мини-чат

Наш опрос
Какая у Вас скорость интернета?
Всего ответов: 1184

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Мои статьи

Новые возможности DirectX 11 - Тесселяция
Термин "тесселяция" стал широко обсуждаться, начиная с выпуска Microsoft Xbox 360 в конце 2005 года, - разработанный ATI видеочип Xenos включал в себя выделенный аппаратный модуль тесселяции. Причина такого решения была весьма очевидна: это должно было улучшить процесс создания авторского контента и позволить разработчикам и художникам создавать более реалистичные и сложные персонажи, избегая при этом огромных накладных расходов. В основе этого подхода лежала идея, что объект, расположенный далеко от точки обзора, будет менее детализирован, потому что его тяжело рассмотреть, но по мере его приближения число треугольников в изображении этого объекта экспоненциально увеличивается с целью увеличения его детализации для того, чтобы он выглядел более реалистично. Достоинством этого метода является то, что, когда рассматривают полностью просчитанное изображение, среднее количество обработанных треугольников остается близко к постоянному значению, так что игроку значительно реже приходится сталкиваться с резкими падениями производительности. Традиционно, создание персонажей до момента, как к ним будет применена полигональная сетка, продвигается от Sub-D модели к анимированной модели с картами смещения. Как только сетка будет применена и даже до того, как её направят в GPU, она будет рассчитана в соответствии с различными уровнями детализации (LOD). Различные уровни LOD могут использоваться для различных классов аппаратных средств или они могут использоваться, когда персонажи или другие столь же значимые объекты находятся далеко от игрока - это добавляет сцене больше деталей с минимальными потерями в производительности.
Подобный выигрыш в производительности наиболее реален для консольной разработки, потому что там аппаратные средства зачастую очень ограничены. Для платформы ПК тесселяция приносит некоторую существенную выгоду. И это является одной из причин, почему AMD представило аппаратное обеспечение для тесселяции в Radeon HD 2900 XT, которое включено в состав всех последующих GPU компании. По сути оно пока что ещё не использовалось, но подобный шаг 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, так что у него есть высокий потенциал стать невероятно эффективным способом добавления большого количества деталей в будущие игры. Конечно же, разработчики не обязаны использовать эту стадию конвейера, если им не хочется - если требуется, тесселяцию можно полностью пропустить.
Категория: Мои статьи | Добавил: igorviv (07 Ноября 2008)
Просмотров: 1738 | Рейтинг: 5.0/2 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Copyright Igor ViV © 2024