Загрузка...
Space Hulk: Deathwing - 13 минут геймплея сингплеерной кампании
Space Hulk: Deathwing - 13 минут геймплея сингплеерной кампании
Dead Rising 4 - Официальный трейлер к выходу игры
Dead Rising 4 - Официальный трейлер к выходу игры
Prey - Bethesda презентовала новое геймплейное видео
Prey - Bethesda презентовала новое геймплейное видео
LawBreakers - Клифф Блезински показал новый трейлер своего шутера на The Game Awards 2016
LawBreakers - Клифф Блезински показал новый трейлер своего шутера на The Game Awards 2016
 FLASH ИГРЫ     ВСЕ ИГРОВЫЕ ВИДЕО

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

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

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


Предисловие

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

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

Вступление

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

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


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

Обратная трассировка

В данном случае, точка объекта напрямую освещается только одним источником света, второй заслонен другим объектом.

Таким образом, происходит некоторая симуляция распространения света. Метод имеет множество сложных модификаций, но в их основе лежит «трассировка луча», то есть, нахождение пересечения луча (света) с объектами сцены.

Проблема

Пусть метод трассировки и позволяет отрисовать сцену с эффектами освещения, прозрачностью и отражениями, он вычислительно крайне затратен. Операция нахождения пересечения произвольного луча с объектами сложной сцены весьма нетривиальна. И она не может быть так же легко ускорена специальными (достаточно простыми) «ускорителями», как математически простая операция растеризации треугольников. Поэтому, в игровой графике используется растеризационный метод, который позволяет быстро нарисовать геометрию, то есть, фигуры объектов и текстуры со всевозможными шейдерами. А освещение почти всей сцены статическое. Только для отдельных движущихся моделей используются частные методы рисования теней. Они тоже основаны на растеризации: тени, по сути, просто рисуются.

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

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

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

Но геометрию сцены трассировкой лучей рисовать не выгодно, хотя это зависит от сцены. Сцены определенного плана эффективнее рисовать трассировкой, но сцены из современных игр далеки от этого класса.

Далее в статье мы предметно рассмотрим различные проекты в области трассировки, но, например, в свое время Intel демонстрировала рендеринг уровней из Quake III с помощью трассировки. Низкополигональные уровни в низком разрешении медленно рисовались на очень дорогой и продвинутой системе, далекой от потребительского рынка. Фишка была в том, что можно рисовать динамические тени и сложные отражения.

Но человеческое зрение и восприятие так устроено, что оно очень адаптивно к освещению. Собственно, всякие тени только мешают человеческому глазу выделять необходимые ему объекты. Например, при охоте, типичном занятии наших предков, в тенях деревьев могла скрываться добыча. Надо тени убрать с виртуального изображения, формирующегося в мозге.

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

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

Примеры

3D шутер

Рассмотрим, например, такую сцену. Скриншот из недавно вышедшего мегабюджетного 3D-шутера, который сразу побил рекорды продаж и принес сотни миллионов долларов:

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


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

Для сюжета игры главное нарисовать город и дома по-детальнее, со всеми комнатами и лесенками. Помещения наполнить объектами и, самое главное, нарисовать модели оружия и самих бойцов.

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

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

Природа

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

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


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


Сразу можно отметить, что освещение почти полностью рассеянное. Солнце скрыто за облаками. Теней вообще нет, просто дальние деревья скрываются в темноте чащи леса.

С помощью растеризации такую сцену можно нарисовать так: модели стволов и основных веток изобразить с помощью треугольников, а ветки изобразить спрайтами. Дальние деревья скрыть туманом.

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

