Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

06.11.2008 12:02 | deeper2k

Термин "тесселяция" стал широко обсуждаться, начиная с выпуска 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, так что у него есть высокий потенциал стать невероятно эффективным способом добавления большого количества деталей в будущие игры. Конечно же, разработчики не обязаны использовать эту стадию конвейера, если им не хочется - если требуется, тесселяцию можно полностью пропустить.


Источник: http://www.bit-tech.net
Перевод: Dazila

Комментарии

Не в сети

уроды в играх станут ещё уродливее

06.11.08 12:44
0
Не в сети

_gogast_
СТОПЯТСОТ

06.11.08 13:32
0
Не в сети

Пока своими глазками на своём компе всё это не увижу , хоть чё пусть пишут

06.11.08 19:13
0
Не в сети

gogast отжог
Хотя на самом деле, по идее оно должно так перестраивать удаленные модели, чтобы при меньшем количестве треугольников они выглядели лучше (чем как это обычно бывает при уменьшении треугольников удаленных моделей самим движком игры). Я так понимаю. Хотя действительно, пока не увижу сам, не смогу сделать какие-то конкретные выводы.

06.11.08 20:49
0
Не в сети

Тесселяция разве не фича DirectX 10.1?

06.11.08 22:33
0
Не в сети

В принципе ничего нового, но приятно что это функция наконец станет аппаратной. Первое применение программной тесселяции, на моей памяти, ну или чего-то очень близкого по смыслу к сегоднешнему понятию, можно было видеть еще в Unreal Engine 1998 года. А наиболее отчетливо, в чуть позже вышедшей на этом же движке Rune. Применительно к этому движку стоит отметить что тогда это технология описывалась в разных изданиях как "Выщипывание полигонов", т.е. из базовой можели выкидывали полики по мере отдаления объекта от камеры. Сейчас решили делать наоборот

07.11.08 07:09
0
Не в сети

Поддержка тесселяции была в Serious Sam SE. И вроде как работало на видеокартах ATI того времени 7xxx/8xxx серии.

07.11.08 21:50
0
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.032 секунд (Общее время SQL: 0.014 секунд - SQL запросов: 65 - Среднее время SQL: 0.00022 секунд))
Top.Mail.Ru