# Основные параметры в PBR

## Составляющие модели освещения PBR

<table><thead><tr><th width="178">Название</th><th width="195">Описание</th><th>Компоненты</th></tr></thead><tbody><tr><td><strong>Непрямое рассеянное</strong></td><td>Моделирует рассеянное освещение от окружения</td><td><p></p><ul><li>Задаётся специальной <strong>diffuse</strong> текстурой созданной из текстуры неба</li><li>Регулируется в энвире через <strong>envmap_amount</strong></li><li>Влияет угол падения света</li></ul></td></tr><tr><td><strong>Непрямое отражение</strong></td><td>Моделирует отражение окружения</td><td><p></p><ul><li>Задаётся специальной <strong>specular</strong> текстурой, созданной из текстуры неба</li><li>Регулируется в энвире параметром <strong>envmap_amount</strong></li><li>Влияет угол падения света и шершавость поверхности</li></ul></td></tr><tr><td><strong>Прямое рассеянное</strong></td><td>Моделирует освещение источником света матовой поверхности</td><td><p></p><ul><li>Задаётся в энвире <code>diffuse*diffuse_intensity</code></li><li>Влияет угол падения света</li></ul></td></tr><tr><td><strong>Прямое отраженное</strong></td><td>Моделирует освещение источником света блестящей поверхности</td><td><p></p><ul><li>Задаётся в энвире <code>diffuse*diffuse_intensity</code></li><li>Влияет угол падения света и шершавость поверхности</li></ul></td></tr></tbody></table>

## Основные параметры в PBR

{% hint style="info" %}
В других реализациях есть дополнительные текстуры, но в текущей версии реализации PBR используются только нижеперечисленные.
{% endhint %}

### **Diffuse**&#x20;

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

<table><thead><tr><th width="158">Имя текстуры</th><th width="183">Составляющие</th><th>Расшифровка карты</th></tr></thead><tbody><tr><td>&#x3C;name></td><td>3 канала<br>sRGB gamma space</td><td>Карта содержит информацию о цвете каждого пикселя поверхности, когда на нее падает белый свет</td></tr></tbody></table>

{% hint style="info" %}
Diffuse карты не содержат информацию о блеске или отражательной способности материала; эти аспекты задаются другими текстурными картами.
{% endhint %}

{% hint style="info" %}
Не может быть близко к 0 - такие материалы физически не могут существовать, даже сажа и уголь отражают свет
{% endhint %}

### **Ambient occlusion**&#x20;

Текстура **ambient occlusion** нужна, чтобы непрямое освещение не высвечивало дырки в стволах, темные места между труб и тому подобное

<table><thead><tr><th width="171">Имя текстуры</th><th width="169">Составляющие</th><th>Расшифровка карты</th></tr></thead><tbody><tr><td>&#x3C;name>_ao</td><td><p>1 канал </p><p>[0..1] </p><p>linear space</p></td><td><p></p><ul><li>Белым  в текстуре обозначены открытые участки модели</li><li>Черным - полностью самозатененные участки модели, рассеянный свет туда попасть не может</li><li>Темные области задают те участки модели или материала, которые затеняются при освещении снаружи из-за перекрытия другими кусками модели или материала</li></ul></td></tr></tbody></table>

### **Metallic**&#x20;

Карта необходима для реалистичной имитации металлических материалов в модели, так как металлические детали отражают свет не так, как диэлектрики.

<table><thead><tr><th width="171">Имя текстуры</th><th width="173">Составляющие</th><th>Расшифровка карты</th></tr></thead><tbody><tr><td>&#x3C;name>_mt</td><td><p>1 канал </p><p>[0..1] </p><p>linear space</p></td><td><p></p><ul><li>Черным обозначаются места модели из диэлектрика</li><li>Белым - металл</li><li>Промежуточные значения нужны для мест, где металл частично проступает</li></ul></td></tr></tbody></table>

{% hint style="info" %}
**metallic** должен быть равен 0 для материалов, не содержащих металл: \
земля, вода, камни, кора дерева, листья, дерево, бетон
{% endhint %}

