Что такое рендер в играх

Что такое рендер в играх

Ответы на популярные вопросы — что это, что значит.

Что такое Рендер (Рендеринг)

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

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

Этимология слова «Рендер».

Слово Рендер (Рендеринг) — это англицизм, который зачастую переводится на русский язык словом “Визуализация”.

Что такое Рендеринг в 3D?

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

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

Построение изображения.

Как уже говорилось ранее, рендеринг — это один из самых сложных технических этапов, ведь во время рендеринга идут сложные математические вычисления, выполняемые движком рендера. На этом этапе, движок переводит математические данные о сцене в финальное 2D-изображение. Во время процесса идет преобразование 3d-геометрии, текстур и световых данных сцены в объединенную информацию о цветовом значение каждого пикселя в 2D изображение. Другими словами, движок на основе имеющихся у него данных, просчитывает то, каким цветом должен быть окрашено каждый пиксель изображения для получения комплексной, красивой и законченной картинки.

Основные типы рендеринга:

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

Что такое Рендеринг в реальном времени?

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

Поскольку ключевым фактором в таком типе рендеринга есть интерактивность со стороны пользователя, то изображение приходится просчитывать без задержек и практически в реальном времени, так как невозможно точно предсказать поведение игрока и то, как он будет взаимодействовать с игровой или с интерактивной сценой. Для того, чтоб интерактивная сцена или игра работала плавно без рывков и медлительности, 3D движку приходится рендерить изображение со скоростью не менее 20-25 кадров в секунду. Если скорость рендера будет ниже 20 кадров, то пользователь будет чувствовать дискомфорт от сцены наблюдая рывки и замедленные движения.

Большую роль в создание плавного рендера в играх и интерактивных сценах играет процесс оптимизации. Для того, чтоб добиться желаемой скорости рендера, разработчики применяют разные уловки для снижения нагрузки на рендер движок, пытаясь снизить вынужденное количество просчетов. Сюда входит снижение качества 3д моделей и текстур, а также запись некоторой световой и рельефной информации в заранее запеченные текстурные карты. Также стоит отметить, что основная часть нагрузки при просчете рендера в реальном времени ложиться на специализированное графическое оборудование (видеокарту -GPU), что позволяет снизить нагрузку с центрального процессора (ЦП) и освободить его вычислительные мощности для других задач.

Что такое Предварительный рендер?

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

В отличие от Рендера в реальном времени, где основная нагрузка приходилась на графические карты(GPU) В предварительном рендере нагрузка ложится на центральный процессор(ЦП) а скорость рендера зависит от количества ядер, многопоточности и производительности процессора.

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

Программы для рендеринга.

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

Как правило, рендер движки являются встроенными в крупные 3D программы для работы с графикой и имеют огромный потенциал. Среди наиболее популярных 3D программ (пакетов) есть такой софт как:

  • 3ds Max;
  • Maya;
  • Blender;
  • Cinema 4d и др.

Многие из этих 3D пакетов имеют уже идущие в комплекте рендер движки. К примеру, рендер-движок Mental Ray присутствует в пакете 3Ds Max. Также, практически любой популярный рендер-движок, можно подключить к большинству известных 3d пакетов. Среди популярных рендер движков есть такие как:

  • V-ray;
  • Mental ray;
  • Corona renderer и др.

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

Многие рендер-движки сыскали славу в определенных сферах работы с 3д графикой. Так, например, “V-ray” имеет большую популярность у архитектурных визуализаторов, из-за наличия большого количества материалов для архитектурной визуализации и в целом, хорошего качества рендера.

Методы визуализации.

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

1. Scanline (сканлайн).

Сканлайн рендер — выбор тех, кто приоритет отдаст скорости, а не качеству. Именно за счет своей скорости, данный тип рендера зачастую используется в видеоиграх и интерактивных сценах, а также во вьюпортах различных 3D пакетов. При наличие современного видеоадаптера, данный тип рендера может выдавать стабильную и плавную картинку в реальном времени с частотой от 30 кадров в секунду и выше.

