> For the complete documentation index, see [llms.txt](https://docs.bestway.com.ua/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bestway.com.ua/gem-rts-v1-ru/tekstury-i-materialy/physically-based-rendering/osnovnye-parametry-v-pbr.md).

# Основные параметры в 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><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><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><ul><li>Задаётся в энвире <code>diffuse*diffuse_intensity</code></li><li>Влияет угол падения света</li></ul></td></tr><tr><td><strong>Прямое отраженное</strong></td><td>Моделирует освещение источником света блестящей поверхности</td><td><ul><li>Задаётся в энвире <code>diffuse*diffuse_intensity</code></li><li>Влияет угол падения света и шершавость поверхности</li></ul></td></tr></tbody></table>

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

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

### **Diffuse**

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

<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**

Текстура **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><ul><li>Белым в текстуре обозначены открытые участки модели</li><li>Черным - полностью самозатененные участки модели, рассеянный свет туда попасть не может</li><li>Темные области задают те участки модели или материала, которые затеняются при освещении снаружи из-за перекрытия другими кусками модели или материала</li></ul></td></tr></tbody></table>

### **Metallic**

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

<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><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**

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

<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**

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

Работает одинаково в обеих моделях освещения 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**

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

<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><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**

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

Эти карты не создают реальных световых эффектов в сцене, таких как освещение или тени от других объектов, но идеально подходят для визуального представления источников света внутри текстурированных объектов. 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><ul><li>Цвет на карте напрямую влияют на цвет излучаемого света.</li><li>Степень яркости свечения задается интенсивностью цвета на карте. Ярче цвета на карте приведут к более интенсивному свечению.</li></ul></td></tr></tbody></table>

### **Reflectance**

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

{% 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><ul><li>Красный (red) - ambient occlusion</li><li>Зеленый (green) - roughness</li><li>Синий (blue) - metallic</li><li>Аlpha</li></ul></td></tr></tbody></table>
