С OpenGL и так далее я могу рендерить некоторые довольно удивительно выглядящие вещи в режиме «реального времени» 60 FPS. Однако, если я попытаюсь снять видео с той же самой сценой, скажем, в Maya или 3ds Max, потребуется гораздо больше времени для рендеринга, даже если это то же разрешение и FPS.
Почему эти два типа рендеринга требуют разных периодов времени для одного и того же результата?
Примечание. Да, я понимаю, что программное обеспечение для 3D-анимации может создавать изображения, превосходящие по качеству то, что можно сделать в режиме реального времени. Но для этого вопроса я имею в виду сцену равной сложности.
rendering
performance
j.doe
источник
источник
Ответы:
Основное отличие состоит в том, что с OpenGL, скажем, в видеоигре, у вас будет процесс, называемый растеризацией, который в основном заботится о том, какую часть сцены вы видите.
Это должно быть быстро, чтобы мы могли испытать это как в реальном времени.
Поэтому алгоритм делает несколько простых шагов.
проверить, находится ли определенная часть сцены на мой взгляд
проверить, находится ли перед ним что-то, что может потребоваться визуализировать позже, используя буфер глубины
заказать объекты, которые мы нашли, чтобы нарисовать
С другой стороны, программное обеспечение для рендеринга (Blender / Max / Maya / ...), скорее всего, использует какую-то трассировку лучей.
Это включает в себя много математики для достижения более высокой степени реализма. В основном это работает так же:
....
Я перестал перечислять здесь, так как именно здесь начинается трассировка лучей.
Вместо того, чтобы проверять, попала ли точка, большинство raytracer теперь начинает вычислять:
Существует масса техник с различной степенью реализма, которые можно использовать для расчета света определенной точки в сцене.
TL; DR Суть заключается в том, что raytracer в основном старается быть физически точным, когда речь идет о освещении, и поэтому ему приходится выполнять гораздо больше вычислений на пиксель (иногда снимать тысячи лучей), а с другой стороны, игры получают свою скорость с помощью Рисование больших кусков экрана с более простыми легкими вычислениями и множеством шейдерных трюков, которые позволяют ему выглядеть реалистично.
источник
Вы сравниваете яблоки с апельсинами
Игра похожа на порт просмотра в вашем приложении для моделирования. Вы можете использовать окно просмотра для рендера, и вы получите те же скорости 60 кадров в секунду.
Нет никаких причин, по которым вы не можете получить графику в реальном времени, которая очень хороша из программ для моделирования, таких как Maya или 3DS Max. Результаты, которые соответствуют многим играм. У них есть шейдеры области просмотра, как в играх. Существует также опция рендеринга в окне просмотра, которая позволяет кадрировать кадры на диск так быстро, как это позволяет (я делал рендеры Full HD со скоростью 30 кадров в секунду от Maya). Все, что вам нужно сделать, это прекратить использование предоставленного программного обеспечения raytracers.
Хотя есть некоторые отличия. Основное отличие состоит в том, что вы, как пользователь, не оптимизируете вещи так сильно, как разработчики игр (оптимизация использует все приемы, описанные в книге). Во-вторых, ваши анимационные примитивы работают на процессоре, потому что вам нужна гибкость. В играх можно позволить себе делать оптимизации. В общем, вы платите за отсутствие команды программистов рядом с вами.
Многие вещи на самом деле, возможно, были предварительно вычислены, поэтому они не намного быстрее, просто лучше организованы. Запекание вашего непрямого освещения будет бить не запеченные результаты каждый день.
Почему трассировщики лучей медленнее?
Они не *, просто стремятся сделать больше работы с трассировщиком лучей, потому что это легко. Функция за функцией они не намного медленнее в вычислительных циклах. Например, нет необходимости в трассировщике лучей, чтобы отбрасывать вторичные лучи (в этом случае отражатели жизни отбрасывают геометрию или даже не загружают ее, фактически, именно так делает психический луч). Обычно это делается потому, что это тривиально, и это явное преимущество трассировщиков лучей. Вы даже можете настроить их для запуска на процессоре в некоторых случаях. Они просто оптимизированы для разных вещей:
Передача данных на диск, не только фреймы, но и все данные. Нечто, что могло бы сразу сломать скорость большинства игр.
Работа на общем оборудовании. GPU намного быстрее для определенных вещей, когда вы оптимизируете для GPU. Но это не работает для всех нагрузок, на самом деле процессор Intel быстрее вычисляет в целом, чем графический процессор. Графический процессор просто массивно параллелен, а процессор - нет. Архитектура выигрывает, если вы можете оставаться в GPU и минимизировать передачу и оптимизировать для архитектуры GPU.
Таким образом, вы платите за гибкость и простоту использования. Но да, плохо признать, что и Майя, и Макс страдают от крайней старости. Чтобы они могли быть быстрее.
TL; DR Разница в основном в оптимизации (читай много хитростей) и доступных внешних ресурсах.
PS: есть ошибочное мнение, что это потому, что это более физически правильно. Конечно, это может быть, но трассировщик лучей не является физически более правильным, чем ваша обычная игра или любые другие вычисления. На самом деле многие игры используют действительно хорошие модели, в то время как многие разработчики моделей этого не делают.
* См. Http://www.graphics.cornell.edu/~bjw/mca.pdf.
источник
Предварительный просмотр в реальном времени
Работая в области VFX в отрасли, если вы говорите о предварительном просмотре в реальном времени, а не о производственном рендеринге, то Maya и 3DS Max обычно также используют OpenGL (или, возможно, DirectX - почти то же самое).
Одним из основных концептуальных отличий между анимационным программным обеспечением VFX и играми является уровень допущений, которые они могут сделать. Например, в программном обеспечении VFX художник нередко загружает одну бесшовную сетку символов, которая охватывает сотни тысяч и миллионы полигонов. Игры имеют тенденцию оптимизировать большинство для большой сцены, состоящей из множества простых, оптимизированных сеток (тысячи треугольников каждый).
Рендеринг продукции и отслеживание пути
Программное обеспечение VFX также делает акцент не на предварительном просмотре в реальном времени, а на производственном рендеринге, где световые лучи фактически моделируются по одному. Предварительный просмотр в реальном времени часто является просто «предварительным просмотром» высококачественного результата производства.
Игры делают красивую работу по аппроксимации многих из этих эффектов в последнее время, таких как глубина резкости в реальном времени, мягкие тени, размытые отражения и т. Д., Но они находятся в категории приближенных тяжелых условий (например: размытые кубические карты для рассеянного отражения вместо того, чтобы фактически моделировать световые лучи).
содержание
Возвращаясь к этому вопросу, предположения о содержании программного обеспечения VFX и игры сильно различаются. Основной задачей программного обеспечения VFX является создание любого возможного вида контента (по крайней мере, это идеал, хотя практически он зачастую совсем не близок). Игры ориентированы на контент с гораздо более сложными предположениями (все модели должны быть в диапазоне тысяч треугольников, карты нормалей должны применяться к фальшивым деталям, у нас не должно быть 13 миллиардов частиц, персонажи на самом деле не анимированы мышцами буровые и натяжные карты и т. д.).
Из-за этих предположений игровые движки часто могут легче применять методы ускорения, такие как выборка усеченного конуса, которые позволяют им поддерживать высокую интерактивную частоту кадров. Они могут сделать предположение, что некоторый контент будет статичным, запеченным заранее. Программное обеспечение VFX не может легко сделать такие предположения, учитывая гораздо более высокую степень гибкости при создании контента.
Игры Делай это лучше
Это может быть своего рода противоречивым мнением, но игровая индустрия гораздо более прибыльная индустрия, чем программное обеспечение VFX. Их бюджеты на одну игру могут составлять сотни миллионов долларов, и они могут позволить себе выпускать движки следующего поколения каждые несколько лет. Их исследования и разработки впечатляют, и сотни и сотни игр выпускаются постоянно.
Программное обеспечение VFX и CAD, с другой стороны, далеко не так выгодно. Исследователи, работающие в академических кругах, часто привлекают к исследованиям и разработкам многие отрасли, часто внедряющие методы, опубликованные много лет назад, как будто это что-то новое. Таким образом, программное обеспечение VFX, даже поставляемое такими крупными компаниями, как AutoDesk, часто бывает не таким «современным», как новейшие игровые движки AAA.
Они также имеют гораздо более длительное наследство. Например, Maya - это 17-летний продукт. Он был много отремонтирован, но его основная архитектура все та же. Это может быть аналогично попытке взять Quake 2 и постоянно обновлять и обновлять его вплоть до 2015 года. Усилия могут быть большими, но, вероятно, не будут соответствовать Unreal Engine 4.
TL; DR
Так или иначе, это небольшая часть этой темы. Я не мог понять, говорите ли вы о предварительном просмотре в реальном времени в видовых экранах или при производственном рендеринге, поэтому я попытался охватить оба аспекта.
источник