
Ответы на вопросы к экзамену / 12 Индексированные каркасные сетки
.docx12. Индексированные каркасные сетки.
а)точки
расположены через регуляторные (равные)
промежутки. б) точки на разных расстояниях.
Рассмотрим задачу моделирования участка поверхности, который может подвергаться случайным деформациям. Один из примеров – моделирование поверхности жидкости (рябь на воде – хаотичные искревления).
Каркасная
сетка представляет собой совокупность
связанных узлов,
поэтому изменение атрибутов какого-либо
узла должно отражаться на всех связанных
с ним узлах. В то же время на графическом
конвеере вершины и примитивы (треуг-ки)
обрабатываются независимо. Например,
для ячейки 1, сформированной из треуг-ов
1 и 2 некоторые из вершин ассоциированы
также с ячейками 2, 4, 5 и с треуг-ми 3, 4, 7,
8, 9.
Вершинный шейдер получает для обработки вершину, соотносимую с каким-либо из треуг-в, поэтому узлы исходной сетки обрабатываются столько раз, сколько реуг-в их содержат.
Независимая
обработка приводи к тому, что фактически
один и тот же узел распадается на одельные
составляющие, которые вообще говоря
могу получить разные атрибуты, нарушая
целостность исходной конструкции.
Простое решение проблемы заключается в использовании спец-го атрибута вершины – номер ячейки, которой принадлежит, а также дополнительной конкретизирующей инф-и, например, с какой стороны находится вершина.
Алгоритм обрабатывающей вершины с необходимостью получает эту дополнительную инф-ю. Он обязан учитывать эту инф-ю, так чтобы вершины, относящиеся к одному и тому же узлу, обрабатывались бы одинаково.
Недостатки:
1)Значительное увеличение объёмов памяти, обводимых под атрибуты вершин.
2)Усложнение алгоритма, так чтобы независимая обработка оказалась согласованной.
3)Дублирование вычислений для совпадающих вершин, которые отличаются идентификациями и принадлежат к разным треуг-м, но фактически относятся к одному и тому же узлу.
Эффективное
решением проблемы:
разделение инф-и о вершинах и связях.
Связи задаются специально информационным
массивом – индексами вершин, а вершины
хранятся отдельно без дублирования. В
этом случае обработке подвергаются
раздельно индекся, вершины и примитивы.
2)а)содержимое вершинного буфера
б)содержимое индексного буфера ([] –адрес номера)
Вершинный буфер хранит непосредсвенные значения атрибутов вершин, а индексный буфер – ссылки на эти элементы. Поэтому дублирование вершин заменяется дублированием индексов, ссылающихся на одно и то же место в вершинном буфере. Поскольку размер индекса невелик (32 бита), накладные расходы значительно снижены по сравнению с неиндексированным доступом.
Модификация вершин не затрагивает индексный буфер.
Независимая обработка вершин производится по-прежнему, однако шейдер вызывается для изолированной вершины, считающейся точкой.
Поддержка
индексируемого доступа должна быть
реализована в аппаратуре, кроме того
применяется иная модель
рендеринга: (этапы)
1)Заполнение индексов.
2)Заполнение атрибутов вершин.
3)Индексированный вывод примитивов без дополниельных вычислений атрибутов.
Индексированный вывод можно использовать в том числе для процедурной генерации псевдослучайного микрорельефа поверхности. Этот способ является альтернативным по отношению к способу с картами смещения.
Сетка индексов строится однократно с необходимой детализацией и применяется в последствии для рендеринга всех поверхностей, для которых эта детализация достаточна. Затем для каждого участка, обладающего случайным микроренгеном, формируется много троек (х, у, z) в кол-ве, совпадающем с кол-вом узлов в сетке индексов.
Значения х, у, z выбираются псевдослучайно в нужном диапазоне.
После того как сформированный набор вершин подвергся индексированному выводу, узлы сетки индексов получают некоторое случйное расположение в 3D-пространстве. В то же время все сложные грани принципиально остаются неразрывными уч-ми поверхности. Если бы индексация не применялась, то для формирования такой сетки было бы необходимо сгенерировать множество треуг-в. С одной стороны, случайно ориентированных но, с другой стороны, сохраняющих смежнось граней, что требует нетривиального алгоритма.
Для тех случаев, когда рельеф формируется описанным образом на объектах, расстояние от которых до наблюдателя может измениться, требуется изменять детализацию сетки индексов: уменьшать кол-во узлов для удалённых объектов и увеличивать для близких.
При плавном изменении детализации новые вершины должны добавляться к множеству уже существующих, поэтому нельзя заменять «старые» случайные точки новыми, а «дописывать» в промежутках между существующими.