|
ФИЗИКО-МАТЕМАТИЧЕСКОГО ЛИЦЕЯ № 30 of 30 Phys-Math Lyceum Tough Realtime RaytracingАвторы:
Научный руководитель проекта: Галинский Виталий Александрович Разработка системы построения фотореалистичных сцен в реальном времениВведение и постановка задачиЗадача синтеза фотореалистичных изображений в реальном времени является достаточно актуальной в наше время. Она используется во множестве различных областей нашей жизни: от медицины до компьютерных игр. Все возрастающие мощности компьютеров позволяют строить очень сложные сцены в реальном времeни. Целью проекта является построение фотореалистичных изображений в реальном времени, с помощью алгоритма обратной трассировки лучей [1]. Для реализации этого нами была реализована система использования графического процессора (GPU) и распределения задач по сети на нескольких компьютерах. Такое построение системы обеспечивает значительный прирост производительности из-за особенной структуры графических процессоров, которая позволяет выполнять параллельно большое количество одинаковых программ на различных входных данных. Таким образом, появляется возможность обойти основной недостаток классической обратной трассировки лучей - низкую скорость построения изображения. В свою очередь, распределение задач по сети позволяет добавить еще больше параллельных потоков и добиться повышения производительности.Использование графического процессораШейдер - это программа для одной из ступеней графического конвейера. Поскольку на современных видеокартах шейдера исполняются на ней самой, то есть на графическом процессоре, то их использование для вычислений может заметно уменьшить нагрузки на главный процессор. Так же следует отметить, что GPU и CPU не являются взаимозаменяемыми и используются там, где наиболее выгодно использование того или другого процессора. Так на GPU происходят много параллельных вычислениях, а CPU распределяет задачи и вычисляет то, что не может считаться параллельно. Это связанно с особенностями организации CPU и GPU. Из-за того, что GPU имеет архитектуру, отличную от CPU, требуется генерация для него особенного машинного кода. Этот машинный год генерируется из языка "cg". Для взаимодействия с GPU была реализована система управления потоками (streams) и ядрами (kernels) [8]. Под потоком понимается набор данных доступных либо только для чтения, либо только для записи. Нами была разработана система управления потоками с помощью текстур DirectX. Под ядром понимается программа, обрабатывающая данные в потоке. Реализуются ядра с помощью фрагментных шейдеров. Это единственный способ проводить общие вычисления на графическом процессоре. Недостатком этого алгоритма является неудобство использования и сложность реализации. Преимуществом является то, что множество вычислений производятся параллельно, что позволяет достичь большой производительности. Это основное преимущество и легло в основу разработанной системы.Сетевое взаимодействиеК сожалению даже самые мощные компьютеры в мире не всегда могут предоставить необходимую производительность для построения фотореалистичных трехмерных сцен в реальном времени, несмотря на все наши оптимизации. С целью решения этой проблемы мы разработали и реализовали протокол для растеризации сцены сразу на нескольких компьютерах, соединенных в локальную сеть. Вся система разбита на две части - клиент и сервер. Сервер занимается тем, что распределяет части сцены между клиентами, принимает ответы от них и выводит окончательный результат. Кроме того, в задачи сервера входит передача данных о сцене, и различных параметров рендеринга (например, глубина рекурсии при трассировке лучей). Клиент же производит вычисление заданной ему части и возвращает серверу уже часть готового изображения.Трассировка лучейСуть синтеза фотореалистичных изображений сводится к алгоритму обратной трассировки лучей (Turner Whitted, 1979). Обратная трассировка лучей - технология построения изображения, при которой исследуется распространение светового луча от зрителя к сцене с учетом законов геометрической оптики. У этого алгоритма много достоинств, одним из которых является то, что он легко делится на независимые подзадачи, что применяется при вычислениях на графическом процессоре и распределенном счете по сети.ЗаключениеКомандой разработчиков была реализована система, с производительностью ограниченной лишь количеством компьютеров, позволяющая синтезировать любые по сложности изображения в реальном времени. Большинство аналогичных готовых программ не используют сеть и GPU для вывода и снижения нагрузки с CPU. Например, ни одна компьютерная игра не позволяет для некоторых вычислений подключить дополнительный компьютер. В дальнейшем планируются провести дальнейшую оптимизацию комплекса, что, возможно, в недалеком будущем позволит разрабатывать компьютерные игры, симуляторы, визуализаторы различных физических процессов в реальном времени, используя разработанную систему.Литература
|
|