Pbr руководство скачать

01 Май

Allegorithmic бесплатное PBR руководство обновлено

Компания Allegorithmic TA Wes McDermott обновила свои два бесплатных руководства по физическим материалам и рендерингу.

Вы можете прочитать их в Substance Academy: Volume 1 | Volume 2.

CGTELEGRAM
3DJOBS.RU 

Tutorial 3djobs.ru

Последние новости о CG-индустрии, 3D-программном обеспечении, уроках, видеороликах, анимации, обзорах, продуктах VFX и многом другом.

Уэс МакДермотт | PBR руководство от Allegorithmic / The PBR Guide by Allegorithmic [2 части] (2018) [PDF] [Ru/En]
Автор: Уэс МакДермотт / Wes McDermott
Издательство: Самиздат (Allegorithmic)
Жанр: 3D графика, Текстурирование
Язык: Русский, Английский
Формат: PDF
Качество: Изначально электронное (ebook)
Иллюстрации: Цветные
Описание:
Allegorithmic — лидер отрасли в области технологий 3D-текстурирования с его отмеченным наградами набором программ Substance.
Эта книга, написанная Уэсом МакДермоттом и перепроверенная экспертами в этой области, описывает принципы физически корректного рендеринга (PBR) и содержит практические рекомендации по текстурированию PBR.
В первой части книги рассматриваются принципы, лежащие в основе рендеринга на физической основе, начиная со светового луча и заканчивая определением ключевых факторов для правильного PBR. Эта часть очень важна для художников по текстурам, чтобы понять, как свет взаимодействует с объектами.
Вторая часть предлагает практические рекомендации по текстурированию PBR, которые базируются на основах, описанных в первой части: переопределение PBR с художественной точки зрения; обсуждение рабочих процессов металл/шероховатость и зеркальность/глянцевитость, а также рекомендации по созданию физически точных текстурных карт.

Список книг:

PBR руководство от Allegorithmic:
— Том 1 — Свет и материя: Теория физически корректного рендеринга и затенения
— Том 2 — Практические принципы создания PBR текстур

Содержание

Том 1 — Свет и материя: Теория физически корректного рендеринга и затенения
— Световые лучи
— Поглощение и рассеивание – Прозрачность и полупрозрачность
— Диффузное и зеркальное отражения – Теория микроповерхностей
— Цвет
— BRDF
— Сохранение энергии
— Эффект Френеля — F0 (Коэффициент отражения Френеля при 0 градусах)
— Проводники и диэлектрики – Металлы и неметаллы
— Рендеринг в линейном пространстве
— Ключевые характеристики PBR
Том 2 — Практические принципы создания PBR текстур
— Что такое PBR? Каковы его преимущества? Что он значит для художников?
— Подход Metal/Roughness: Диэлектрик F0 / Базовый цвет / Металл /
— Шероховатость / Разрешение и плотность текселя / Достоинства и недостатки
— Подход Specular/Glossiness: Диффузность / Зеркальность / Глянцевость / Разрешение и плотность текселя / Достоинства и недостатки
— Общие карты: Ambient Occlusion / Высоты / Нормалей
— PBR программы Substance: Substance Designer / Substance Painter / Вывод материалов Substance и рендеринг
— Дополнение – таблицы “Поверхность металлическая?” / Значения отражаемости / Сравнение правильных/неправильных текстур

Дополнительная информация:

Книга на английском языке содержит в себе обе части.
Онлайн-версия на английском языке:

Part 1

,

Part 2


Перевод: Леонид Садеков (Специально для XYZ School)

Скриншоты:





Скачать .torrent

Чтобы скачать торрент-файл

Уэс МакДермотт — PBR руководство от Allegorithmic / The PBR Guide by Allegorithmic [2 части] (2018)

Вам нужно Авторизоваться на сайте под своим логином. Если у Вы ещё не зарегистрированы, тогда Вам нужно пройти Регистрацию

PBR_Guide_Vol.1

PBR_Guide_Vol.1

PBR_Guide_Vol.1

PBR_Guide_Vol.1

User Manual: Pdf

Open the PDF directly: View PDF PDF.
Page Count: 13

The Comprehensive PBR Guide

by Allegorithmic — vol. 1

Light and Matter : The theory of PhysicallyBased Rendering and Shading

Cover by Gtan Lassagne, written by Wes McDermott

vol. 1 — The theory of PhysicallyBased Rendering and Shading

• Light Rays — 2

• Absorption and Scattering (Transparency and Translucency) — 3

• Diffuse and Specular Reflection — 4

Microfacet Theory — 5

• Color — 6

• BRDF — 6

• Energy Conservation — 7

• Fresnel Effect — 7

F0 (Fresnel Reflectance at 0 Degrees) — 8

• Conductors and Insulators (Metals and Non Metal) — 9

Metals — 9

Non-Metals — 10

• Linear Space Rendering — 11

• The Key Factors — 11

• References — 12

Technical edit by: Cyrille Damez and Nicolas Wirrmann

vol.1 — The theory of PhysicallyBased Rendering and Shading

Light and Matter

The theory of PhysicallyBased Rendering and Shading

The Light Ray Model states that a light ray has the

trajectory of a straight line in homogeneous transparent

media such as air. The Light Ray Model also says that the

ray will behave in a predictable manner when

encountering surfaces such as opaque objects or passing

through a different medium such as air to water. This

makes it possible to visualize the path the light ray will

follow as it moves from a starting point to where it

eventually changes into another form of energy such as

