7994420702;horizontal

Проблемы трассировки лучей — из будущего в реальное время, часть 5

Подходы Intel  

«У нас есть такие приборы, но мы их вам не покажем…»  

Так можно описать изыскания Intel в области графики на основе трассировки лучей на данный момент. Ведущий производитель интегрированной растеризационной графики ведет исследования в области изображения игровой графики силами CPU на основе метода трассировки лучей. Надеясь, со временем, с ростом мощности CPU сделать ненужными видеоускорители: «CPU станут такими мощными, что сами будут в состоянии все нарисовать».

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

Скриншоты и видео получены с применением суперсэмплинга, то есть, картинка в большом разрешении уменьшается до меньшего разрешения. Это требуется для увеличения качества. Тем не менее, изображения и видео интересны и показывают особенности трассировки:

Quake Wars

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

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

Обратите также внимание, что тень от движущегося объекта резкая. Мягкую тень с помощью трассировки считать во много раз медленней. Так как для этого, в классическом варианте трассировки лучей, объемный источник света надо представить в виде совокупности точечных. И к каждому проводить луч и смотреть, затеняет ли он данную точку. И пересечение множества резких теней дадут, в совокупности, мягкую. А просто взять и размыть тень по поверхности — сложно, потому что соседние лучи ничего друг о друге не знают.

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

И ещё один момент: мы сравниваем то, что рассчитано на нескольких многоядерных процессорах, с графикой, посчитанной силами одного GPU. Но честнее сравнивать с тем, что можно рассчитать, хотя бы, на нескольких видеокартах. Причём в программе, изначально оптимизированной под мульти-GPU. Сразу можно сказать, что будет невероятная геометрическая детализация и все будет летать в высоком разрешении. Но не будет отражений. Зато будет много других эффектов и некие приближенные отражения.

Но если сравнить стоимость систем, а авторы RayTraced Quake Wars заявляют о том, что программа работает в реальном времени на 4-6 четырёхъядерных процессорах, то получается совсем невыгодно для трассировки лучей. Такая многоядерная система может стать настольной лишь через много лет. Сейчас это серверный рынок, с невероятными ценами.

Собственно, это видео подтверждает все, что мы обсуждали выше.

Но вот что интересно: авторы утверждают, что программа работает с 15-20 FPS, в разрешении 1280x720 на 4 четырёхъядерных процессорах частотой ~ 3GHz. Значит, на одном четырехъядерном процессоре она будет работать с частотой кадров минимум 7-10 в разрешении 800x600. Если считать, что скорость полностью пропорциональна количеству ядер, что типично для трассировки лучей. Или с частотой 15-20 в разрешении 640x360 (мы уменьшили разрешение в 4 раза, потому можно обойтись одним процессором, вместо четырёх). Было бы интересно посмотреть на это в действии. Тем более, сейчас появляются шестиядерные процессоры с 12 виртуальными потоками, их ещё можно разогнать. Даже можно будет поиграть в небольшом окошке, зато с необычными эффектами. Но ничего не выпущено. Скорее всего потому, что качество изображения будет ужасным из-за отсутствия сглаживания и малого количества лучей для сцены.

Пропавшие объекты в рэйтрейсинге

При небольшом количестве лучей, то есть, разрешении экрана, далекие объекты могут попасть между лучами.

Дорогое решение — увеличить число лучей

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

Что ж, авторы хотят представить программу сразу во всей красе на невероятном многоядерном процессоре будущего. Остается ждать и молиться на дальнейшее усовершенствование технических процессов производства, 32 нанометра  22 нанометра и так далее.

Рэйтрейсинг на Larrabee  

Когда представителя Intel спросили в интервью, как будет осуществляться рендеринг на Larrabee, с помощью растеризации или метода трассировки лучей, это был вопрос совсем непосвященного в компьютерную графику журналиста. У Larrabee 1 теоретическая производительность примерно как у четырёх четырёхъядерных процессоров, и она одного порядка с мощностью обычных топовых видеокарт, тем более двухпроцессорных. Какая трассировка лучей? Она там может быть только в маленьком окне. Собственно поэтому Larrabee и отменили, как графический чип. В обычной графике он неконкурентоспособен из-за железа и проблем с драйверами, их просто очень сложно сделать и рэйтрейсинг тоже не возможен.

Может быть что-то будет работать на Larrabee 2, который будет производиться по более совершенному техпроцессу и нести в себе много десятков процессорных ядер. Не таких, правда, сложных, как Core, но с широкими векторными расширениями и интенсивной мультипоточностью, которая удобна для трассировки лучей. Может быть, это будет благоприятный момент для трассировки лучей, если Larrabee 2 выйдет вовремя и на лучшем техпроцессе, чем видеокарты. Например, Intel перейдет на 22-х нанометровый техпроцесс, он всегда впереди по техпроцессу, а производители видеокарт будут все ещё на 40 нм. И такая фора в 4 раза по площади чипа, позволит трассировке лучей быть, в какой-то степени, конкурентной. Ведь эта фора в 4 раза может почти полностью транслироваться в производительность. Так как трассировка лучей замечательно масштабируется по количеству ядер.