А что может предложить метод трассировки лучей? С точки зрения рисования деревьев, ничего хорошего. Каждый луч придется пересекать с массой объектов, этих мелких веточек. Это крайне вычислительно сложно. Но, самое главное, это модель освещения. В этой сцене освещение рассеянное, мы не можем просто провести луч из точки объекта в направлении солнца и проверить, затенен ли он. Если мы, при отрисовке этой сцены, просто направим лучи вверх в небо из точек объектов, чтобы проверить, затенены ли они или освещены льющимся из облаков светом, то мы получим малореалистичную картинку. Будут некрасивые и неестественные тени на ветвях деревьев с резкими границами. Деревья так никогда не выглядят, потому что свет рассеивается в кронах деревьев и в воздухе.

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

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

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


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

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

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

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


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

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

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

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

Далее мы рассмотрим примеры реализации вариаций метода трассировки лучей в реальном времени, они позволят оценить необходимую для высокого реализма мощность. Но можно заранее сказать, что она примерно в 100-1000 раз превосходит мощность современных настольных систем.
Template not found: /templates/Default/splitnewsnavigation.tpl

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

Рекомендуем посмотреть В id Software ведутся работы над графикой нового поколения В id Software ведутся работы над графикой нового поколения Unlimited Detail: Технология Неограниченной Детализации Unlimited Detail: Технология Неограниченной Детализации Когда в игры придет фотореализм? Когда в игры придет фотореализм?
#1 написал: Plantagenets 15 марта 2010 12:10 |

--
я тоже очень много сложно и меня не касаеться
  • 0
 
#2 написал: skylight 15 марта 2010 13:00 |
Администрация
Андрей
Пол: Создатель Портала
23.08.2008
Новостей:56
Комментариев:501
Играет в: Игру как спасти портал от Правообладателей
изучайте 3д макс)) это что-то типа GLOBAL ILLUMINATION
  • 0
i7-3930K @ 3.2 GHZ RAM-16GB ASUS GTX1070 Windows 8.1(64) SSD 240 GB 120GB 2+4 TB HDD
 
#3 написал: Kantemir199 15 марта 2010 13:22 |

--
))))))) очень интересная статья ))) Блин Да они с ума сошли)))) нужно очень мощные системы чтоб все это работала))) да в будущем будут такие системы)))) блин не представляю какие процессоры станут через лет 20 - 50)))
  • 0
 
#4 написал: Elit 15 марта 2010 14:40 |
Победитель

Пол: Мужской
19.11.2009
Комментариев:1398
Kantemir199,

тогда я буду уже королём когда они это зделают
  • 0
 
#5 написал: Lisar 15 марта 2010 18:38 |
Победитель
Дмитрий
Пол: Мужской
Кал-град
17.10.2009
Новостей:92
Комментариев:931
Над этим работы достаточно давно уже ведутся... я читал когда-то, но уже не помню и с удовольствием прочту еще раз. Спасибо.
smile

П.С.
Учите дети физику^^
  • 0
 
#6 написал: klim 6 апреля 2010 19:28 |

--
последний обзац первой страницы очень огорчил тем, что в ближайшие лет 30 мы с обратной тассировкой точно не поиграем, так как нужен комп в 100-1000 раз мощнее сейчашних...
  • 0
 
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.

Новости релизов одной строкой

26.11.16
Watch Dogs 2 использует DENUVO.


ShortNews
FIFA 16 | Batman: Arkham Knight | Far Cry Primal | HITMAN | ADR1FT | Homefront: The Revolution | Sherlock Holmes: The Devil's Daughter | Just Cause 3 | Total War: Warhammer | ABZÛ | F1 2016 | GOD EATER 2 Rage Burst | Champions of Anteria | FIFA 17 | Battlefield 1 | Titanfall 2 | Dishonored 2 | Watch Dogs 2.

Топ релизеров за этот месяц

Losterkun
Новостей: 20/6277
 
neji_genius
Новостей: 9/8204
 

Топ Комментаторов за месяц

ratatooile
Комментариев: 6
 
Демитрий Сильмарилл
Комментариев: 4
 
Vovajan
Комментариев: 3
 
Igorische
Комментариев: 2
 
TORNADO R6
Комментариев: 2
 

Интересные Сайты