Донецкий национальный технический университет г.Донецк
Кафедра прикладной математики и информатики
E-mail: calipso.kate@mail.ru
Аннотация
Зори С.А., Иванова Е.В. Применение технологий параллельных вычислений для реализации реалистической 3Д – графики. В статье рассматривается вопрос возможности применения технологий параллельных вычислений для реализации методов и алгоритмов реалистической визуализации трехмерных моделей объектов и сцен по классу трассировки лучей.
Общая постановка проблемы.
Создание продукта, который использует CUDA для визуализации объектов, с применением RayTraycing является одним из наиболее ожидаемых на сегодняшний день среди новых технологий. Компания PIXAR очень заинтересована в использовании CUDA в своих проектах. В связи со стремительным развитием производительности систем ожидается создание готовой, обещанной системы виде библиотеки, которую можно будет применять для решения собственных задач.
Постановка задач исследования.
Методы реалистической визуализации на сегодняшний день применяются во множестве областей деятельности, например, трехмерная графика, визуализация сцен, моделирование природных и атмосферных явлений, океанических поверхностей, для которых качественная визуализация является важной задачей. В данной работе необходимо исследовать возможность распараллеливания этих методов для более эффективной реализации данной задачи: ускорения выполнения метода, более эффективное использование ресурсов.
Решение задачи и результаты исследований.
Для решения поставленной задачи был произведен анализ метода трассировки лучей для визуализации трехмерных сцен, найдена возможность его распараллеливания для ускорения процесса выполнения RayTraycing, поскольку временные затраты для реализации связаны не со сложностью вычислительных процесса, а с большим объемом идентичных операций.
Метод трассировки лучей часто используется в 3D-графике, но он слишком трудоёмок, чтобы использовать его в графике реального времени. Поэтому в будущих приложениях возможно применение трассировки совместно с растеризацией.
Трассировку непросто выполнить эффективно на GPU, ведь просчитываемые лучи имеют непредсказуемые направления, и их просчёт требует доступа к памяти по случайным адресам, в то время как GPU обычно получают данные из памяти линейными блоками. Технология CUDA, которую разрабатывает и продвигает компания NVIDIA, использует помимо архитектурных особенностей еще и разделенную на пять частей память, для более эффективного использования кристалла.
Были проанализированы возможности графических процессоров для выполнения математических вычислений, рассмотрены возможности языка CUDA, предназначенного для написания приложений, выполняющихся на графических процессорах.
Выводы.
В последние годы значительно увеличилась реалистичность отрисовываемой в реальном времени картинке. И в основном эти улучшения были обусловлены стремительным развитием программируемых пиксельных шейдеров. Но компьютерная графика — это не только растеризация, есть ещё трассировка лучей.
Попиксельная обработка изображения в играх, области деятельности применяющей реалистическую визуализацию наиболее часто и широко, достигла довольно приличного уровня, и пиксельные эффекты достаточно сложны, в то время как геометрическая сложность даже в самых лучших играх и приложениях заметно отстаёт. В кадре игровых проектов обрабатывается максимум до 1-2 миллионов полигонов, что несравнимо с сотнями миллионов в анимационных проектах, к которым стремится качество графики реального времени.
Это положение объясняется тем, что аппаратная и программная поддержка в аппаратной 3D-графике длительное время росла в сторону усиления именно пиксельных шейдеров. Альтернативным решением качественной разбиение примитивов (tessellation, тесселяция) и наложение карт смещения (displacement mapping). К реализации этого решения и стремится компания NVIDIA произведя изменения в архитектуре, использующей несколько так называемых полиморфных движков (PolyMorph Engines) и блоков растеризации (Raster Engines), работающих параллельно, по сравнению с одним подобным блоком во всех предыдущих поколениях GPU.
Продолжается работа по созданию библиотеки, которая позволила бы использовать CUDA GPU для решения задач трассировки лучей. Это базовый уровень. Предполагается, что на основе этой библиотеки вы будете строить свои приложения — визуализация с использованием Raytracing, или какие либо другие задачи. Это оптимизированная реализация трассировки лучей в общем смысле не обязательно для рендеринга и оптимизированная для NVIDIA процессоров GPU. Внутри компании идет серьезная работа в этом направлении например, вопрос реализации альтернативных конвейеров рендеринга на GPU. Компания специально развивает проект реализации Rays на CUDA. Так же проект из Microsoft Research где, они реализовали RenderMan с помощью CUDA и получили очень хорошее ускорение. Но пока это находится на стадии разработки и экспериментов.
Список литературы