6 августа 2015

Рендеринг, основанный на законах физики

Dagor Engine 4.0 в War Thunder

В War Thunder мы всегда уделяли особое внимание визуальной составляющей. Уже сейчас можно видеть, что все модели техники и предметы окружения состоят из различных материалов и совершенно по-разному выглядят. Вот - P-51D-5, его красивая неокрашенная алюминиевая обшивка ярко сверкает в солнечном свете. Вот - ГАЗ ММ с 25-мм зенитной пушкой, слабо поблёскивающий на свету своей зелёной краской. А вот - деревянная коробка, прикреплённая к левому борту Pz.IVG.



Совсем скоро мы введём в игру новую графическую технологию, которая позволит сделать картинку в игре War Thunder красивее и реалистичнее. Встречайте: Physically Based Rendering - физически корректный рендеринг изображения.

Чем отличается визуализация спец-эффектов фильма от рендера сцены в игре? Сколько времени нужно на получение реалистичной картинки в условиях постоянно меняющихся асинхронных событий? Эти вопросы задаст каждый игрок, который попытается представить себе мгновение сражения War Thunder: множество объектов, источников освещения, отражений, эффектов. В этой статье мы расскажем вам о новом рендеринге, который основан на законах физики, а также об освещении и материалах.


OLD RENDER PHYSICALLY BASED RENDER

OLD RENDER PHYSICALLY BASED RENDER

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

PBR Physically Based Rendering

Технология Physically Based Rendering (PBR) основана на наблюдаемых принципах и физических законах, согласно которым свет распространяется в нашем мире. Когда мы говорим о материалах, мы имеем в виду, что каждый из них обладает собственными свойствами, которые влияют на рассеяние и отражение света на нем. Как пример - гладкий лист бумаги. Визуально кажется, что эта поверхность идеально ровная, однако если мы посмотрим на неё в микроскоп, мы увидим множество древесных волокон, пересекающихся друг с другом. Сталкивающиеся с такой неровной поверхностью фотоны света отражаются от этих разнородных волокон под разными углами, большая часть света рассеивается, не группируясь в одной точке.

Однако, можно представить какое количество материалов и отражаемого ими света ежесекундно присутствует на ваших мониторах в боях War Thunder.



Рассчитывать освещение с таким уровнем детализации не под силу даже офлайн-рендерам для кино, и оно слишком сложное в настройке (Как выглядят привычные предметы под электронным микроскопом). Именно поэтому используются необходимые статистические параметры материалов, такие как “шершавость” (roughness), коэффициент преломления, “металличность” (статическое содержание диэлектрика/проводника в пикселе). Это позволяет уже на этапе создания моделей и соответствующих им материалам оперировать физическими значениями этих материалов, учитывая сочетания необходимых параметров, без последующей корректировки в условиях готовой сцены.

Bi-directional Reflection Distribution Function

Двулучевая функция отражательной способности (ДФОС, англ. Bidirectional reflectance distribution function — BRDF) — четырёхмерная функция, определяющая, как свет отражается от непрозрачной поверхности, позволяет рассчитать количество энергии, отражаемой или рассеиваемой в сторону наблюдателя при заданном входящем излучении. Логично, что металлические, тканевые или деревянные поверхности в игре в разной степени влияют на освещение - рассеивание, преломление и отражение света.



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


Примечание: Функция отраженного света Кука-Торренса. l — направление света v — направление взгляда наблюдателя n — нормаль к поверхности h — вектор между векторами l и v (half vector) D(h) — функция распределения микро граней F(v,h) — функция Френеля, G(l, v, h) — функция затенения микро граней. Все параметры данной функции достаточно простые и имеют физический смысл. Но какой физический смысл имеет half-vector? Half-vector нужен, чтобы отфильтровать те микрограни, которые вносят свой вклад в отражение света для наблюдателя. Если нормаль микрограни равна half-vector, значит данная микрогрань вносит вклад в освещение при направлении взгляда V.



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

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

Распределения отражений микрограней D(h) позволяет задать процент энергии, для которого происходит отражение света и распределение энергии в зависимости от того, насколько гладкая или шероховатая поверхность. В War Thunder используется так называемая модель GGX (Microfacet Models for Refraction through Rough Surfaces)

Распределения самозатенения микрограней G(l,v,h) определяет, насколько (при пологих углах отражения), поверхность затеняет сама себя. В игре используется функция самозатенения Смита адаптированная для модели GGX (Eric Heitz. “Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs".

Функция Френеля F(v,h) определяет интенсивность отраженной и преломленной электромагнитной волны при прохождении через границу двух сред. Этот эффект очень заметен на воде, если смотреть на поверхность воды под острым углом, то вода отражает большинство света и мы видим отражение. Если же смотреть на воду сверху-вниз, то отражения мы практически не видим, а видим то, что находится на дне.


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

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


Рассеивание света

Кроме отражения, свет на диэлектриках ещё и рассеивается.

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



Что нового эта технология привнесёт в War Thunder?

Технология Physically Based Rendering учитывает особенности каждого материала и с помощью математических формул, в которых указываются свойства рельефа его поверхности, высчитывает и отображает правильное поведение света, который столкнулся с объектом. Таким образом, самолёты и танки стали выглядеть более естественно и вариативно, особенно в разное время суток и при смене погоды. Металлические потёртые фюзеляжи самолётов отражают свет играя бликами в манёврах. На высоких настройках графики, каждая, даже самая мелкая деталь в навесном оборудовании танка теперь не однородно скрыта в тени, а отражает свет от расположенных рядом объектов.


OLD RENDER PHYSICALLY BASED RENDER

OLD RENDER PHYSICALLY BASED RENDER

OLD RENDER PHYSICALLY BASED RENDER

OLD RENDER PHYSICALLY BASED RENDER

Обсудить на Форуме

Cookie-файлы

На сайте используются файлы cookie и другие аналогичные средства. Если вы остаётесь на сайте после прочтения данной информации, это означает, что вы не возражаете против их использования.