WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

загрузка...
   Добро пожаловать!

Pages:     | 1 || 3 |

Рис. 5. Сечение ДФО Рис. 6. Когерентное моделирование источника света ДФО параметризуются на основе углового описания направлений освещения и наблюдения. Поскольку ДФО могут иметь резкие изменения, то они табулированы нерегулярно. Опишем алгоритм вычисления ДФО. Прежде всего вычисляется переход из глобальной системы координат падающего и отраженного лучей (в которой осуществляется их трассировка) в локальную угловую. Векторы направления лучей пересчитываются в углы системы координат ДФО. Для этого необходимо использовать обратные тригонометрические функции, которые требуют много вычислительного времени. Из-за неравномерности сетки для нахождения ячейки, в которой будет осуществляться интерполяция, применяется бинарный поиск. Внутри ячейки значения ДФО интерполируются для данных направлений лучей.

Для того чтобы эффективно использовать SSE инструкции, вычисление ДФО должно производиться для четырех точек поверхности одновременно.

Были разработаны алгоритмы вычисления обратных тригонометрических функций для четырех аргументов, когерентного бинарного поиска четырех значений одновременно и интерполяции внутри ячейки.

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

В зависимости от размерности сетки ДФО когерентный бинарный поиск в среднем дает ускорение около 2.2 раза, что меньше 4, поскольку алгоритм содержит множество ветвлений, снижающих эффективность ОКМД команд.

Для получения окончательного результата необходимо произвести линейную интерполяцию табличных значений. Удалось достичь ускорения при моделировании ДФО с использованием SSE инструкций в 3.2–3.5 раз в зависимости от размера сетки по каждому из измерений.

Во втором разделе рассказывается об использовании SSE инструкций для моделирования источников света. Под этим понимается процесс вычисления падающей интенсивности света в данной точке поверхности. Когерентное SSE моделирование источников света состоит из нескольких этапов. Вначале для четырех точек поверхности генерируются четыре точки на источнике. Далее для четырех лучей между этими точками рассчитывается яркость света, идущего от источника. После этого остается рассчитать затенение (видимость) точек трассировкой четырех лучей. Если лучи столкнулись с каким-либо объектом между этими точками и источником света, то яркость луча обнуляется (рис. 6). Определение видимости может быть реализовано с помощью описанной выше процедуры SSE трассировки лучей.

Разработанная система поддерживает несколько типов источников света.

Их моделирование имеет небольшие отличия. Для того чтобы рассчитать освещение от неточечных источников света, необходимо проинтегрировать освещенность по протяженности источника несколькими лучами. От протяженных источников получаются естественные тени с мягкими границами — полутенями. Существуют точечные источники света с гониодиаграммами. Интенсивность такого источника представляется двумерной нерегулярной сеткой, чем очень похожа на ДФО. Фактически, оба алгоритма используют несколько общих функций.

Для большинства источников света ускорение превысило 4 раза. Помогла аппроксимация некоторых функций. Например, SSE инструкции позволяют вычислять обратную величину и квадратный корень за меньшее время с точностью близкой к полной 32 битной точности с плавающей точкой. Применение приближенных функций дает достаточную точность и визуально неотличимо.

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

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

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

При трассировке лучей с использованием SSE каждый раз, когда обнаруживается резкое изменение яркости, необходимо наиболее эффективно трассировать 4 новых луча, а не пытаться трассировать индивидуальные лучи. Поскольку ни один из опубликованных алгоритмов не удовлетворял этому требованию, то был разработан новый алгоритм, который позволил использовать когерентную трассировку вместе с адаптивной схемой устранения лестничного эффекта.