heat.

The light ray that hits a surface is called the Incident Ray

and the angle that at which it hits is called the Angle of

Incidence as shown in figure 01.

A light ray is incident on a plane interface between two

media.

When a light ray hits a surface, either or possibly both of

these things can happen:

1. The light ray is reflected off the surface and travels

in a different direction. It follows the Law of Reflection,

which states that the Angle of Reflection is equal to the

Angle of Incidence (Reflected Light).

2. The light ray passes from one medium to another in

the trajectory of a straight line (Refracted Light).

At this point, we can state that light rays split into two

directions: reflection and refraction. At the surface, the

ray is either reflected or refracted and it can be

eventually absorbed by either medium. However,

absorption doesn’t occur at the surface.

Light is a complex phenomenon as it can exhibit properties of both a wave and a particle. As a result, different models

have been created to describe the behavior of light. As texture artists, we are interested in the Light Ray Model as it

describes the interaction of light and matter. It’s important for us to understand how light rays interact with surface

matter because our job is to create textures that describe a surface. The textures and materials we author interact

with light in our virtual worlds and the more we understand about how light behaves, the better our textures will look.

In this guide, we will discuss the theory behind the physics through which physically-based rendering models are

based upon. We will start with a light ray and work up to defining the key factors for PBR.

vol. 1 — The theory of PhysicallyBased Rendering and Shading

When traveling in an inhomogeneous medium or

translucent material, light can be absorbed or scattered:

1. With absorption, the light intensity decreases as it is

changed into another form of energy (usually heat), and

its color changes as the amount of light absorbed

depends on the wavelength, but the direction of the ray

doesn’t change.

2. With scattering, the ray direction is changed randomly,

the amount of deviation depending on the material.

Scattering randomizes light direction but the intensity

doesn’t change. An ear is a good example. The ear is thin

(absorption is low), so you can see the scattered light

penetrating out of the back of the ear. If there is no

scattering and the absorption is low, rays can pass

directly through the surface such as with glass. For

example, if you are swimming in a pool, which is

hopefully clean, you can open your eyes and see at a

fairly good distance through the clear water. However,

let’s imagine that same pool hasn’t been cleaned in a

while and the water is dirty. The dirt particles scatter the

light and thus make the clarity of the water much lower.

The further light travels in such a medium/material, the

more it is absorbed and/or scattered. Therefore, object

thickness plays a large role in how much the light is

absorbed or scattered. A thickness map can be used to

describe object thickness to the shader as shown in figure

02.

Absorption and Scattering (Transparency and Translucency)

Specular reflection is light that has been reflected at the

surface, as we discussed above in the Light Ray section.

The light ray is reflected off the surface and travels in a

different direction. It follows the Law of Reflection, which

states that on a perfectly planar surface the Angle of

Reflection is equal to the Angle of Incidence. However, it

is important to note that most surfaces are irregular and

that the reflected direction will therefore vary randomly

based on the surface roughness. This changes light

direction, but the light intensity remains constant.

Rougher surfaces will have larger and dimmer looking

highlights. Smoother surfaces will keep specular

reflections focused, which can appear to look brighter or

more intense when looked at from the proper angle.

However, the same total amount of light is reflected in

both cases as shown in figure 03.

Diffuse reflection is light that has been refracted. The

light ray passes from one medium to another and is

scattered multiple times inside the object. Then it is

Diffuse and Specular Reflection

Object thickness plays a large role

in how much the light is absorbed

or scattered

vol.1 — The theory of PhysicallyBased Rendering and Shading

refracted again out of the object making its way back to

the original medium at approximately the same point

where it went through the first time as shown in figure

04.

Diffuse materials are fairly absorbent, meaning that if the

refracted light travels for too long in that material, it has

a good chance of being completely absorbed. This means

that if the light ever comes out of that material, it has

probably not traveled very far from the point of entry.

That’s why the distance between the entry and exit

points can be neglected. The Lambertian model, which is

usually used for diffuse reflection in a traditional shading

sense, does not take surface roughness into account, but

there are diffuse reflection models that do such as Oren-

Nayar.

Materials that have both high scattering but low

absorption are sometimes referred to as «participating

media» or «translucent materials». Examples of these are

smoke, milk, skin, jade and marble. Rendering of the

latter three may be possible with the additional modeling

of subsurface scattering where the difference between

the ingoing and outgoing point of the light ray is no

longer neglected. Accurate rendering of medium with

highly varying and very low scattering and absorption like

smoke or fog may require even more

expensive methods such as Monte Carlo

simulations.

Rougher surfaces will

have larger and dimmer

looking highlights

vol. 1 — The theory of PhysicallyBased Rendering and Shading

In theory, both diffuse and

specular reflection are dependent

on the surface irregularities

where the light rays intersect. In

practice though, the effect of

roughness on diffuse reflection is

much less visible because of the

scattering happening inside the

material. As a result, the

outgoing direction of the ray is

fairly independent of surface

roughness and the incident

direction. The most common

model for diffuse reflection

(Lambertian) completely neglects

it.

In this document, we have

referred to these surface

irregularities as surface

roughness. Actually, it is often

referred to by several names

such as roughness, smoothness, glossiness or micro-

surface, depending on the PBR workflow in use, but they

describe the same aspect of a surface, which is sub-texel

geometric detail.

These surface irregularities are authored in the roughness

or glossiness map depending on the workflow you are

using. A physically-based BRDF is based on the

microfacet theory which supposes that a surface is

