
Ответы на вопросы к экзамену / 8 Тесселяция
.docx8. Тесселяция.
вершинный процессор
растеризатор
пиксельный процессор
DX9
геометр. процессор
вершинный процессор
растеризатор
пиксельный процессор
DX10
Для внесения возможности формировать внутри конвейера новые вершины, начиная с D.X. 10, появилась программируемая стадия обработки геометрии.
Геометрический процессор имеет возможность получить на вход не отдельную вершину, а отдельный треуг-к как примитив в целом, и в зависимости от содержащейся в нём инф-и выдать на вход фиксируемое кол-во новых примитивов, либо отбросить входной примитив.
Сохраняя возможность произвольно изменять атрибуты вершин примитивов, т. е. он аналогичен в этом смысле вершинному процессору.
Единственным недостатком такого решения является необходимость подачи на вход конвейера тех же самых низкоуровневых примитивов, из которых затруднительно строить сложные модели.
Существует объективная необходимость повышения уровня абстракции входных данных: требуется подавать на вход не столько примитивы, которые являются участками поверхности, сколько общую инф-ю о самой поверхности, её св-вах.
вершинный процессор
растеризатор
геометр. процессор
пиксельный процессор
процессор оболочек
тесселятор
доменный процессор
DX11
С разработкой D.X.11 на конвейере появляется стадия тесселяции, которая заключается в том, что из некоторых абстрактных наборов данных над управлением 2-х типов шейдеров формируется треуг-е каркасные сетки (на вход не подсекаются треуг-ки, а только инф-я как их можно было бы сформировать).
Процессор оболочек является фактически универсальным процессором, о котором следует говорить в терминах «вход» и «выход», полученных преобразованием входа по заданной программе, так что нельзя сказать, что шейдер оболочек обрабатывает какие-либо примитивы. В то время он должен явно указать один из трёх предусмотренных стандартных доменов. А именно равносторонний треуг-к, квадрат, изолиния.
Процессор оболочек дополнительно обязан выдать точную инф-ю о типе домена и об объёме разбиения домена, причём разбиение осуществляется независимо по граням и по внутренним участкам.
Посте
того, как заданы домен и факторы разбиения
в работу включается доменный процессор,
который аналогичен, по работе вершинному
и обрабатывает узлы полученной сетки.
Но помимо инф-и об узлах, он имеет в распоряжении инф-ю, которую может использовать с процессора оболочек произвольным образом.
Входные
данные для конвейера с тесселяцие
создаётся в виде набора контрольных
точек. Для 1-ой ступени (вершинная
обработка) эти контрольные точки
рассматриваются как составляющие
особого примитива, называемого патч
(patch).
Патч может быть задан от 1 до 32 контрольных точек. Каждая контрольная точка может содержать произвольный набор полей и обычно определяется в виде структуры на hlsl.
Аналогично вершинам при обработке без тесселяции контрольные точки обрабатываются независимо одна от другой, так что для вершинного пр-ра патч как единое целое не существует.
На след. стадии патч обрабатывается уже как единичны объект. Следующая стадия конвейера работает под управлением шейдера оболочек (hull) и на входе-выходе этого блока контрольные точки входные и выходные.
input control paints
hull shader
output control paints
tesselation factors
patch constant data
Помимо выходных контрольных точек, шейдер оболочек выдаёт также инф-ю, относящуюся ко всему патчу в целом. Кроме того, hull shader обязан выдать факторы тесселяции!
Шейдер оболочек обязан преобразовывать инф-ю из входных контрольных точек т.о., чтобы:
1) Аппаратный тесселятор смог разбить стандартные домены на треуг-е ячейки в необходимом кол-ве.
2) На дальнейших стадиях конвейера оказалось достаточно инф-и для работы с полученной детализированной треуг-й сеткой.
Тесселятор
работает над разбиением стандартного
домена, но при этом дальнейшие стадии
конвейера деформируют полученную
каркасную сетку произвольным образом,
пользуясь некоторыми стандартными
системами координат. Т.о., домен,
подвергающийся тесселяции, есть результат
преобразования патча в набор связанных
между собой узлов. Эти узлы идентифицируются
не контрольными точками, а стандартными
координатами типа (U,
V)
для квадрата или барицентрическими
координатами (U,
V,
W)
для треуг-ка.
Для эффективной загрузки графического конвейера с тесселяцией можно поручить вершинной стадии задачи анимации, а стадии тесселяции использовать для качественного освещения и прорисовки рельефа.
Обоснование:
объект обычно движется как единое целое,
вне зависимости от того, насколько
детализированна его поверхность.
Особым
преимуществом конвейера с тесселяцией
является экономия пропускной способности
канала из оперативной памяти в видеопамять.
Как правило, конвейер с тесселяцией имеет на входе меньше инф-и о трёхмерных объектах, подлежащей табличному заданию и больше - подлежащих вычислению. Но вычисления производятся в графическом процессоре и данные используются из видеопамяти, а не из систем RAM; по каналу передаётся ограниченное кол-во контрольных точек.
Другим плюсом конвейера с тесселяцией является приближение его модели к тем, которые приближены к графике выполняющийся не в реальном времени.