Читайте также:  Офлайн карты для ios

Алгоритм работы:

Вместо рендеринга «пикселя по пикселю», алгоритм функционирования «scanline» рендера заключается в том, что он определяет видимую поверхность в 3D графике, и работая по принципу «ряд за рядом», сперва сортирует нужные для рендера полигоны по высшей Y координате, что принадлежит данному полигону, после чего, каждый ряд изображения просчитывается за счет пересечения ряда с полигоном, который является ближайшим к камере. Полигоны, которые больше не являются видимыми, удаляются при переходе одного ряда к другому.

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

2. Raytrace (рейтрейс).

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

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

Алгоритм работы:

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

Метод Raycasting.

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

Нередко бывает, что «метод трассировки лучей» (raytrace) путают с методом «бросания лучей» (raycasting). Но на самом деле, «raycasting» (метод бросания луча) фактически является упрощенным «raytrace» методом, в котором отсутствует дальнейшая обработка отбившихся или заломленных лучей, а просчитывается только первая поверхность на пути луча.

3. Radiosity.

Вместо «метода трассировки лучей», в данном методе просчет работает независимо от камеры и является объектно-ориентированным в отличие от метода «пиксель по пикселю». Основная функция “radiosity” заключается в том, чтобы более точно имитировать цвет поверхности путем учета непрямого освещения (отскок рассеянного света).

Преимуществами «radiosity» являются мягкие градуированные тени и цветовые отражения на объекте, идущие от соседних объектов с ярким окрасом.

Достаточно популярна практика использования метода Radiosity и Raytrace вместе для достижения максимально впечатляющих и фотореалистичных рендеров.

Что такое Рендеринг видео?

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

Как и у 3D дизайнера, так и у пользователя видеоредактора, процесс рендеринга идет автоматически и без участия пользователя. Все что требуется, это задать некоторые параметры перед стартом.

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

Рендеринг — это наше окно в виртуальный мир 3D. Узнайте о 3D рендеринге больше, откройте для себя различные техники и методы рендеринга 3d объектов.

Виртуальная фотография

«Привет мир 3D рендеринга»

3D рендеринг — это в основном процесс создания двухмерных изображений (например , для экрана компьютера) из 3D-модели. Другими словами, р ендеринг позволяет получить готовое изображение трехмерной модели в «плоском » варианте. Изображения генерируются на основе наборов данных, определяющих цвет, текстуру и материал определенного объекта на изображении.

Рендеринг впервые появился в 1960 году, когда Уильям Феттер создал изображение пилота, чтобы имитировать пространство, необходимое в кабине. Затем, в 1963 году, Иван Сазерленд создал Sketchpad, первую программу 3D-моделирования, в то время он работал в MIT. За свою новаторскую работу он известен как «Отец компьютерной графики».

В 1975 году исследователь Мартин Ньюэлл создал «Чайник Юты», трехмерную тестовую модель, которая стала стандартным тестовым рендером. Этот чайник, также называемый Newell Teapot, стал настолько культовым, что считается эквивалентом «Hello World» в мире 3d.

Как устроен 3d рендеринг

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

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

Техника рендеринга № 1: Растеризация

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

Один из самых ранних методов рендеринга, растеризация, работает рассматривая модель как сетку многоугольников. Эти полигоны имеют вершины, в которые встроена такая информация, как положение, текстура и цвет. Эти вершины затем проецируются на плоскость, перпендикулярную к перспективе (то есть камеру).

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

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

Техника рендеринга №2: Лучевое литье

Классическая демонстрация лучевого литья.

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

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

Читайте также:  Как вставлять ссылку в текст

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

Техника рендеринга № 3: Трассировка лучей

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

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

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

Техника рендеринга № 4: Уравнение рендеринга

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

Аппаратные средства для 3D рендеринга

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