composed of small-scaled planar detail surfaces of

varying orientation called microfacets. Each of these

small planes reflects light in a single direction based on

its normal as shown in figure 05.

Micro-facets whose surface normal is oriented exactly

halfway between the light direction and view direction will

reflect visible light. However, not all microfacets where

the microsurface normal and the half normal are equal

will contribute as some will be blocked by shadowing

(light direction) or masking (view direction) as is

illustrated in figure 05.

The surface irregularities at a microscopic level cause

light diffusion. For example, blurred reflections are due

to scattered light rays. The rays are not reflected in

parallel so we perceive the specular reflection as blurred

as shown in figure 06.

The surface irregularities at a

microscopic level cause light

diffusion

vol.1 — The theory of PhysicallyBased Rendering and Shading

The color of a surface

(which is to say the color

that we see) is due to

which wavelengths are

emitted by the light source,

which are absorbed by the

object and which others

are reflected both

specularly and diffusely.

The remaining reflected

wavelengths are what we

see as color.

For example, the skin of an

apple mostly reflects red

light. Only the red

wavelengths are scattered

back outside the apple skin

and the others are

absorbed by it as shown in figure 07.

It also has bright specular highlights the same color as

the light source because with materials like the skin of an

apple that are not electrical conductors (dielectrics),

specular reflection is almost independent of wavelength.

Therefore, for such materials the specular reflection is

never colored. We will discuss more about the different

type of materials (metals and dielectrics) in later sections.

A Bidirectional Reflectance Distribution Function (BRDF)

simply put is a function that describes the reflectance

properties of a surface. In computer graphics, there are

different BRDF models some of which are not physically

plausible. For a BRDF to be physically plausible, it must

be energy conserving and exhibit reciprocity. For

reciprocity, I am referring to the Helmholtz Reciprocity

principle, which states that incoming and outgoing light

rays can be considered as reversals of each other without

affecting the outcome of the BRDF.

The BRDF used by Substance’s PBR shaders is based on

Disney’s «principled» reflectance model, which is based on

the GGX microfacet distribution. GGX provides one of the

better solutions in terms of specular distribution in that it

has a shorter peak in the highlight and a longer tail in the

falloff, which is to say that it looks

more realistic as shown in figure 08.

Object GGX provides

one of the better

solutions in terms of

specular distribution

Substance PBR shaders use the

GGX microfacet distribution

vol. 1 — The theory of PhysicallyBased Rendering and Shading

Energy Conservation plays a vital role in physically-based rendering solutions. It states that the total amount of light

re-emitted by a surface (reflected and scattered back) is less than the total amount it received. In other words, the

light reflected off the surface will never be more intense than it was before it hit the surface. As artists, we don’t have

to worry about controlling Energy Conservation. This is one of the nice aspects of PBR in that energy conservation is

always enforced by the shader. It’s part of the physically-based model and it allows us to focus more on art rather

than physics.

The Fresnel reflection factor also plays a vital role in

physically-based shading as a coefficient of the BRDF.

The Fresnel Effect as observed by French physicist

Augustin-Jean Fresnel states that the amount of light you

see reflected from a surface depends on the viewing

angle at which you perceive it.

For example, think of a pool of water. If you look straight

down, perpendicular to the water surface, you can see

down to the bottom. Viewing the water surface in this

manner would be at zero degrees or normal incidence,

normal being the surface normal. Now, if you look at the

pool of water at a grazing incidence, more parallel to the

water surface, you will see that the specular reflections

on the water surface become more intense and you may

not be able to see below the surface of the water at all.

Fresnel is not something that we control in PBR as we did

in traditional shading. Again, this is another physics

aspect that is handled for us by the PBR shader. When it

comes to viewing a surface at a grazing incidence, all

smoothed surfaces will become a nearly 100% reflector

at a 90 degree angle of incidence.

For rough surfaces, reflectance will become increasingly

specular but we won’t approach 100% specular

reflection. What matters then is the angle between the

normal of each microfacet and the light, not the angle

between the normal of the «macrosurface» and the light.

Because the light rays are dispersed into different

directions, the reflection appears softer or dimmer. What

you get at a macroscopic level is a bit like the average of

all the Fresnel effect you would have for the microfacets.

For rough surfaces, reflectance will become increasingly

specular but we won’t approach 100% specular reflection

vol.1 — The theory of PhysicallyBased Rendering and Shading

F0 (Fresnel Reflectance at 0 Degrees)

When light hits a surface straight on or perpendicularly (0

degree angle), there is a percentage of that light that is

reflected back as specular. Using the Index of Refraction

(IOR) for a surface, you can derive the amount that is

reflected back and this is referred to as

F0 (Fresnel 0) as shown in figure 09.

The amount of light that is refracted

into the surface is referred to a 1-F0.

The F0 range for most common

dielectrics will be from 0.02 — 0.05 and

for conductors the F0 range will be

0.5-1.0. Thus, the reflectivity of a

surface is determined by the refractive

index as shown in the following

equation from Sebastien Lagarde’s

«Feeding a Physically-based Shading

Model» blog post as shown in figure 10.

It is the F0 reflectance value that we

are concerned with in regards to

authoring our textures. Non-metals

(dielectrics/insulators) will have a

greyscale value and metals (conductors)

will have an RGB value. With regards to

PBR and from an artistic interpretation

of reflectance, we can state that for a

common smooth dielectric surface, F0 will reflect

between 2% and 5% of light and 100% at grazing angles

