2016-06-25 4 views
14

После некоторого исследования растеризации и трассировки лучей. Я обнаружил, что информации о том, как работают процессоры для трассировки лучей в Интернете, мало информации. Я наткнулся на статью о Pixar и о том, как они предварительно отображали автомобили 2 на процессоре. Это заняло у них 11,5 часов за кадр. Неужели GPU не сделает это быстрее с тем же качеством изображения? http://gizmodo.com/5813587/12500-cpu-cores-were-required-to-render-cars-2 https://www.engadget.com/2014/10/18/disney-big-hero-6/ http://www.firstshowing.net/2009/michael-bay-presents-transformers-2-facts-and-figures/ Cheers, СэмПочему мы используем процессоры для трассировки лучей вместо графических процессоров?

+0

Возможно, они не заботятся о скорости на этом этапе. – kangshiyin

+2

, пожалуйста, укажите ссылки на статьи, на которые вы ссылаетесь, задавая этот вопрос, отредактировав OP. – MWiesner

+0

https://en.wikipedia.org/wiki/Ray-tracing_hardware и любая статья о raytracing vs rasterization объяснит, почему в деталях. – pvg

ответ

37

Я один из архитекторов программного рендеринга в большой VFX и анимационный студия с фирменным визуализатора (не Pixar, хотя я был когда-то программное обеспечение визуализации архитектор там ну, давно, давно).

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

  • графические процессоры только идти быстро, когда все находится в памяти. Самые большие карты GPU имеют, что, 12 ГБ или около того, и он должен содержать все. Ну, мы обычно визуализируем сцены с 30 ГБ геометрии и эта ссылка 1 ТБ или более текстуры. Невозможно загрузить это в память GPU, это буквально на два порядка величины слишком велико. Поэтому графические процессоры просто не могут справиться с нашими самыми большими (или даже средними) сценами. (С помощью рендеринга ЦП, мы можем печатать вещи с диска, когда нам это нужно. Графические процессоры не очень хороши.)

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

  • Если у вас в вашем процессоре на основе процессора 50 или 100 человеко-лет, вы просто не выбрасываете его и не начинаете, чтобы получить ускорение 2x. Усилия по разработке программного обеспечения, стабильность и т. Д. Важнее и больший фактор затрат.

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

  • Закон Amdahl: фактический «рендеринг» как таковой является только одним этапом в создании сцен, а графические процессоры не помогают с ним. Предположим, что для полного создания и экспорта сцены в рендеринг требуется 1 час, а 9 часов - «рендеринг», и из этих 9 часов час считывает текстуру, тома и другие данные с диска. Таким образом, из общего количества 10 часов, как пользователь испытывает рендеринг (кнопка до тех пор, пока окончательное изображение не будет готово), 8 часов потенциально ускоряются с помощью графических процессоров. Таким образом, даже если GPU был в 10 раз быстрее, чем процессор для этой части, вы переходите от 10 часов до 1 + 1 + 0,8 = около 3 часов. Таким образом, 10-кратное ускорение GPU переводит только на 3-кратный фактический прирост. Если бы GPU был на 1000 000 раз быстрее, чем процессор для трассировки лучей, у вас все еще есть 1 + 1 + крошечный, что всего лишь 5-кратное ускорение.

Но что нового в игре? Почему графические процессоры хороши для игр, но не для фильма?

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

Кроме того, с игрой вы представляете кадр после кадра после кадра, живите перед каждым пользователем. Но с фильмом вы фактически делаете ОДИН РАЗ, а то, что доставлено в театры, - это видеофайл, поэтому кинозрители никогда не узнают и не позаботятся, если вам понадобится 10 часов за кадр, но они заметят, если он выглядит не очень хорошо. Так что опять же, на тех, кто делает длительное время, меньше штрафа, пока они выглядят потрясающе.

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

+1

Большое вам спасибо! Какой парень. – oodle600

+1

/me лук вниз в страхе: p – Alnitak

+1

Мощный динамический лучевой трассировщик в реальном времени на GPU намного быстрее, чем на CPU https://www.youtube.com/watch?v=GErl-poxmNE. Это было на GTX 580, который вышел шесть лет назад. –

Смежные вопросы