{% hint style="info" %}
Цвет diffuse задаёт собственный цвет металла там, где проставлен **metallic** отличный от нуля
{% endhint %}

### **Roughness**&#x20;

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

<table><thead><tr><th width="171">Имя текстуры</th><th width="172">Составляющие</th><th>Расшифровка карты</th></tr></thead><tbody><tr><td>&#x3C;name>_rg</td><td><p>1 канал </p><p>[0..1] </p><p>linear space</p></td><td><ul><li>Черным обозначаются гладкие поверхности, например, стекло или гладь воды</li><li>Белым шершавые поверхности, например, сухая грязь или пыль.</li><li>Промежуточные значения определеяют степень шершавости</li></ul></td></tr></tbody></table>

{% hint style="info" %}
Следует избегать значений очень близких к 0, так как они будут давать очень небольшой и контрастный блик и, соответсвенно, алиасинг на картинке
{% endhint %}

### **Normal map**

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

Работает одинаково в обеих моделях освещения PBR и Phong.

<table><thead><tr><th width="158">Имя текстуры</th><th width="184">Составляющие</th><th>Расшифровка карты</th></tr></thead><tbody><tr><td>&#x3C;name>_nm</td><td>3 канала<br> sRGB gamma space</td><td>В каждом пикселе содержит координаты нормали, закодированные в RGB каналах в виде координат XYZ</td></tr></tbody></table>

{% hint style="info" %}
Normal Map имеет два формата: OpenGL и DirectX, которые различаются направлением зеленого канала.
{% endhint %}

### **Lightmap**&#x20;

Содержимое текстуры лайтмапы включает в себя информацию о рассеянном свете, которая предварительно рассчитывается и сохраняется для дальнейшего использования в сцене.\
Карта рассеянного освещения нужна в случае, если есть локальный **ambient occlusion** для материала и глобальная карта для всего объекта.&#x20;

Работает одинаково в обеих моделях освещения PBR и Phong.

<table><thead><tr><th width="158">Имя текстуры</th><th width="169">Составляющие</th><th>Расшифровка карты</th></tr></thead><tbody><tr><td>&#x3C;name>_nlm</td><td><p>1 канал </p><p>[0..1] </p><p>linear space</p></td><td><p>Черным обозначаются полностью затененные участки модели </p><p>Белым - освещенные<br>Промежуточные значения обозначают степень освещенности</p></td></tr></tbody></table>

**Примеры использования:**

* Модель забора имеет тайловую текстуру материала с картой **ambient occlusion** и картой lightmap целого забора в сборе
* Модель гусеницы танка имеет текстуру **ambient occlusion** затайленного куска гусеницы самого по себе и карту lightmap, где учитывается и танк и положение катков

### **Translucency**&#x20;

Карта, которая задает просвечиваемость материала и толщину, сколько света проходит через материал.&#x20;

<table><thead><tr><th width="158">Имя текстуры</th><th width="169">Составляющие</th><th>Расшифровка карты</th></tr></thead><tbody><tr><td>&#x3C;name>_tl</td><td><p>1 канал </p><p>[0..1] </p><p>linear space</p></td><td><p></p><ul><li>Черным в текстуре обозначаются непрозрачные участки модели</li><li>Белым - полностью прозрачные</li><li>Промежуточные значения обозначают степень прозрачности</li></ul></td></tr></tbody></table>

{% hint style="info" %}
Канал задаёт только прохождение света, для задания цвета используется diffuse текстура
{% endhint %}

Примеры использования:

В текстурах травы и листьев, чтобы они не были темными с обратной стороны от света

### **Height**

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

Работает одинаково в обеих моделях освещения PBR и Phong.

<table><thead><tr><th width="158">Имя текстуры</th><th width="169">Составляющие</th><th>Расшифровка карты</th></tr></thead><tbody><tr><td>&#x3C;name>_hm</td><td><p>1 канал </p><p>[0..1] </p><p>linear space</p></td><td><ul><li>Белые участки представляют собой "высокие" точки поверхности</li><li>Черные участки — "низкие"</li><li>Шкала серого определяет различные уровни высоты.</li></ul></td></tr></tbody></table>