Во втором разделе главы 3 приведено описание нового алгоритма устранения ступенчатости изображения. Алгоритм делает предположение о том, что существуют два вида резких изменений (далее просто разрывов) функции яркости: вертикальные и горизонтальные. Это не значит, что алгоритм плохо определяет другие виды разрывов. Однако эти частые разрывы алгоритм пытается обработать наиболее эффективно. Предлагаемый адаптивный алгоритм имеет три уровня адаптации. Следующий уровень последовательно применяется в случае обнаружения резкого изменения яркости на предыдущем уровне.

Вначале для текущего блока выполняется растеризация в графическом процессоре. Это может избавить от трассировки множества дополнительных лучей для определения пикселей с геометрическими разрывами. На первом уровне используется регулярная выборка. Лучи трассируются четверками через углы пикселей (рис. 7). Алгоритм определяет вид разрыва: горизонтальный или вертикальный. Горизонтальный означает, что существует высокий градиент между точками A и B или точками C и D. Если разрыв определяется неоднозначно, то алгоритм просто выбирает горизонтальный разрыв. Такое решение не скажется на корректности, а скажется лишь на производительности. Если Рис. 7. Начальная 4-лучевая трасси- Рис. 8. Второй уровень адаптации, z0–z4 — ровка через углы пикселей зоны третьего уровня Рис. 9. Три четверки сравнений (b0–b3, Рис. 10. Зигзаги (четверки) лучей 3-го уровc00–c03, c10–c13) для определения зон ня. Каждый обстреливает одну из зон третьего уровня алгоритм обнаружил вертикальный разрыв, то точки ABCD поворачиваются на 90 градусов против часовой стрелки (рис. 8). Этот поворот обеспечивает дальнейшую линейность алгоритма независимо от вида разрыва. Если разрыв не обнаружен, то цвет данного пикселя определяется как среднее его угловых значений, иначе алгоритм переходит ко второму уровню адаптации для данного пикселя.

Четверка лучей трассируется через точки E, F, G, H как показано на рис. 8.

Для определения разрывов между точками первого и второго уровней используем 3 четверки сравнений: b0–b3, c00–c03, c10–c13, показанных на рис. 9.

Каждая четверка сравнений выполняется с помощью SSE команд над r, g, b компонентами цвета. Каждое SSE сравнение дает четырехбитную маску, которая используется как индекс в таблице определения разрывов. Значениями этой таблицы являются флаги, которые определяют зоны разрывов: z0, z1, z2, z3, z4 (рис. 8). Полученные флаги показывают зоны разрывов, где необходимо дополнительно трассировать лучи.

На третьем уровне через каждую разрывную зону трассируется четверка лучей зигзагом (рис. 10). Каждый зигзаг покрывает одну из разрывных зон.

Максимально выстреливается 5 зигзагов на пиксел. Заметьте, что точки каждого зигзага расположены с шагом всего в 4% стороны пикселя вдоль предполагаемого высокого градиента разрыва (рис. 10). Расположение всех точек детерминировано, поэтому можно предварительно вычислить для каждой из них вес, с которым ее цвет будет просуммирован для получения цвета пикселя.

а) Один луч на пиксел. б) Классическая реализация в) Новый адаптивный устранения ступенчатости. когерентный алгоритм.

Рис. 11. Сложный синтетический тест. Линии сходятся в точку Особенность устранения ступенчатости изображения состоит в том, что не существует идеального решения, с которым бы можно было сравниться. Также нет метрики, которая бы достаточно адекватно отражала человеческое восприятие ступенчатости. Поэтому за образец для сравнения по качеству была выбрана классическая реализация алгоритма устранения ступенчатости изображения. На рис. 11 показан сложный синтетический тест, где линии сходятся в точку. На рис. 11а изображение построено трассировкой 1 луча на пиксел, при этом имеем огромный муар и ступенчатость. За контрольный по качеству алгоритм устранения ступенчатости взята классическая реализация — через каждый пиксел трассируются 25 случайных лучей (рис. 11б). Муар и ступенчатость значительно уменьшены. Но из-за отсутствия адаптивности, этот алгоритм работает в 25 раз медленнее. Качество устранения ступенчатости предложенного адаптивного метода (рис. 11в) сопоставимо с качеством при трассировке 25 случайных лучей на пиксел (рис. 11б). Тесты показали, что в типичных сценах, при использовании предложенного адаптивного алгоритма и среднем количестве лучей на пиксел 1.5–2, может быть достигнуто качество, сравнимое с 25 лучами на пиксел регулярной выборки.

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

