Метод трассировки лучей против растеризации: новое поколение качества графики?

Введение

За последние немного лет метод трассировки лучей (ray tracing), похоже, стал "мечтой номер один" мира 3D-графики в реальном времени. Заинтересованность к этой технологии рендеринга вырос до максимума, когда юный исследователь Дэниел Похл (Daniel Pohl) объявил о своём проекте в области этой технологии ещё в 2004 году.

Причина интереса широких масс публики к работе заключалась, по большей мере, в том, что Похл сфокусировался на знаменитых играх id Software Quake III, Quake IV и шутере-франшизе Quake Wars 3D. Исследователь привлёк полно внимания со стороны прессы, а геймеры приступили предаваться мечтам о светлом будущем, когда их любимые игры будут просчитываться по методу трассировки лучей и избавятся от растеризации.

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

Intel достаточно стремительно обратила участливость на замысел, и компании он показался идеальным способом для оправдания увеличения числа ядер в процессорах. Фирма одним духом запустила собственную исследовательскую программу, и сегодня Intel ни в жизнь не упускает возможность подчеркнуть, что трассировка лучей является будущим 3D-игр в реальном времени. Но так ли это на самом деле? Какие технологические действительности скрываются за маркетинговой шумихой? Каковы реальные преимущества способа трассировки лучей? Можем ли мы дожидаться, что трассировка лучей заменит растеризацию? Мы попытаемся откликнуться на эти вопросы.

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

Основные принципы

Основная мысль приема трассировки лучей очень проста: для каждого пикселя на дисплее двигатель рендеринга проводит прямой луч от глаза наблюдателя (камеры) до элемента выводимой сцены. Первое пересечение употребляется для определения цвета пикселя как функции пересекаемой поверхности элемента.

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

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

В итоге мы получаем несколько типов лучей. Первичные лучи используются для определения видимости объекта и напоминают своего рода Z-буфер, используемый в растеризации. А вторичные лучи разделяются на следующие:

  • лучи тени/освещения;
  • лучи отражения;
  • лучи преломления.

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

Строгий приём трассировки лучей.

Данный метод трассировки лучей является результатом работы Тёрнера Виттеда (Turner Whitted), исследователя, тот, что изобрёл способ 30 лет обратно. До того времени приём трассировки лучей трудился только с первичными лучами. И улучшения, внесённые Виттедом, оказались гигантским шагом в сторону реализма рендеринга сцены.

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

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

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

Своеобычный приём трассировки лучей приводил к большому количеству ненужных расчётов.

Преимущества трассировки лучей

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

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

Карта окружения (environment map) даёт хорошее приближение к симуляции отражений окружающей среды, при всем при том способ трассировки лучей смочь симулировать более того отражения глаз машины Луиджи на капоте.

Отражения - это одна из областей, в которых способ трассировки лучей отлично показывает себя. Ныне в 3D-движках современных игр отражения рассчитываются с помощью карт окружений (environment map). Эта методика даёт хорошее приближение к отражениям объектов, расположенных "в бесконечности" или в окружающей среде (как разрешено лицезреть по названию), но для близко расположенных объектов подход показывает свои ограничения.

Разработчики игр-гонок, в частности, создали свои трюки для симуляции отражений близких объектов с помощью так называемых динамических кубических карт (dynamic cube maps). Камера располагается на уровне машины геймера, позже чего проводится рендеринг в основных направлениях. Потом результаты рендеринга сохраняются в кубических картах, которые и используются для вывода отражений.

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

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

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

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

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

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

Другие преимущества алгоритма трассировки лучей

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

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

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

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

Другим важным преимуществом является расчёт теней. В мире растеризации стандартом стала метод карт теней (shadow mapping). Но у неё несть немного проблем, такие как "лесенки" на контурах и объём используемой памяти. Способ трассировки лучей позволяет постановить проблему теней сильно элегантно, не прибегая к сложным алгоритмам, используя тот же предмет-примитив и не требуя дополнительную память.