{% hint style="info" %}
В текущей реализации PBR эта карта не учитывается
{% endhint %}

### **Emissive**&#x20;

Карта позволяют имитировать эффекты свечения и другие источники света, которые должны выглядеть, как самостоятельно излучающие свет.&#x20;

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

<table><thead><tr><th width="158">Имя текстуры</th><th width="169">Составляющие</th><th>Расшифровка карты</th></tr></thead><tbody><tr><td>&#x3C;name>_em</td><td><p>3 канала</p><p>linear space</p></td><td><p></p><ul><li>Цвет  на карте напрямую влияют на цвет излучаемого света.</li><li>Степень яркости свечения задается интенсивностью цвета на карте. Ярче цвета на карте приведут к более интенсивному свечению.</li></ul></td></tr></tbody></table>

### **Reflectance**&#x20;

Карта задает отражающую способность для диэлектриков\
Используется в качестве параметра в схемах материалов

{% hint style="info" %}
Сейчас параметр выставлен жестко в 4% - так как это значение большинства материалов
{% endhint %}

## Имена текстур в ресурсах

**Текстуры из gem2**

| Имя файла     | Соответствие текстурной карте    |
| ------------- | -------------------------------- |
| \<name>       | deffus                           |
| \<name>\_nm   | normal map                       |
| \<name>\_sp   | specular                         |
| \<name>\_lm   | light map                        |
| \<name>\_hm   | height map                       |
| \<name>\_prlx | альтернативная версия height map |

**Добавленные в PBR**

| Имя текстуры | Соответствие текстурной карте |
| ------------ | ----------------------------- |
| \<name>\_ao  | ambient occlusion             |
| \<name>\_mt  | metallic                      |
| \<name>\_rg  | roughness                     |
| \<name>\_tl  | Translucency                  |

## Имена текстур в схемах материалов

{% hint style="info" %}
Если одинаковых по смыслу текстур несколько, то для остальных текстур в конец названия добавляем порядкой номер, начиная с 1
{% endhint %}

<table><thead><tr><th width="195">Название текстуры в схеме</th><th>Соответствующая текстурная карта</th><th>Пояснения</th></tr></thead><tbody><tr><td>diffuse</td><td>diffuse</td><td>основная текстура</td></tr><tr><td>bump</td><td>normal map</td><td></td></tr><tr><td>bumpvolume</td><td></td><td>3д карта для волн</td></tr><tr><td>specular</td><td>specular</td><td></td></tr><tr><td>lightmap</td><td>light map</td><td></td></tr><tr><td>height</td><td>height map</td><td></td></tr><tr><td>mask</td><td>маски</td><td></td></tr><tr><td>metallic</td><td>metallic</td><td></td></tr><tr><td>roughness</td><td>roughness</td><td></td></tr><tr><td>ao</td><td>ambient occlusion</td><td></td></tr><tr><td>translucency</td><td>translucency</td><td>просвечиваемость</td></tr><tr><td>arm</td><td>ambient occlusion + roughness + metallic</td><td>комбинированная текстура</td></tr></tbody></table>

### Комбинированная PBR текстура

В данной версии Gem RTS не используется

4 канала\
Имя текстуры \<name>\_pbr

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

<table><thead><tr><th width="158">Имя текстуры</th><th width="169">Составляющие</th><th>Расшифровка карты</th></tr></thead><tbody><tr><td>&#x3C;name>_pbr</td><td><p>4 канала</p><p>RGB+Аlpha</p></td><td><p></p><ul><li>Красный  (red) - ambient occlusion</li><li>Зеленый (green) - roughness </li><li>Синий (blue) -  metallic</li><li>Аlpha </li></ul></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bestway-1.gitbook.io/documentation/gem-rts-v1-ru/tekstury-i-materialy/physically-based-rendering/osnovnye-parametry-v-pbr.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