Свет источников, отраженный от поверхностей сцены, называется вторичным освещением. Для учета вторичного освещения необходимо выполнить трассировку лучей по всем направлениям. Метод называется обратной Монте-Карло трассировкой лучей. К сожалению, методы обратной МонтеКарло трассировки сходятся достаточно медленно, поэтому для получения точного решения необходимо огромное количество лучей. Для ускорения расчета большинство существующих алгоритмов накладывают ограничения на ДФО и освещение. Например, поддерживаются только ламбертовские ДФО или только плавное рассеянное вторичное освещение, что достаточно обременительно. Большинство реальных объектов имеют ДФО сложной формы, а падающее излучение неравномерно и имеет большой диапазон. В таких условиях остается мало альтернатив методам Монте-Карло трассировки лучей. Поэтому возникает потребность в создании алгоритмов, которые позволили бы использовать сцены со сложными ДФО и освещением, но были бы более эффективными, чем традиционные методы обратной Монте-Карло трассировки лучей.

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

а) б) в) Рис. 12. Схема работы алгоритма репроекции.

Новый алгоритм репроекции работает следующим образом. На рис. 12а показано как из точки A лучи трассируются по всем направлениям. Из точки A виден дальний объект (зеленые сектора) и ближний объект (синий сектор). В точках столкновения лучей с поверхностями, вычисляем значения падающего излучения. Серым показана область неизвестности (тени), которую не видно из точки A.

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

В точке B (рис. 12б), куда необходимо экстраполировать освещение, выполняется репроекция вычисленных в точке A и сохраненных в кэше значений падающего излучения (показаны пунктиром). Четыре значения излучения репроецируются одновременно, используя SSE. При репроекции учитывается перекрытие и затенение. Репроекция осуществляется слой за слоем, начиная от ближнего слоя и заканчивая самым дальним. При этом полноценного Z-буфера не нужно, можно обойтись лишь маской заполнения. Кроме того, для каждого п-элемента создается битовая маска неизвестности (тени). Она запрещает заполнение более дальних слоев в области неизвестности. Маски заполнения и неизвестности являются битовыми матрицами 128 128 бит.

Любая строка битовой матрицы — это 128 битная SSE переменная. Таким образом, битовые логические операции применяются для 128 битов одновременно.

Из-за дискретности точек после репроекции остаются бреши (рис. 12в).

Бреши и зона тени заполняются трассировкой лучей. Если бы затенение не учитывалось, то обратная сторона ближнего объекта (красный сектор) была бы учтена неправильно.

Рис. 13. Сравнение качества синтеза изображений метода Монте-Карло (слева), нового алгоритма репроекции (в середине) и нового алгоритма репроекции с последующей выборкой по значимости (справа) Метод Монте-Карло был выбран за образец для сравнения. Он сравнивался с предложенным методом репроекции падающего излучения. После репроекции, используя полученное решение, можно продолжить трассировать лучи более значимым образом и получить несмещенную оценку, что также было протестировано.

На рис. 13 показано сравнение изображений при использовании всех трех методов. Классический контрольный метод Монте-Карло дает шум. При этом детерминизм метода превращает шум в смещение с повторяющимся шаблоном, что визуально менее приемлемо. При использовании метода репроекции вместе с Монте-Карло трассировкой точность значительно повышается, а шум в освещении снижается. Качество изображения намного выше простого метода Монте-Карло.

Pages:     | 1 || 3 |






© 2011 www.dissers.ru - «Бесплатная электронная библиотека»