В конце концов, ещё одним сильным преимуществом алгоритма трассировки лучей является "родная" вероятность работы с искривлёнными поверхностями. Уже немного лет у современных GPU есть поддержка искривлённых поверхностей (она то появляется, то исчезает по мере выхода новых драйверов и новых архитектур). Но ежели растеризаторам приходится исполнять изначальный доступ тесселяции, чтобы создавать треугольники (это единственный примитив, с которым мочь работать движок растеризации), то движок методом трассировки лучей мочь просто работать с пересечением лучей, без точного математического определения поверхности.

Другие преимущества метода трассировки лучей

Мифы о трассировке лучей

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

Начнём с того, что многие геймеры считают способ трассировки лучей принципиально лучше, чем растеризации, поскольку его используют в фильмах. Это не так. Большинство фильмов с синтезированной/рисованной картинкой (к примеру, все фильмы студии Pixar) используют способ под названием REYES, тот, что опирается на растеризации. Pixar добавила трассировку лучей к своему движку рендеринга RenderMan исключительно позднее, во время производства мультфильма "Тачки/Cars". Но даже для сего фильма метод трассировки лучей использовался избирательно, чтобы не перегрузить существующие вычислительные мощности. До сего проекта Pixar использовала внешний модуль для ограниченного использования приема трассировки лучей, например, для эффектов затенения ambient occlusion (AO).

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

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

Ниже показано, как алгоритм растеризации работает с каждым треугольником сцены.

  • Определяется комплект пикселей, который покрывает любой треугольник;
  • для каждого задействованного пикселя его глубина сравнивается с глубиной соседнего пикселя.

Основное ограничение алгоритма растеризации касается числа треугольников. Метод имеет сложность O(n), где n - численность треугольников. Способ в данном случае имеет линейную сложность в зависимости от числа треугольников, потому как для каждого кадра составляется список треугольников, которые надо обработать, один за другим.

Напротив, алгоритм трассировки лучей работает следующим образом.

Для каждого пикселя кадра:

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

Как видим, последовательность обработки стала обратной. В первом случае мы хватали любой полигон и смотрели, какие пиксели он покрывает. А во втором случае мы хватали любой пиксель и смотрели, какой полигон ему соответствует. Оттого разрешено пошевелить мозгами, что метод трассировки лучей меньше зависит от числа полигонов, чем метод растеризации, поскольку численность полигонов не влияет на стержневой цикл. Но на практике это не так. Фактически, чтобы определить, какой треугольник будет пересекаться с лучом, нам надобно обработать все треугольники сцены. В этом месте, конечно, защитники метода трассировки лучей скажут, что не нужно обрабатывать все треугольники сцены с каждым лучом. Ежели применять соответствующий тип структуры данных, то очень легко организовать треугольники таким образом, чтобы исключительно небольшой их процент тестировался с каждым лучом, то есть мы получаем, что способ трассировки лучей имеет сложность O(log n), где n - количество полигонов.

Да, доводы можно признать верными. Но защитники метода трассировки лучей малость лукавят в том, что то же самое верно и для растеризации. Игровые движки уже многие годы используют BSP-лесной массив (binary space partitioning) и другие методы, ограничивающие численность полигонов, которые нужно рассчитать для каждого кадра. Ещё единственный спорный момент - такие структуры больше всего эффективны для статических данных. Всё, что нам нужно: рассчитать данные единственный раз, после чего просто обеспечивать к ним доступ, и это даёт очень хорошие результаты. Но что делать с динамическими данными? В данном случае данные придётся пересчитывать для каждого изображения, а для сего нет никаких чудесных формул. Всё одинаково придётся заниматься изучением каждый полигон.

Простой приём?

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

Дэвид Любке (David Luebke), инженер nVidia, сделал последующий комментарий, прекрасно отражающий реальность: "Растеризация выполняется быстро, но нужно тщательно продумывать то, как выполнять сложные визуальные эффекты. Метод трассировки лучей поддерживает сложные визуальные эффекты, но надобно скрупулезно продумывать то, как сделать его быстрым".

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