as was shown in figure 09.

The dielectric (non-metal) reflectance values don’t

actually change very drastically. In fact, when altered by

roughness the actual changes in value can be hard to

see. However, there is a difference in the values. In

figure 11, you can see a chart that shows the F0 ranges

for both metal and non-metal materials.

Notice that the ranges for non-metals do not deviate

from each other drastically. Gemstones are an exception

as they have higher values. We will discuss F0 as it

specifically relates to conductors and insulators a bit later.

vol. 1 — The theory of PhysicallyBased Rendering and Shading

When creating materials for PBR, I find it helpful to think in terms of metal or non-metal. I simply ask myself if the

surface is metal or not. If it is, I follow one set of guidelines and if it’s not, I follow another. This can be a rather

simplistic approach as some materials may not fall into these categories such as metalloids, but in the overall process

of creating materials, distinguishing between metal and non-metal is a good approach and metalloids are an exception.

To set up guidelines for materials, we first must understand what we are trying to create. With PBR, we can look at

the properties of metals (conductors) and non-metals (insulators) to derive this set of guidelines.

Conductors and Insulators (Metals and Non-Metals)

Metals (conductors) are good conductors of heat and

electricity. Simply put, the electric field in conducting

metals is zero and when an incoming light wave made of

electric and magnetic fields hits the surface, it is partially

reflected and all the refracted

light is absorbed. The reflectance

value for polished metal is going

to be high at a range of about

70-100% reflective as shown in

figure 12.

Some metals absorb light at

different wavelengths. For

example, gold absorbs blue light

at the high-frequency end of the

visible spectrum so it appears

yellow as a result. However,

since the refracted light is

absorbed, the color tint of

metals come from the reflected

light and thus in our maps, we

don’t give metals a diffuse color.

For example, in the specular/

gloss workflow, raw metal is set

to black in the diffuse map and

the reflectance value is a tinted

color value in the specular map.

With metals, the reflectance

value will be RGB and can be tinted. Since we are

working within a physically-based model, we need to use

real-world measured values for the metal reflectance in

our maps.

Another important aspect with metals in terms of

texturing is that metal can corrode. This means that

weathering elements can play a large role in the

reflective state of metal. If the metal rusts for example,

this changes the reflective state of the metal and the

corroded areas are then treated as a dielectric material as

shown in figure 13.

Also, metal that is painted is not treated like a metal but

rather a dielectric as well. The paint acts as a layer on

top of the raw metal. Only the raw metal exposed from

chipped away paint is treated as metal. The same goes

for dirt on the metal or any matter that obscures the raw

metal.

I stated above that I always ask myself if a material is a

metal or not. However, to be more precise, the question

should also inquire the state of the metal such as is it

painted, rusted or covered in dirt/grease. The material

will be treated as dielectric if it is not raw metal and there

could be some blending between metal and non-metal

depending on the weathering.

Refracted light is absorbed, the color tint of metals come from

the reflected light and thus in our maps, we don’t give metals a

diffuse color

Weathering elements can play a

large role in the reflective state of

metal

vol.1 — The theory of PhysicallyBased Rendering and Shading

Non-metals (insulators/dielectrics)

are poor conductors of electricity.

The refracted light is scattered and/

or absorbed (often re-emerging from

the surface) and thus they reflect a

much smaller amount of light than

metals and will have an albedo color.

We stated earlier that the value for

common dielectrics would be around

2-5% based on the F0 as computed

by the index of refraction. These

values are contained within the

linear range of 0.017-0.067 (40-75

sRGB) as shown in figure 14. With

the exception of gemstones, most

dielectrics will not be greater than

4%.

Just as with metals, we need to use real-world measured

values, but it can be difficult to find an IOR for other

materials that are not transparent. However, the value

between most common dielectric materials doesn’t

change drastically, so we can utilize a few guidelines to

follow in terms of reflectance values, which we will cover

in volume two.

The value for common dielectrics is

around 2-5% based on the F0 as

computed by the Index of

Refraction (IOR)

vol. 1 — The theory of PhysicallyBased Rendering and Shading

Linear space rendering can take up an entire article all on its own. So, we won’t go in-depth into the specifics.

However, the important takeaway is that computations are calculated in linear space.

Simply put, linear space rendering provides correct math for lighting calculations. It’s about creating an environment

that allows light to behave as it does in the real world. In linear space, the gamma is 1.0. However, for this to look

correct to our eyes, the linear gamma needs to be shifted. Gamma-encoded space (sRGB) compensates for images

that are displayed on a computer screen. The value of the image is adjusted for display.

When computing color values and performing operations on colors, all computations should be performed in linear

space. A simple way to look at it is that if an image is to be displayed in the render such as base color or diffuse, then

these maps need to be set as sRGB. What happens in Substance is that if the image is tagged as sRGB, it will be

converted to linear for calculations and then set back to sRGB for display. However, when you store mathematical

values that purely denote surface attributes in a texture such as roughness or metallic, then these maps must be set

as linear.

Substance handles the conversion between linear/sRGB space for inputs automatically as well gamma-correction on

the computed result in the rendered viewport. As the artist, you don’t need to worry about the internal working of

linear-space computations and conversions in the Substance pipeline. When using Substance materials via the

Substance Integration plugin, the conversions for linear space are also handled automatically.

However, it’s important to understand the process, as when Substance maps are utilized as exported bitmaps and not

Substance materials, you may need to manually handle the conversions depending on the renderer you are using. You

