Я новичок и в gamedev, и в Blender, и есть кое-что, что я не могу поколебать:
В Blender один рендер (даже с использованием более продвинутого рендера Cycles) может занять до 45 секунд на моей машине. Но очевидно, что в игре у вас может быть потрясающая графика, и поэтому рендеринг, очевидно, происходит непрерывно, несколько раз в секунду в режиме реального времени.
Так что мне также интересно, что это за несоответствие, относительно того, насколько «медленным» рендерингом кажется Blender, по сравнению с тем, как игровые движки достигают рендеринга в реальном времени (или почти в реальном времени).
Ответы:
Рендеринг в реальном времени, даже современный рендеринг в реальном времени, - это набор хитростей, ярлыков, хаков и приближений.
Возьмите тени, например.
У нас до сих пор нет полностью точного и надежного механизма рендеринга теней в реальном времени от произвольного числа источников света и произвольно сложных объектов. У нас есть несколько вариантов методов теневого отображения, но все они страдают от хорошо известных проблем с теневыми картами, и даже «исправления» для них на самом деле являются просто набором обходных путей и компромиссов (как правило, если Вы видите термины «смещение глубины» или «смещение многоугольника» в чем-либо, тогда это не надежный метод).
Другим примером метода, используемого рендерами в реальном времени, является предварительный расчет. Если что-то (например, освещение) слишком медленно для расчета в режиме реального времени (и это может зависеть от используемой вами системы освещения), мы можем предварительно рассчитать и сохранить это, тогда мы можем использовать предварительно рассчитанные данные в реальном времени. время для повышения производительности, что часто происходит за счет динамических эффектов. Это прямая память против компромисса между вычислениями: память часто дешева и обильна, вычисления часто нет, поэтому мы используем дополнительную память в обмен на экономию на вычислениях.
Оффлайн рендеры и инструменты моделирования, с другой стороны, больше внимания уделяют правильности и качеству. Кроме того, поскольку они работают с динамически изменяющейся геометрией (например, с моделью, в которой вы ее строите), они должны часто пересчитывать данные, тогда как средство визуализации в реальном времени будет работать с окончательной версией, которая не имеет этого требования.
источник
Текущий ответ отлично справился с объяснением общих проблем, но я чувствую, что он упускает важную техническую деталь: движок рендеринга "Cycles" в Blender - это движок, отличающийся от того, что используется в большинстве игр.
Как правило, игры воспроизводятся путем итерации по всем многоугольникам в сцене и отрисовки их по отдельности. Это делается путем «проецирования» координат многоугольника через виртуальную камеру для получения плоского изображения. Причина, по которой этот метод используется для игр, заключается в том, что современное оборудование разработано на основе этого метода, и его можно выполнять в реальном времени с относительно высоким уровнем детализации. Из интереса, это также метод, который использовался предыдущим движком рендеринга Blender до того, как Blender Foundation отказался от старого движка в пользу движка Cycles.
Циклы с другой стороны - это то, что известно как движок трассировки лучей. Вместо того, чтобы смотреть на полигоны и визуализировать их по отдельности, он направляет виртуальные лучи света в сцену (по одному на каждый пиксель в конечном изображении), отбрасывает этот луч света с нескольких поверхностей и затем использует эти данные, чтобы определить, какой цвет у пикселя. должно быть. Raytracing - очень дорогая вычислительная техника, которая делает его непрактичным для рендеринга в реальном времени, но он используется для рендеринга изображений и видео, потому что он обеспечивает дополнительные уровни детализации и реалистичности.
Обратите внимание, что для краткости мои краткие описания трассировки лучей и рендеринга многоугольников сильно урезаны. Если вы хотите узнать больше о методах, я рекомендую вам найти подробное руководство или книгу, так как я подозреваю, что есть очень много людей, которые написали лучшие объяснения, чем я мог бы собрать.
Также обратите внимание, что в 3D-рендеринге используются различные методы, и некоторые игры действительно используют вариации трассировки лучей для определенных целей.
источник