Код минимального способа трассировки лучей, написанный Полем Хекбертом (Paul Heckbert), чтобы уместить его на "визитке".

Всё, что вам надо - прочесть несколько статей про оптимизации, которые необходимо вписать в алгоритм трассировки лучей, чтобы оценить слова Любке. В частности, самые мощные алгоритмы трассировки лучей не обрабатывают лучи независимо, они используют так называемые наборы лучей, что позволяет оптимизировать производительность с лучами, которые имеют одинаковое происхождение и одинаковое назначение. Подобная оптимизация пригоже годится для функциональных блоков "одна памятка много данных" (SIMD) внутри CPU и GPU, а также весьма эффективна для основных лучей с некоторой степенью когерентности (сонаправленности) или для теневых лучей. Но, с прочий стороны, оптимизация уже не годится для лучей преломления или отражения.

Больше того, как указывает Даниэль Похл в своей статье по поводу Quake Wars RT, употребление наборов лучей может стать проблематичным с прозрачными текстурами (знаменитые альфа-текстуры, используемые для деревьев), оттого что если все лучи в наборе не будут новости себя одинаково (некоторые затрагивают поверхность, другие проходят сквозь неё), то возникающие дополнительные издержки могут стать намного более, чем преимущества от оптимизаций, которые даёт применение наборов лучей.

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

Визуализация "стоимости" рендеринга каждого пикселя, где красные пиксели являются самыми "дорогими". Как разрешается видеть, рендеринг деревьев стоит крайне дорого в версии Quake Wars с методом трассировки лучей.

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

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

Ограничения трассировки лучей

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

И начнём мы с первейший проблемы, связанной с данным алгоритмом рендеринга: его медлительностью. Естественно, некоторые энтузиасты скажут, что это уже не задача, потому что способ трассировки лучей славно распараллеливается, а количество ядер процессора увеличивается каждый год, поэтому мы должны углядеть линейный рост производительности трассировки лучей. Кроме того, исследования по поводу оптимизаций, которые позволительно применить к трассировке лучей, всё ещё находятся в младенческом состоянии. Ежели посмотреть первые 3D-ускорители и сравнить их с тем, что доступно ныне, то для оптимизма действительно кушать поводы.

Однако такая точка зрения не учитывает существенный момент: самое интересное в методе трассировки лучей содержится во вторичных лучах. На практике расчёт картинки только с первичными лучами не даст особого улучшения качества изображения по сравнению с классическим алгоритмом с Z-буфером. Но задача со вторичными лучами содержится в том, что у них стопроцентно отсутствует когерентность (сонаправленность). При переходе от одного пикселя к другому необходимо рассчитывать абсолютно разные данные, что сводит на нет все обычные техники кэширования, сильно важные для хорошей производительности. Это означает, что расчёт вторичных лучей жутко сильно зависит от подсистемы памяти, в частности, от её задержек. Это наиболее худший сценарий из возможных, потому что из всех характеристик памяти как раз задержки менее всего улучшились за последние годы, и нет никаких поводов размышлять, что ситуация исправится в обозримом будущем. Достаточно легко увеличить пропускную способность памяти, используя немного чипов параллельно, но задержки всё равно останутся прежними.

Ограничения трассировки лучей

У видеокарт задержки памяти (latency) уменьшаются намного медленнее, чем увеличивается пропускная способность (bandwidth). Ежели последняя улучшается в 10 раз, то задержки улучшаются исключительно в два фраза.

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

Ещё одна характерная задача способа трассировки лучей касается сглаживания (AA). Лучи проводятся в виде типичный математической абстракции, и реального размера они не учитывают. Проверка на пересечение с треугольником является обычный логической функцией, которая даёт ответ "да" или "нет", но не даёт таких деталей, как "луч на 40% пересекает треугольник". Прямым следствием такого эффекта будет явление "лесенок".

Чтобы постановить эту проблему, было предложено немного технологий, таких как трассировка пучков (beam tracing) и трассировка конусов (cone tracing), которые учитывают толщину лучей, но их сложность не позволяет заработать эффективную реализацию. И единственной технологией, которая мочь вручить хорошие результаты, является расчёт большего числа лучей, чем кушать пикселей, то есть суперсэмплинг (рендеринг при большем разрешении). Вряд ли стоит избыточный раз упоминать, что эта способ намного более накладна по вычислительной мощности, чем мультисэмплинг, использующийся в современных GPU.

Гибридный двигатель рендеринга?

Если вы прочитали всю статью до сего места, то наверняка уже подумываете о том, что метод трассировки лучей покуда что не может заместить растеризацию, но, возможно, стоит смешать две технологии вместе? И на первый точка зрения кажется, что две технологии дополняют друг друга. Легко явить растеризацию треугольников для определения видимой картинки, получая превосходство от великолепной производительности данной технологии, после этого чего будет применяться трассировка лучей исключительно для некоторых поверхностей, добавляя реализм там, где это надобно, например, для добавления теней или получения хороших отражений и прозрачности. Собственно, такой подход Pixar и использовала для мультфильма "Тачки/Cars". Геометрические модели создаются с помощью REYES, а трассировка лучей употребляется "по требованию" там, где надо симулировать определённые эффекты.

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

Для мультфильма "Тачки/Cars" Pixar использовала гибридный двигатель рендеринга, сочетающий REYES для визуализации и трассировку лучей "по требованию" для отражений и ambient occlusion.

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

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

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

Решение

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

Ежели посмотреть на последние автосимуляторы, например, Gran Turismo и Forza, то там достаточно недурственно заметно вполне удовлетворительное качество рендеринга, пусть даже отражения на корпусе всецело лживые. И точное отражение зеркала заднего вида на краске вряд ли позволительно считать достаточным, чтобы признать ещё единственный шаг в сторону фотореализма.

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

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

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

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

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

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

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

Чтобы творить мягкие тени или диффузные отражения (такие, какие вы видите на текстурированном металле, к примеру), требуются больше развитые техники трассировки лучей, такие как трассировка путей (path tracing) и или распределённая трассировка лучей (distributed ray tracing). Но подобные техники требуют немаловажно большего количества лучей, так что они покуда ещё слабо подходят для реального времени.

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

Заключение

Хотя вообще-то, нас это вряд ли убедит. В любом случае, мы ещё покуда далеки до того времени, когда мы сможем пожертвовать производительностью из-за элегантности и простоты. Попросту посмотрите, что произошло за последние 10 лет в мире оффлайнового рендеринга. Ежели рендеринг одного кадра мультфильма "История игрушек/Toy Story" выполнялся, в среднем, за два часа, то кадр из мультфильма "Рататуй/Ratatouille" - уже за шесть с половиной часов, несмотря на вычислительную мощность, которая увеличилась в промежутке промеж двумя картинами больше чем в 400 раз. Другими словами, чем более вычислительной мощности и ресурсов вы предоставляете компьютерным художникам, тем быстрее они их поглощают.

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


RSS лента ВСЕГО блога с комментариями RSS лента ВСЕГО блога БЕЗ комментариев RSS лента этой КАТЕГОРИИ с комментариями RSS лента этой КАТЕГОРИИ и БЕЗ комментариев RSS лента ЭТОГО ПОСТА с комментариями к нему



Прыг: 30 31 32 33 34 35 36 37 38 39 40
Скок: 10 20 30 40


Похожие ресурсы:



Copyright © 2009 Версия компьютеры
Сейчас 22 октября 2018, 04:00
Система авторегистрации в каталогах, 
           статьи про раскрутку сайтов, web дизайн, flash, photoshop, хостинг, рассылки; форум, баннерная сеть, каталог сайтов, услуги 
           продвижения и рекламы сайтов

Рейтинг популярности - на эти заметки чаще всего ссылаются: