ФизМатШкола № 30
 

ФизМатШкола № 30
ГРУППА КОМПЬЮТЕРНОЙ ГРАФИКИ
ФИЗИКО-МАТЕМАТИЧЕСКОГО ЛИЦЕЯ № 30

Computer Graphics Support Group
of 30 Phys-Math Lyceum

Tough Realtime Raytracing

Авторы:
1.Косуха АнатолийKosuha Anatoly11-1 класс
2.Лаевский ИгорьLaevsky Igor11-3 класс
3.Логачев ФедорLogachev Fedor11-3 класс

Научный руководитель проекта: Галинский Виталий Александрович

Presentation

Разработка системы построения фотореалистичных сцен в реальном времени

Введение и постановка задачи

Задача синтеза фотореалистичных изображений в реальном времени является достаточно актуальной в наше время. Она используется во множестве различных областей нашей жизни: от медицины до компьютерных игр. Все возрастающие мощности компьютеров позволяют строить очень сложные сцены в реальном времeни. Целью проекта является построение фотореалистичных изображений в реальном времени, с помощью алгоритма обратной трассировки лучей [1]. Для реализации этого нами была реализована система использования графического процессора (GPU) и распределения задач по сети на нескольких компьютерах. Такое построение системы обеспечивает значительный прирост производительности из-за особенной структуры графических процессоров, которая позволяет выполнять параллельно большое количество одинаковых программ на различных входных данных. Таким образом, появляется возможность обойти основной недостаток классической обратной трассировки лучей - низкую скорость построения изображения. В свою очередь, распределение задач по сети позволяет добавить еще больше параллельных потоков и добиться повышения производительности.

Использование графического процессора

Шейдер - это программа для одной из ступеней графического конвейера. Поскольку на современных видеокартах шейдера исполняются на ней самой, то есть на графическом процессоре, то их использование для вычислений может заметно уменьшить нагрузки на главный процессор. Так же следует отметить, что GPU и CPU не являются взаимозаменяемыми и используются там, где наиболее выгодно использование того или другого процессора. Так на GPU происходят много параллельных вычислениях, а CPU распределяет задачи и вычисляет то, что не может считаться параллельно. Это связанно с особенностями организации CPU и GPU. Из-за того, что GPU имеет архитектуру, отличную от CPU, требуется генерация для него особенного машинного кода. Этот машинный год генерируется из языка "cg". Для взаимодействия с GPU была реализована система управления потоками (streams) и ядрами (kernels) [8]. Под потоком понимается набор данных доступных либо только для чтения, либо только для записи. Нами была разработана система управления потоками с помощью текстур DirectX. Под ядром понимается программа, обрабатывающая данные в потоке. Реализуются ядра с помощью фрагментных шейдеров. Это единственный способ проводить общие вычисления на графическом процессоре. Недостатком этого алгоритма является неудобство использования и сложность реализации. Преимуществом является то, что множество вычислений производятся параллельно, что позволяет достичь большой производительности. Это основное преимущество и легло в основу разработанной системы.

Сетевое взаимодействие

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

Трассировка лучей

Суть синтеза фотореалистичных изображений сводится к алгоритму обратной трассировки лучей (Turner Whitted, 1979). Обратная трассировка лучей - технология построения изображения, при которой исследуется распространение светового луча от зрителя к сцене с учетом законов геометрической оптики. У этого алгоритма много достоинств, одним из которых является то, что он легко делится на независимые подзадачи, что применяется при вычислениях на графическом процессоре и распределенном счете по сети.

Заключение

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

Литература

  • Andrew S. Glassner (ed.). "An Introduction to Ray Tracing", Academic Press, 1989.
  • Frank D. Luna "Introduction to 3-D Game Programming with DirectX 9.0".
  • Kris Gray, "Microsoft DirectX 9 Programmable graphics pipeline", Microsoft Press, 2003.
  • Климов А.С. "Форматы графических файлов". К.: НИПФ "ДиаСофт Лтд.", 1995.
  • NVidia corporation. NVDIA GPU programming guide.
  • Johannes G?nther, Stefan Popov, Hans-Peter Seidel, and Philipp Slusallek Realtime Ray Tracing on GPU with BVH-based Packet Traversal Proceedings of the IEEE/EG Symposium on Interactive Ray Tracing 2007, pp. 113-118, Ulm, Germany, September 10-12, 2007
  • Stefan Popov, Johannes G?nther, Hans-Peter Seidel, and Philipp Slusallek Stackless KD-Tree Traversal for High Performance GPU Ray Tracing Computer Graphics Forum 26(3), 2007, (Proceedings of Eurographics), pp. 415-424, Prague, Czech Republic, September 3th - September 7th, 2007
  • Iliyan Georgiev and Dmitri Rubinstein and Hilko Hoffmann and Philipp Slusallek Real Time Ray Tracing on Many-Core-Hardware Proceedings of the 5th INTUITION Conference on Virtual Reality (to appear), Turin, Italy, October 6-8, 2008
  • General-Purpose Computation Using Graphics Hardware. (http://gpgpu.org)
ФМЛ № 30
 
Сайт Физико-математического лицея № 30, Санкт-Петербург, Россия