Программное обеспечение рендеринга использует GPU (графический ), CPU (центральный ) или оба вида процессоров для создания рендеров. Кроме того, приложения для рендеринга являются ресурсоёмкими программами. Для более быстрого рендеринга часто требуются дополнительные обновления. Скорость процессора, интеграция и совместимость видеокарт, совместимость с драйверами и оперативной памятью — вот некоторые из аспектов, обеспечивающих быстрый высококачественный рендеринг.

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

Программное обеспечение для 3d рендеринга

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

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

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

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

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

Типы программного обеспечения для 3D-рендеринга

При поиске программного обеспечения для 3D-рендеринга вы встретите два повторяющихся термина, которые редко объясняются: biased ( «настраиваемый ») и unbiased ( «ненастраиваемый ») рендер. Вот что имеется в виду:

biased рендер (читается баяст) — это рендерер, где нужно НАСТРАИВАТЬ много параметров и он ПРЕДВЗЯТЫЙ, т.е. основанный не на «правде », а на каких-то своих личных допущениях.

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

По другую сторону unbiased рендер (читается анбаяст)- то есть рендерер, который НЕНАСТРАИВАЕМЫЙ (не нужно настраивать — нажал одну кнопку и сиди жди, пока картинка станет красивой) и он НЕПРЕДВЗЯТЫЙ. Непредвзятость выражается в том, что анбаяст рендерер старается максимально правдиво описать поведение света. Т.е. он использует формулы просчёта, которые на сегодняшний день максимально (на сколько могут) точно описывают физические законы, происходящие в природе (как свет падает, как отражается, как преломляется, как поглощается и т.д.).

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

Популярные применения 3d рендеринга

3D-рендеринг широко используется в области архитектуры

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

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

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

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

Развитие 3D-рендеринга никогда не остановится, все будет ограничено только фантазией конкретного разработчика или группы разработчиков.

Deus Ex Human Revolution — это компьютерная игра 2011 года, которая является более успешным продолжением оригинальной Deus Ex, чем Invisible War. Но этот пост не о качестве игры, а о демонстрации её технических принципов. Адриан Курреж провёл несколько часов за реверс-инжинирингом, пытаясь понять с помощью инструмента Renderdoc, как происходит обработка каждого из кадров Human Revolution. Затем Адриан изложил результаты в своём блоге.

Читайте также:  Тест видеокарты gtx 950

Игра построена на основе модифицированного проприетарного движка Crystal от компании Crystal Dynamics. Human Revolution была одной из первых игр, которая использовала 11 версию DirectX. На момент выхода уровень графики был на отличном уровне, похождения Адама Дженсена по вентиляционным каналам неплохо смотрятся и сейчас. При этом игра была не слишком требовательной к аппаратной составляющей компьютера.

Для рассмотрения Адриан выбрал этот кадр. Так его видит игрок.

На первый взгляд может показаться, что Human Revolution использует технику рендеринга Forward+. Но популяризация этого метода случилась куда позже выхода игры, и «Человеческая революция» обходится схемой Light Pre-Pass.

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


Карта нормалей, готово 10 %


Карта нормалей, готово 40 %


Карта нормалей, готово 70 %

Карта нормалей, готово 100 %

Одновременно происходит рендеринг карты глубин. Всего для производства обеих компонент потребовалось 166 вызовов отрисовки.

Тени генерируются с помощью Parallel-Split Shadow Maps. Каждая из теней рендерится единожды для каждого из источников света, которые могут при взаимодействии с объектами создавать тень. В данной сцене таких источников два: один в офисе справа, другой на вершине скульптуры-руки. Каждая из карт теней представляет из себя квадрат 1024×1024 внутри текстуры 4096×3072.

Мелкие объекты пропускаются, возможно, часть невидимых для источника света не учитывается, поэтому этот проход требует всего 52 вызова отрисовки. Карты теней и карта глубин собираются для создания текстуры маски теней. Читается каждый тексель из карты глубин, и его видимость считается для каждого из источников света. Конечный результат выдаётся в 8-битной текстуре RGBA, которая работает как маска. Значение по умолчанию — белый цвет (1, 1, 1, 1), которое означает, что тексель ничем не затемнён. Если тексель попадает в тень какого-либо источника света, то отвечающий за него байт приравнивается нулю. Так можно обрабатывать 4 источника света.

Конечно, использовать байт для хранения только единицы и нуля слишком затратно, поэтому во время этого прохода также выполняется percentage close filtering (PCF), и в этих байтах хранится значение между 0 и 1, а не только крайние значения. Это нужно, чтобы края теней имели плавные переходы.

По буферу глубины создаётся карта преграждения окружающего света в экранном пространстве (Screen Space Ambient Occlusion, SSAO). Если видеоускоритель поддерживает DirectX 11, то шейдером создаётся размытие с ядром 19×19. На старых карточках это делается пиксельным шейдером.


SSAO, первый проход


Конечный результат с размытием

После генерации значение текстуры SSAO хранится в альфа-канале карты нормалей.

Каждый из точечных источников света обрабатывается по одному. Используется только карта нормалей с SSAO и буфер глубины. Эффект на пиксели зависит только от радиуса света и интенсивности. На этой стадии отражение света различными материалами пока неважно, карта освещения показывает, сколько и какого цвета потенциально отражается. Реальные отражения будут посчитаны позже на основе характеристик материалов. В конкретно этой сцене 45 точечных источников света.


Готово 10 %


Готово 40 %


Готово 70 %


Готово 100 %

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


Готово 10 %


Готово 40 %


Готово 70 %


Готово 100 %

Затем добавляются декали (таблички на стенах, следы от пуль), прозрачные объекты (стекла в окнах) и искусственные объёмные эффекты освещения.


Добавлены прозрачные объекты и декали


Добавлены эффекты освещения

Эффекты освещения являются группой спрайтов, которые отрендерены в 3D. Это не просто плоские объекты, постоянно обращённые к камере, это двадцатигранники специального масштаба. Свечение обсчитывается полностью процедурно.

Рендер непрозрачных и прозрачных объектов был выполнен с помощью 253 вызовов отрисовки.

Для добавления эффекта засвечивания bloom нужно знать, какие области очень яркие. Human Revolution использует LDR, буфера HDR нет. При предыдущем проходе в альфа-канал передавались данные по интенсивности.

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

Важной составляющей является сглаживание, иначе изображение будет выглядеть плохо из-за «лесенок» границ. Human Revolution поддерживает множество методов: DLAA, MLAA, FXAA и так далее. В примере Адриана используется FXAA.


Без сглаживания


Результат применения FXAA

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


До коррекции цвета


После коррекции цвета

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

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

Но есть и другие интересные детали. В катсценах и диалогах используется эффект глубины резкости (Depth of Field, DoF), когда элементы не в фокусе размыты.


Изображение оригинальной сцены уменьшается в два раза


Горизонтальное размытие


Вертикальное размытие


Карта глубин


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

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

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

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


Силуэт: до


Силуэт: после

Ссылка на основную публикацию
Что такое windows 10 pro
Кто бы мог подумать, но до с даты релиза Windows 10 прошел почти год. Сотни миллионов пользователей уже обзавелись новой...
Что делать после заправки картриджа canon
Многие пользователи принтеров Canon после очередной дозаправки картриджей сталкиваются с различными неполадками в работе устройств, в том числе и с...
Что делать после скачивания драйвера для принтера
Часто задаваемый вопрос пользователей принтеров – как установить драйвер на принтер или МФУ. Вставьте флешку с драйвером в компьютер, в...
Что такое winmail dat
Получив очередное письмо по почте, пользователь может столкнуться с ситуацией, что часть информации в нем отсутствует и в списке файлов...
Adblock detector