need to know that base color/diffuse maps are sRGB and the rest are linear.

Now that we have explored the basic theory behind the physics, we can derive some key factors for PBR.

1. Energy Conservation. A reflected ray is never brighter than the value it had when it first hit

the surface. Energy Conservation is handled by the shader.

2. Fresnel. The BRDF is handled by the shader. The F0 reflectance value has minimal change

for most common dielectrics and falls within a range of 2% — 5%. The F0 for metals is a high

value ranging from 70-100%.

3. Specular intensity is controlled through the BRDF, roughness or glossiness map and the F0

reflectance value.

4. Lighting calculations are computed in linear space. All maps that have gamma-encoded

values such as base color or diffuse are usually converted by the shader to linear, but you may

have to make sure that the conversion is properly done by checking the appropriate option

when importing the image in your game engine or renderer. Maps that describe surface

attributes such as roughness, glossiness, metallic and height should be set to be interpreted as

linear.

When using Substance materials via the Substance Integration

plugin, the conversions for linear space are also handled

automatically.

vol.1 — The theory of PhysicallyBased Rendering and Shading

1. Physically-Based Shading at Disney Brent Burley, Walt Disney Animation Studios.

https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf

2. Microfacet Models for Refraction through Rough Surfaces

http://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf

3. Feeding a Physically-Based Shading Model by Sebastien Lagarde

Feeding a physically based shading model

4. An Introduction to BRDF Models by Daniël Jimenez Kwast

http://hmi.ewi.utwente.nl/verslagen/capita-selecta/CS-Jimenez-Kwast-Daniel.pdf

Allegorithmic develops the new generation of 3D texturing software: Substance Painter, Substance

Designer and Bitmap2Material. With most AAA game studios using these tools, Substance has become the

standard for creating next-generation PBR (Physically Based Rendering) assets.

For more information on Substance, please visit our website at

www.allegorithmic.com

Продолжаем серию уроков о том, как стать художником по поверхностям.

Hello there! Моё имя Денис Кузнецов. Я — программист =)

  • Часть 1. Пиксель. Здесь.
  • Часть 2. Маски и текстуры. Здесь.
  • Часть 3. PBR и материалы. Вы ее читаете.
  • Часть 4. Модели, нормали и развертка. Здесь.
  • Часть 5. Система материалов. Здесь.
  • Часть 6. Погружение в систему материалов. Здесь.

Итак, котятки, погнали! =)

PBR

Расшифровывается эта аббревиатура так: Physically Based Rendering. Что в переводе значит «Основанный на физике рендер». Это важно, так как очень многие переводят PBR как «Физически корректный» — но это не так. Очень много физических явлений света не учитывается при обработке текстур в PBR, поэтому это именно «основанный на физике», а не точные расчеты.

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

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

Суть одна — то, как мы видим мир, выстраивается из того, как свет отражается от поверхности объектов. И стандарт PBR описывает то, какие какие физические явления должны учитываться, чтобы свет выглядел максимально кинематографично.

Ниже список статей о том, как работает свет, и как это перенесено в PBR:

  • Статья по основам от создателей Substance Painter / Designer здесь. И ее перевод от 2015 года здесь . Ссылка на вторую часть перевода есть на той же странице.
  • Статья от Google по их разработке PBR (те же яйки, только в профиль с другими формулами) здесь.
  • Статья от MrShoor, который рассмотрел PBR на низкоуровневом программировании шейдеров здесь.

Параметры. Или как настраивается PBR.

Мы рассмотрим PBR с точки зрения общей концепции. Так же рассмотрим детально каждый параметр и то, как формируется PBR.

Из прошлой части статьи мы помним, что PBR на самом деле создается с помощью комбинаций параметров, которые в свою очередь могут состоять из 1-го или нескольких каналов. То есть, PBR состоит из набора параметров:

  • Color (Base Color / Albedo). Использует комбинацию из 3 каналов.
  • Metallic. Использует 1 канал.
  • Specular. Использует 1 канал / 3 канала в зависимости от реализации рендера. об этом будет чуть ниже.
  • Roughness. Использует 1 канал.
  • Glossiness. Использует 1 канал.
  • Ambient Occlusion (далее AO). Использует 1 канал.
  • Height. Использует 1 канал.
  • Normal map. Использует комбинацию из 3 каналов.

Все параметры, кроме Color и Normal map, используют по 1 каналу, а Color и Normal map — по 3 канала каждый:

  • Color использует 3 канала — RGB, чтобы формировать цвет пикселя.
  • Normal map использует 3 канала, чтобы сымитировать наклон поверхности. Каждый канал отвечает за наклон по вертикали, горизонтали и глубину соответственно, а значения в этих каналах определяют силу наклона.

Итого, конечный результат картинки состоит из наложения параметров в одном пикселе:

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

Пиксель и PBR.

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

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

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

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

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

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

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

Что касается Normal Map, то ее техническая реализация (какие каналы за какой наклон отвечают) разнится от настроек рендера. Так, например, в Unreal Engine 4 канал G отвечает за отрицательное значение наклона по вертикали, а в Unity — за положительное.

Более подробную информацию можно прочитать здесь.

Еще есть огромная всеобъемлющая статья о том, как запекать Normal Map и как с ней вообще работать, на сайте render.ru здесь. Крайне рекомендую прочитывать ее раз в неделю, чтобы усвоить весь материал.

Вот еще один замечательный цикл статей о картах нормалей, который подробно расписывает то, зачем они нужны, какие виды их существуют, и как ими пользоваться правильно. Статья разделена на 4 части: 1 часть. 2 часть. 3 часть. 4 часть.

Ее перевод: 1 часть. 2 часть. 3 часть. 4 часть.

Ссылка на форум обсуждения карт нормалей и высот (параметр Height) здесь.

И википедийное описание рельефного текстурирования здесь.

Теперь стоит отметить, что PBR имеет несколько различных реализаций. Все они схожи между собой и пользуются все теми же каналами пикселей для корректировки конечного результата. Разница лишь в формулах и в конечном результате. Обычно разделяют 2 типа реализации:

В первом типе учитываются параметры Color-Metal-Roughness, во втором — Diffuse-Specular-Glossiness. Именно во втором случае параметр Specular имеет 3 канала.

Оба типа реализации используют одинаково 3 параметра — АО, Normal map, Height.

Мы будем использовать первый вариант, так как в дальнейшем перенесем наше обучение на Unreal Engine 4, а этот движок использует первый вариант комбинаций + имеет дополнительно параметр Specular из одного канала.

Хотя при создании текстур в Substance Painter параметр Height и вынесен отдельно, при запекании текстур он вшивается в карту нормали. Но его все еще можно его выделить в отдельный канал.

Давайте рассмотрим теперь то, как это работает в Substance Painter. Для этого мы снова создаем новый проект с обычным плейном и стандартными настройками (о них я рассказывал во второй части статьи). И создадим новый слой заливки:

Теперь рассмотрим стандартную текстуру нормалей из набора Substance Painter «Niche Rectangle Top Wide», которая располагается под тегом Hard Surface:

Далее мы перенесем эту карту нормалей в параметр слоя Base Color (из предыдущего урока мы должны помнить, как это делать). Так выглядит карта нормалей, если воспринимать ее, как изображение (изображение выше). Но теперь удалим ее из параметра BaseColor (мы это сделали для общего ознакомления), нажав на крестик в параметре:

И перенесем ее в параметр Normal:

Ваш конечный результат сразу обновился?

Теперь, если зажать Alt и ЛКМ во viewport’е— можно крутить камерой и смотреть на плейн под разными углами. Свет, отраженный от пикселей, начнет переливаться, создавая иллюзию глубины. Как будто на плейне действительно есть какие-то впадины и выпуклости. Все это заметно под углом от 90 до 140-150 градусов. И чем больше угол наклона, тем больше становится понятно, что это расчет видеокарты, который определяет, как должен отражать свет каждый пиксель, чтобы создавать эту иллюзию. В качестве исходных значений мы передаем в видеокарту 3 параметра в виде каналов пикселя (иначе говоря, текстуру Normal map):

Теперь давайте извращаться. Удалим из параметра Normal эту карту и укажем ее в Metallic.

Но для параметра Metallic используется только один канал, а карта нормалей имеет 3 канала, соответственно, вставляя карту нормалей в этот параметр, Substance Painter обрежет 2 лишних канала (GB — второй и третий по очередности) и оставит только один для расчетов:

И результат:

Как будто какая-то плата или микросхема, правда?

В конечном результате видно теперь, что больше нет никаких выпуклостей и впадин, но сама поверхность стала походить на какую-то металлическую плату. Вы так же можете посмотреть, как будет выглядеть параметр Metallic в градациях серого без остальных параметров (BaseColor и прочих), переключив режим отображения на 1 канал Metallic (если вы ничего не меняли, то во вьюпорте справа сверху есть возможность переключения отображения):

Выбираем металлик и получаем следующий результат:

Как видим, это один канал в градациях серого, который определяет, какие пиксели должны выглядеть как металл, какие — как нечто среднее, а какие — не металл. 0 — не металлический. 1 — металлический.

Аналогично и с параметром Roughness (1 канал) — любая текстура подойдет для работы с ним. В зависит от того, какой конечный результат вам потребуется. Можете попробовать самостоятельно воткнуть в параметр Roughness любую доступную вам текстуру и посмотреть на результат.

Помните, если выставляете текстуру с 2 и более каналами в параметры с одним каналом, то будет использоваться только самый первый канал текстуры.

Так как считается стандартом наименование последовательности каналов RGBA, то первым каналом будет всегда R.

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

Сложные материалы

Под словом «материал», обычно подразумевается коллекция готовых параметров, совокупность которых дает кинематографичный результат — материал (иначе говоря, фактуру, поверхность). Возьмем, к примеру, вот это кожаное кресло:

Визуально, кресло состоит из 3 материалов:

  • Кожа.
  • Металлические клепки.
  • Пластиковые (возможно, деревянные) ножки.

Каждый материал имеет свои параметры:

  • Color. (например, кожа — это близкий к черному цвет с крапинками трещин, а клепки — это золотистый цвет с какими-то пятнами грязи ).
  • Metallic (в коже практически равен 0, а в клепках близок к 1).
  • Roughness (в коже он ближе к 1, а в клепках ближе к 0).
  • Normal Map (В коже карта нормалей отображает трещинки и их глубину, а в клепках — технические углубления/выступления).
  • AO (в коже будет отображать корректность затенения трещин, а в клепках — углублений).

И вот так параметры кожи выглядят визуально:

Подведем промежуточный итог:

Сейчас мы знаем:

  • Принцип работы PBR — все параметры настраиваются через каналы.
  • Каналы — набор параметров пикселей в текстурах.
  • Как работают все параметры PBR, и как мы можем на них влиять через текстуры.
  • Принцип построения сложных материалов.
  • Как смешивать материалы с помощью масок (Маски мы проходили еще во второй части).

Исходя из всего этого, мы можем теперь представить, как можно создать мокрый грязный асфальт со следами шин. Можем ведь? Да, конечно, можем. Иначе мы не котятки =)

Практика

Перед тем, как начать, нам нужно определиться с количеством материалов, которые будут использоваться в нашем практическом туторе:

  • Асфальт.
  • Грязь.
  • Следы шин (проще говоря, резина).

Их нужно где-то найти, а потом добавить в проект Substance Painter =)

Встал вопрос — где брать эти материалы?

Можно немного помучиться и создать коллекцию параметров для каждого материала вручную. Например, найти изображение асфальта. Обрезать его до квадрата и сделать его в качестве BaseColor. Потом, через специальные программы (например, xNormal) по этому изображению создать карту нормали. Через карту нормали отрегулировать Metallic и Roughness (можно и по BaseColor). В итоге, потратить несколько часов на создание идеального материала асфальта, выверяя корректные параметры для металла и шероховатости.

А можно сделать все проще.

Как я уже сказал выше, большинство материалов уже заготовлены давно за вас. Не думаете же вы, что вы первые, кто создает свой материал? =) Ваша задача лишь найти готовые решения, которые отвечают вашим требованиям, скачать их и установить. Если вы пользуетесь Substance Painter, то у компании allegorithmic (теперь уже у Adobe) есть специализированное хранилище готовых материалов, которые можно скачать. Доступ к ним есть как платный, так и бесплатный.

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

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

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

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

А если вы будете играть в игру, не понимая правил — вы так и будете получать штрафные баллы «ни за что», а судья кикнет вас с поля спустя 3 предупреждения. Задумайтесь.

Если вы уже посмотрели файлы, то, наверное, обратили внимание на маску для шин. Она подготовлена отдельно, так как я не смогу ее сгенерировать на ходу в Substance Painter, поэтому я воспользовался рисунком шин, найденным в интернете и подготовил его через Photoshop для работы в Substance Painter:

Машина

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

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

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

В нашем случае очень важна иерархия папок (да и не только в нашем — она всегда важна). Иерархия определяет уровень материала, иначе говоря — что на чем лежит. Асфальт в нашем примере — это дно, самый низкий объект. На нем остаются следы от шин. А вот грязь может быть и на следах шин, и на асфальте. Поэтому грязь будет выше всех.Теперь давайте сразу спрячем все, что должно быть спрятано, и оставим только асфальт. То есть, создадим черные маски на папках Rubber и Dirt:

Теперь создадим в каждой папке по 1-ому слою. А точнее, создадим слои и распределим их в папки. Не забываем о нейминге, чтобы потом не путаться (не смотря на то, что визуально не совсем понятно, что слои находятся в папках — поверьте, они в папках):

Говорю вам, слои в папках

Все новые слои имеют базовые средние параметры. Поэтому Base Color серый, нормаль не отображает выпуклостей (все ее каналы по-умолчанию), а Metallic и Roughness не создают впечатления какого-либо материала.

И сейчас нам нужно это исправить, указав в каждый параметр соответствующую текстуру (на примере асфальта):

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

После того, как вы все это проделаете, назначим маску для резины и создадим эффект следов. Так как у нас уже есть черная маска у папки, то нам нужно просто подключить файл со следами колесиков к этой маске. Для этого кликаем ПКМ по маске и выбираем Add Fill:

И в параметрах GrayScale указываем маску:

В результате на асфальте появятся следы резины, но их будет достаточно сложно разглядеть, так как это все таки PBR и кинематографичность (!!!). Чтобы их увидеть, нужно Plane повернуть под определенным углом:

Сейчас эти два слоя (асфальт и резина) находятся на одном уровне. Но мы-то знаем, что резина находится НА асфальте, а значит, слой с резиной должен быть физически выше. И вот теперь мы воспользуемся тем самым параметром Height.

Найдите его в параметрах слоя Rubber и выкрутите его на максимум, чтобы прочувствовать, как он работает. Покрутите камерой, чтобы увидеть, как свет начал обрабатывать пиксели, которые вы настроили своими руками. Прочувствуйте свою мощь! =)

Ну а теперь выровняйте параметр на 0.1, чтобы это было не так явно и более правдоподобно:

Мы могли бы выкрутить в -0.1, чтобы у нас проявились ямки, как после машин на грязи, но это асфальт, и он не проваливается так легко.

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

Как это работает? Если посмотреть на BaseColor асфальта, то можно обратить внимание, что чем темнее пиксель, тем больше он похож на трещину. То есть, в этом изображении все темное — это трещины, а все светлое — это поверхность. И если мы хотим воспользоваться изображением, как маской, то нам достаточно было бы инвертировать цвета (темное сделать светлым и наоборот) пикселей, и у нас получилась маска для грязи.

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

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

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

Теперь наша задача заставить эту текстуру восприниматься иначе — инвертировать цвета и усилить их, чтобы маска проявила грязь в трещинах. Проще всего это сделать с помощью дополнительного эффекта «Уровни» (Levels). Добавляем к маске дополнительный фильтр «Levels» так же, как мы добавляли Fill (ПКМ — Add Levels). И выкручиваем параметры примерно, как на картинке ниже:

И нажимаем на кнопку ниже «Invert» для инвертирования уровней интенсивности канала:

Теперь грязь располагается именно там, где нам нужно — в трещинах асфальта:

Включаем асфальт и присматриваемся к нашим трудам:

Ты видишь грязь? И я — нет. А она есть.

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

Но это слишком просто. Поэтому, давайте теперь добавим на наш асфальт оранжевую разметку. Для этого нам необходимо будет:

  • Создать новую папку и назвать ее Road_Line.
  • Добавить черную маску папке.
  • Добавить в папку новый слой и назвать его Layer_RoadLine.
  • У слоя в параметрах BaseColor указать оранжевый цвет напрямую:

Вы так же можете отрегулировать параметры Metallic и Roughness на свой вкус, чтобы создать реалистичную краску. Я не стал этого делать, чтобы сократить размеры тутора.

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

Перед тем, как что-то красить и определять иерархию слоев, художники порекомендуют вам подумать над тем, какая была история у объекта. Сначала покрасили асфальт, а потом он стал грязным, и по нему проехала машина, или краску наложили после, просто не мыли асфальт (прям, как в жизни). История объекта всегда определяет его внешний вид.

Настало время ручного рисования. Выделите маску папки RoadLine и начертите на плейне (прям на асфальте) полосу разметки. У меня получился примерно такой результат:

Теперь стоит добавить еще одну маску на сам слой с краской, чтобы создать ощущение отвалившейся краски. Для этого мы не будем создавать папку, а создадим маску прямо на слое и добавим любую стандартную маску Substance Painter. Чтобы сделать это — добавьте маску, а потом добавьте заливку (ПКМ по маске и Add Fill). В заливке укажите Текстуру Dirt 4, которая находится под тегом Procedural:

И смотрим результат:

Не забываем, что у слоя с краской нужно так же указать высоту. Предлагаю указать 0.05 — среднее между резиной и асфальтом.

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

Ну и какой асфальт без воды?

Для этого создайте самостоятельно папку вместе со слоем. Пока НЕ добавляйте никаких масок.

Установите папку в иерархии на самый верх. Ведь вода же сверху, правильно? У слоя выкрутите на максимум Metallic, а Roughness на минимум. Далее укажите высоту воды, равную 0.15.

И теперь отключите канал Color, нажав на кнопку, выделенную синей рамочкой. Ведь у воды нет цвета:

Настройки слоя с водой.

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

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

Теперь домашнее задание:

  • наложите маски так, чтобы асфальт был не полностью мокрым, а с небольшими лужами. Помните, что лужи не имеют неровностей на поверхности — подумайте, как нужно смешать слои так, чтобы лужи были гладкими. И что для этого нужно еще сделать? Я уверен, вы справитесь =)
  • Так же попробуйте найти, где в параметрах слоев указываются правила смешения. Попробуйте их изменить. Поиграйтесь с ними, прочувствуйте то, как они работают. Все это нам пригодится в будущем, когда мы станем Художниками по поверхностям.

Итог

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

В следующих частях мы затронем такие темы, как развертка, плотность текселя (и что такое тексель), и подойдем, наконец, к самому интересному — созданию собственных шейдеров в UE4.

Программы Quixel и Substance Painter

В предыдущей версии статьи я рекомендовал работать новичкам с Quixel Suite. Однако данная программа более не существует, и на ее место встала вторая версия программы текстурирования от Quixel (а теперь и от Epic Games) Mixer 2020. В целом, новое ПО сохранило традицию простоты и работы с готовыми прессетами. Что можно рассудить, как очень быстро осваиваемую программу для создания текстур и материалов.

Что касается Substance Painter, то его сила начинает проявляться, когда в работу подключается третья программа Substance Designer. Designer позволяет создавать свои материалы путем генерации нужных нам поверхностей. Designer крут тем, что вы можете создать «умные материалы», которые будут иметь настройки внутренних масок, которые будут контролировать количество и качество внутренних материалов. То есть, «умные материалы» в данном случае — это контейнер, который содержит в себе несколько материалов и предустановленные маски, которые регулируются формулами и алгоритмами, которые художник прописывает в Designer.

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

Substance Designer так же нужен и важен для работы над созданием сложных бесшовных материалов, которые в дальнейшем можно использовать в качестве текстур для объектов. Пример_1, Пример_2, Пример_3.

Именно это ПО является первым ПО, которое необходимо знать любому художнику по поверхностям. Но, как всегда — об этом позже =)

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

Ссылка на предыдущую часть здесь.

The Comprehensive PBR Guide
by Allegorithmic — vol. 1

vol. 1 — The theory of Physically-Based Page 1 Rendering and Shading
Light and Matter : The theory of Physically-Based Rendering and Shading

Cover by Gaëtan Lassagne, written by Wes McDermott, Technical edit by: Cyrille Damez and Nicolas Wirrmann

Light Rays
Absorption and Scattering (Transparency and Translucency)
Diffuse and Specular Reflection
Microfacet Theory
Color
BRDF
Energy Conservation
Fresnel Effect
F0 (Fresnel Reflectance at 0 Degrees)
Conductors and Insulators (Metals and Non Metal)
Metals
Non-Metals
Linear Space Rendering
The Key Factors

Понравилась статья? Поделить с друзьями:
  • Уролесан капли инструкция по применению взрослым при цистите у мужчин
  • Мазь найз инструкция по применению для чего используют взрослым
  • Каленгам эдас 201 инструкция по применению
  • Фенипрекс с инструкция по применению детям можно ли
  • Фенипрекс с инструкция по применению детям можно ли