Bezz 0 Опубликовано: 16 марта 2014 Теоретические основы физически верного рендера Автор Jeff Russell Оригинал статьи: http://www.marmoset.co/toolbag/learn/pbr-theory Физически верный рендер (Physically-based rendering, сокр. PBR) - это интересный тренд в рендеринге в реальном времени. Термин у всех на слуху, но не всем ясно, что конкретно он значит. Если коротко, то: «много чего» или «по ситуации», что не особенно просвещает. Поэтому я попытаюсь объяснить подробно, что из себя представляет PBR и чем он отличается от прочих методов визуализации. Этот документ предназначен для не-технарей (в основном художников) и не содержит в себе ни формул, ни кода. Главное, что отличает систему физически верного освещения от своих предшественников, это более четкое обоснование поведения света и поверхностей. Возможности шейдеров достаточно развились, чтобы стало возможным без опаски отбросить некоторые старые аппроксимации, а с ними и некоторые устаревшие методы производства арта. А значит, и технические специалисты, и художники должны понимать причины таких изменений. Начать придется с самых основ, чтобы четко определить их до того, как мы начнем освещать новое. Возможно, часть излагаемого материала вам уже известна, но думаю, вы убедитесь, что чтение статьи стоило потраченного времени. Полагаю, вы также найдете полезной статью Joe Wilson'а - creating PBR artwork. http://www.marmoset.co/toolbag/learn/pbr-practice'>http://www.marmoset.co/toolbag/learn/pbr-practice Рассеивание и отражение света - Diffusion & Reflection Взаимодействия между светом и поверхностью можно разделить на два фундаметальных типа: Рассеянный и отраженный свет, так же известные как диффузный (diffuse) и спекулярный (specular) свет. Многие знакомы с терминами на практическом уровне, но могут не знать, в чем их физическое различие. При ударении света о границу поверхности часть его отразится, то есть отскочит от поверхности так, что нормаль к поверхности в точке падения разделит угол между падающим и отраженным углом на две равные части. Такое поведение очень схоже с поведением мяча, брошенного в стену — он отскочит под противоположным углом. Из-за этого гладкие поверхности выглядят «зеркальными». Само слово «specular», используемое для описания этого эффекта, произошло от латинского «зеркало» (как будто «Спекулярность» звучит не так громоздко как «Зеркальность»). Однако не весь свет отражается от поверхности. Обычно часть лучей проникает внутрь освещенного объекта. Там свет либо впитывается материалом (обычно переводясь в тепло), либо рассеивается внутри. Иногда часть рассеянного света возвращается наружу, так что его могут уловить глаз или камера. Есть много имен для этого явления: «Diffuse light», «Diffusion», «Subsurface scattering» - все они описывают один и тот же эффект. Поглощение и рассеивание диффузного света различается для разной длины световых волн, что дает объекту его цвет (например, если объект поглощает почти весь свет, но рассеивает синий, то объект выглядит синим). Диффузия зачастую настолько равномерно хаотична, что, можно сказать, одинакова во всех направлениях — совсем не как у зеркала! Шейдер, использующий такую аппроксимацию в вычислениях, требует только один входной параметр - «albedo», то есть цвет, описывающий, частицы какого цвета будут рассеиваться обратно от объекта наружу. Иногда как синоним используется понятие «diffuse color». Просвечиваемость и прозрачность - Translucency & Transparency Иногда диффузия происходит более сложным образом — в материалах с большим коэффициентом рассеяния, например, вроде кожи или воска. В таком случае просто цвет не подходит. Шейдерная система должна принять во внимание форму и толщину освещенного предмета. Если он достаточно тонкий, можно увидеть, как свет с обратной стороны рассеивается внутри и затем выходит наружу спереди. Такие объекты называют просвечиваемыми (translucent). Если диффузия и того ниже (как в стекле), то рассеивания света практически не происходит и изображение может пройти с одной стороны на другую нетронутым. Подобное поведение сильно отличается от обычной «поверхностной» диффузии и требует уникальных шейдеров для имитации. Закон сохранения энергии - Energy Conservation Используя вышеописанное, можно сделать важный вывод: отражение и диффузия взаимоисключительны: чтобы свет стал диффузным, он должен проникнуть внутрь объекта (то есть не суметь отразиться). В шейдерной терминологии данное явление известно как пример закона сохранения энергии, что всего лишь означает: покидающий поверхность свет не может быть ярче того, который на нее изначально упал. Это легко внедрить в шейдерную систему. Достаточно вычитать отраженный свет до того, как произойдет диффузия. То есть, сильноотражающие объекты почти или совсем не создают диффузного света, потому что почти ничего не проникает под поверхность. Верно и обратное: если объект излучает яркий диффузный свет, он не будет сильно отражать. Сохранение энергии такого типа играет важную роль в физически верном шейдинге. Оно позволяет художнику работать со значениями albedo и reflectivity (отражаемости) материала, не нарушая законов физики (что обычно плохо выглядит). Внедрение этих констант в код хоть и необязательно для создания красивой картинки, однако служит своего рода «сиделкой», не давая работам художника слишком сильно нарушать правила или противоречиво вести себя в разных условиях освещения. Металлы - Metals Электропроводящие материалы, в основном металлы, заслуживают отдельного упоминания по ряду причин. Во-первых, они склонны к отражению гораздо сильнее, нежели диэлектрики (непроводники). Проводники отражают 60-90% всего света, в то время, как диэлектрики, в массе своей, гораздо меньше — от 0 до 20%. Такая высокая отражаемость не позволяет свету проникать внутрь и рассеиваться, что придает металлам очень «блестящий» вид. Во-вторых, отражаемость у проводников иногда варьируется вдоль видимого спектра,то есть отражения на них имеют оттенок. Такое подкрашивание редко даже среди проводников, но бывает и у довольно повседневных материалов (например, золото, медь, латунь). Диэлектрики в основном себя так не ведут и отражения не подкрашивают. И последнее, проводники чаще поглощают проникший под поверхность свет, чем рассеивают его. Значит, в теории проводящие материалы могут вообще не излучать диффузный свет. На практике, однако, в металле часто содержатся оксиды и другие примеси, которые могут рассеивать немного света, если находятся близко к поверхности. Из за этих отличий металлов от почти всего остального, некоторые системы визуализации установили «металличность(metalness)» в качестве входного параметра. В подобных системах художники устанавливают степень, в которой материал ведет себя как металл, вместо того, чтобы напрямую устанавливать только albedo и reflectivity. Иногда это более предпочтительный способ создания материалов, но необязательно характеризует PBR. Френель - Fresnel Огюсте́н Жан Френе́ль похоже, один из тех давно покойных европейцев, которых мы вряд ли забудем. В основном потому, что его именем назван ряд феноменов, впервые им четко описанных. Будет сложно продолжать рассуждать об отражении света, не упомянув его имени. В компьютерной графике слово «Френель» (Fresnel) обозначает изменение reflectivity в зависимости от угла. Если точнее, свет упавший по касательной к поверхности гораздо вероятнее отразится, чем тот, что падает «в лоб». То есть объекты, отрисованные с корректными настройками Френеля будут иметь более яркие отражения ближе к краям. Многие уже давно знакомы с этим эффектом, так как его присутствие в компьютерной графике не ново. Однако, PBR-шейдеры популяризировали несколько важных поправок к вычислениям уравнений Френеля. Во-первых, для всех материалов reflectivity становится максимальной для касательных углов, то есть «края» любых гладких объектов должны вести себя как идеальное (неокрашенное) зеркало, вне зависимости от материала. Да, действительно — любая субстанция может вести себя как зеркало, если она достаточно гладка и наблюдается под определенным углом! Парадоксально, но факт. Второе наблюдение касательно свойств Френеля гласит, что кривая перепада углов не слишком меняется от материала к материалу. Металлы отличаются сильнее всего, но и они поддаются анализу. Для нас это означает, что, если требуется реалистичность, контроль художника над поведением Френеля стоит скорее ограничивать, чем расширять. Это, в общем, хорошие новости, потому что упрощается создание контента. Шейдерная система в состоянии практически полностью самостоятельно разбираться с эффектом Френеля; достаточно взять в расчет уже указанные свойства материала, вроде gloss и reflectivity. При работе с PBR художник задает разными способами «Базовую reflectivity». Этим определяется минимальное значение и цвет отраженного света. Эффект Френеля во время отрисовки будет добавлять отражаемость поверх этого установленного значения, вплоть до 100% под крутыми углами. По сути, контент описывает базис, а уравнения Френеля исходят из него, делая поверхности более отражающими под разными углами. Важное предостережение насчет эффекта Френеля — он быстро теряет в заметности с ростом шероховатости поверхности. Но об этом чуть позже. Микроповерхность - Microsurface Вышеописанные diffusion и reflection зависят от положения поверхности. В крупном масштабе эта ориентация определяется формой выбранного меша, плюс используется карта нормалей для описания более мелких деталей. С этой информацией любая система рендера достаточно хорошо справится с отрисовкой diffusion и reflection. Однако все еще не хватает одной важной части. В реальном мире большая часть поверхностей имеет очень маленькие несовершенства: крошечные бороздочки, трещины и бугорки, невидимые глазом и слишком мелкие, чтобы отображаться на карте нормалей любого размера в пределах разумного. Несмотря на свою незаметность для невооруженного глаза, эти микроскопические особенности все же влияют на диффузию и отражение света. Сильнее всего микроповерхностные детали влияют на отражение (подповерхностное рассеивание не так сильно подвергается влиянию и далее в этой статье не обсуждается). На изображении выше можно увидеть, как параллельные лучи нисходящего света расходятся, отразившись от поверхности, так как встречают на своем пути плоскости с разной ориентацией. Если продолжить аналогию мяча и стены, то это как бросать мячик о каменный утес или что-то настолько же неровное: мячик отскочит, но в непредсказуемом направлении. Иначе говоря, чем грубее поверхность, тем больше будет отклоняться лучей и тем более размытым будет блик. К сожалению, рассчитывать каждую деталь микроповерхности недопустимо в условиях производства арта. И что же делать? Оказывается, если отказаться от описания деталей микроповерхности напрямую и вместо этого обозначить общее значение шероховатости (“roughness”), можно написать достаточно аккуратные шейдеры, дающие похожий результат. Это значение также известно как «gloss», «smoothness» или «roughness». Его можно задать текстурой или константой для заданного материала. Микроповерхностные детали - важная характеристика любого материала, ведь в реальном мире встречается огромное многообразие особенностей микроповерхности. Gloss-текстура - вещь не новая, но в физически верном шейдинге она играет ключевую роль из-за того, что микроповерхностные детали оказывают такое серьезное влияние на отражение света. Как мы скоро увидим, есть некоторые соображения относительно свойств микроповерхности, которые повышают качество PBR. И снова про cохранение энергии - Energy Conservation (Again) Так как наша гипотетическая шейдерная система принимает во внимание микроповерхность и, соответственно, распределяет отраженный свет, нужно, чтобы само количество отраженного света было правильным. К сожалению, многие старые системы рендера делали это неправильно, отражая чересчур или недостаточно, исходя из шероховатости микроповерхности. Если уравнения составлены правильно, рендер должен отображать на грубых поверхностях более широкие и тусклые блики, чем на гладких поверхностях, где они будут меньше и резче. Ключевой является именно эта разница в яркости: Оба материала отражают одинаковое количество света, но более шершавая поверхность распыляет его в разных направлениях, в то время, как более гладкая отражает более сконцентрированный «пучок»: Вот вам вторая форма сохранения энергии, которую нужно соблюдать, вдобавок к описанному выше балансу diffusion/reflection. Правильная их работа, - один из важных факторов для любого рендера, стремящегося называться «физически верным». Слава микроповерхности! - All Hail Microsurface И вот, благодаря полученным знаниям, мы приходим к пониманию одной вещи, довольно важной, на самом деле: микроповерхностный gloss напрямую влияет на видимую яркость отражений. Это значит, что художник может вносить вариации непосредственно в gloss карту — царапины, вмятины, потертые и отполированные участки, да что угодно — и система PBR отобразит изменение не только формы рефлексов, но и их относительную интенсивность. Не требуется никаких изменений «spec mask»/reflectivity! Это важно, потому что две физически связанных величины — детали микроповерхности и reflectivity — впервые связаны воедино в контенте и при рендере. Так же, как с описанным выше балансом диффузия\отражение: можно выставлять каждое значение отдельно, но из-за их взаимозависимости задача только усложнится. Дальнейшее изучение материалов в реальном мире показывает, что значения reflectivity не особенно широко варьируются (см. раздел о проводниках). Хорошим примером может послужить грязь и вода: у обоих похожее значение reflectivity, но из-за того, что поверхность у грязи грубая, а у лужи очень гладкая, они кардинально отличаются по тому, как отражают свет. Художник, работающий с подобной сценой в PBR, должен обозначать эту разницу напрямую через значения gloss, (он же roughness), не трогая reflectivity. см. пример ниже: Свойства микроповерхности влияют на отражение и другими менее очевидными способами. Например, эффект Френеля, что «края ярче» на шороховатых поверхностях слабеет (Хаотическая природа грубой поверхности «разбрасывает» эффект Френеля, не давая наблюдателю четко его выделить). Далее, многочисленные или вогнутые элементы микроповерхности способны «поймать» свет, заставляя отражаться от поверхности раз за разом, теряя яркость и все более поглощаясь поверхностью. Разные системы рендера в разной степени и разными путями просчитывают такие нюансы, но в общем суть одна: более грубые поверхности отображаются более тусклыми. Заключение - Conclusion Разумеется, о физически-верном рендере можно сказать еще очень много; данный документ служит лишь базовой вводной. Если вы еще этого не сделали, прочтите урок Joe Wilson’а по созданию арта под PBR http://www.marmoset.co/toolbag/learn/pbr-practice (скоро переведу, немного терпения. Прим. Пер.) Кому нужна техническая информация, рекомендую к прочтению следующее: Великолепный пост из блога John Hable: Everything Is Shiny http://filmicgames.com/archives/547 Еще более крутой пост John Hable: Everything Has Fresnel http://filmicgames.com/archives/557 конспект Sébastien Lagarde: Rendering Remember Me http://www.fxguide.com/featured/game-environments-parta-remember-me-rendering/ Если подумать, весь блог Sébastien Lagarde , - хорошая штука http://seblagarde.wordpress.com/ Курс SIGGRAPH 2010 по PBR http://renderwonk.com/publications/s2010-shading-course/ Стоит упоминания: The Importance of Being Linear http://http.developer.nvidia.com/GPUGems3/gpugems3_ch24.html Если есть вопросы, которые остались без ответов, меня обычно можно найти на twitter. https://twitter.com/j3ffdr Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Earanak 0 Опубликовано: 28 марта 2014 Давно на ART-Talk не заглядывал, и тут случайно 'нагуглил' эту тему Копи-пастну частично свое сообщение с других ресурсов, может кому поможет : Окей, PBR-Шейдинг 'завезли' уже давненько, и на данный момент он полным ходом идет в массы ! Еще на примере "Remeber Me (2013)" его реализовали, да и "Marmoset Toolbag 2" вышел в Декабре 2013. Теперь и "Unreal Engine 4"... Тут скоро и " " и "The Order 1886", тоже с PBR-Шейдингом. Ну и конечно-же "Quixel Suite" заточили под PBR — Ну то-есть как-бы понятно что самое время изучать все это дело 8-) ! Мне помог следующий материал : Почитал это : http://www.marmoset.co/toolbag/learn/pbr-theory http://www.marmoset.co/toolbag/learn/pbr-practice + Все сопутствующие материалы в послесловии... Посмотрел это : + В описании видео есть (Моделька с Текстурами и сценой под Marmoset Toolbag 2). В конце-концов глянул это : + Все остальные уроки по UE4 материалам... Затем залип на "PolyCount-е" в тредах по PBR/UE4/Marmoset Toolbag 2... Многие 'крутаны(профи)' сошлись в мнении что PBR : Легкий в освоении. Сложный в переосмысливании. И эффективный в производстве. Такие дела ! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Bezz 0 Опубликовано: 28 марта 2014 Earanak спасибо) Спасибо за видео, поглядим. Да, по Remember me полезная статья, крайне рекомендую! картиночки по спеке как минимум Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Earanak 0 Опубликовано: 28 марта 2014 Bezz, кстати... А приблизительно когда будет перевод второй части ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Bezz 0 Опубликовано: 28 марта 2014 Earanak Гы) К сожалению, только на следующей неделе) Не так у меня много свободного времени, а еще и помоделить хочется, и текстурки порисовыать Embarassed К тому же не хочется выкладывать сырую вещь. Но я рад, что это хоть кому-то пригодилось) Постараюсь ускориться Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
RIDDICK 7 Опубликовано: 28 марта 2014 Замечательный перевод, спасибо! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Dobrij 0 Опубликовано: 28 марта 2014 Спасибо! Жду с нетерпением следующих переводов. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
exeshe4ki 0 Опубликовано: 28 марта 2014 Спасибо большое за материал. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
inflict3d 0 Опубликовано: 29 марта 2014 Earanak killzone на соньке 4 забыл Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kidult® 0 Опубликовано: 4 апреля 2014 Bezz Спасибо за перевод, жду с нетерпением продолжения. :clapclap: Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Bezz 0 Опубликовано: 4 апреля 2014 kidult®, на этих выходных будет :sm: Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах