> 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/redaktor-skhem-pbr-i-konversiya-tekstur.md).

# Конверсия текстур в Gem RTS

## Введение

Конверсия текстур необходима для преобразования наборов текстур, созданных для Phong-материалов в компоненты PBR-материалов (PBR - Physically Based Rendering). В движке Gem RTS процесс конверсии может выполняться автоматически с помощью схем материалов, созданных в Редакторе схем.

### Различия между текстурными компонентами для Phong и PBR материалов

#### Компоненты Phong-материала:

* в текстурную карту `diffuse` запекается `lightmap`, которая находится в исходном .tif файле в отдельном верхнем слое и накладывается на карту цвета с помощью параметра наложения multiply;
* для имитации бликов используется текстурная карта `specular`

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcBFa0LtC5Mmy6awAuhiu7VupopmcomfuvK_fGy9BBqecwqU8ikzQF5S8hGlcfUyLe0qNwh_8jTEiXwD91t-KfwhXhs9qmgROweHSjPRgJI56rKRj2dHsq42HS1ORbkBWfU9F-FgGxwU5u_flKL8zT84OnY?key=s-FbAb4gmQu9V3s6ONvqfA" alt="" width="563"><figcaption><p>Текстура diffuse (с запеченной картой lightmap) для Phong-материала</p></figcaption></figure>

#### Компоненты PBR-материала:

* в текстуре `diffuse` остается только цвет материала, а карта `lightmap` переносится в отдельную текстуру `ambient occlusion`.
* для имитации бликов и шероховатостей поверхности используются текстурные карты `metallic` и `roughness`

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd4FBJ2zF01epX7MmVKFJzolGLv0U62fGjURhHFqAYbMzsYl7Uz4NIGr9ncBGW4LxN-sqXdqbalRBjPI4LbyRjmFfk-rdzgN5a96vL9EnRInuIF8Xt6-cGvU6J_uZXaFbrscYwTfyGax5ZULdtUEe3Nbup4?key=s-FbAb4gmQu9V3s6ONvqfA" alt="" width="563"><figcaption><p>Текстура diffuse для PBR материала</p></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcd2QV04EaI4E0IHNB0dyFiwEyTkel0EvVHrlPe1ayGV8fXxuTapRpaG0QArwUq3mWwd0dtN45PVMtt8hJhtVn5kIxk-iQZrAXlGFbeJemILa7dbuED6r0xpC19h6qbgsjgZ9_o4bS4QfqajhEMMfgK1W34?key=s-FbAb4gmQu9V3s6ONvqfA" alt="" width="563"><figcaption><p>Текстура ambient occlusion для PBR материала</p></figcaption></figure>

## Конверсия текстур с помощью Редактора схем

С помощью Блоков конверсии в Редакторе схем можно создавать схемы материалов, которые осуществляют конверсию набора Phong-текстур в PBR-материал автоматически в процессе рендера.

Конверсия работает по принципу преобразования набора Phong-текстур (diffuse и specular) в PBR-компоненты metallic, roughness, ambient occlusion.\
Генерация PBR-материалов из набора Phong-текстур происходит согласно следующим предположениям:

<table><thead><tr><th width="233">Компонент</th><th>Предположение для конверсии</th></tr></thead><tbody><tr><td><code>metallic</code></td><td>Высокое значение параметра <code>specular</code> соответствует физическим свойствам металла.<br>Учитывается нижний порог яркости <code>specular</code>, за которым начинаются металлы.</td></tr><tr><td><code>roughness</code></td><td>Чем выше значение параметра specular, тем более гладкий и отражающий материал.<br>Учитывается минимальное значение яркости <code>specular,</code> чтобы избежать очень гладких поверхностей.<br>Параметр <code>specular_power</code> исходной схемы отвечает за размер пятна блика, что косвенно указывает на степень гладкости поверхности</td></tr><tr><td><code>ambient occlusion</code></td><td><code>Ambient occlusion</code> запечен в <code>diffuse</code> текстуре.<br>Нижние значения яркости диффузной текстуры берутся в качестве признака <code>ambient occlusion</code></td></tr></tbody></table>

### Блоки конверсии

| Название блока конверсии                              | Входной пин                   | Выходные пины                                              |
| ----------------------------------------------------- | ----------------------------- | ---------------------------------------------------------- |
| <p>specular</p><p>to</p><p>metallic and roughness</p> | specular                      | <ul><li>metallic</li><li>roughness</li></ul>               |
| <p>diffuse</p><p>to</p><p>ambient occlusion</p>       | diffuse с запеченной lightmap | <ul><li>чистый diffuse</li><li>ambient occlusion</li></ul> |

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc_irN0HwB59Uof4pX4tIauiiCkkT3InJ8wH-FpohLiJMytBbgOeJwbWYsK6gMbFVFW_XNQdxohzFRH3ioYnvEhsCsRifsQO6WJMPot2MneSoYZiNpb-nUwuk06QQr4xk1PAlUJaJMpjS6yB__RfBgOERr2?key=s-FbAb4gmQu9V3s6ONvqfA" alt="" width="375"><figcaption><p>Внешний вид блока конверсии <code>specular to metallic and roughness</code></p></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXflTp6YAcnMxCtL2hiwWEmDfmyqoLoWSqRFo0wg_qoVRybw9Ob848KxjWzsgbfZQzma6AeBtoKkR2tLNj-PH3_hrtckYqX7Q8VKzWQmv9DrcC3CDSgW1w8dahWwn9xeWNIJ-7aVM5UJVZ2p2LSWG6iCAZUa?key=s-FbAb4gmQu9V3s6ONvqfA" alt="" width="375"><figcaption><p>Внешний вид блока конверсии <code>diffuse to ambient occlusion</code></p></figcaption></figure>

### Создание схемы для автоматической конверсии набора Phong- текстур в PBR-материал

1. Запустить Редактор схем.
2. Открыть схему Phong-материала
3. Добавить в схему блоки конверсии
4. Подключить к входным пинам блоков конверсии Phong-текстуры diffuse и specular.
5. Из выходящих пинов блоков конверсии свести все данные в блок Material с выбранным методом освещения.
6. Сохранить схему в папку /gem2.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcVWgH6sedT_SOFjWuY50MLouOwCyUot93tHDB_rOSBV6vE_kKls1wCer06TBP-xyZ2XGi0TYvwN1apJxr4EawbsBX3Lw1l0bZgQL3edibg4FT9_1Nw6SdHlMXCVpA0v6Al3uR9das6SEhh4dJxe4_-lSfp?key=s-FbAb4gmQu9V3s6ONvqfA" alt="" width="375"><figcaption><p>Пример сведения данных в блок <code>Material: metallic + roughness</code></p></figcaption></figure>

Пример использования блоков конверсии в схеме материала bump из папки gem2/

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfw35W0A92BWcKlHT3UEcVfcdhVZi5ZjZV7rriapxCZXpaQmVdApIz117XVQT5dMKr6T5Dr3hwTUGSUy9CJ0cIPhWJ2memNWX5M9HSrFuTNtldnQGYCQ120I8gUeDjcJd3aJehLHkOmsEW41dNGvHj200Ol?key=s-FbAb4gmQu9V3s6ONvqfA" alt=""><figcaption><p>Cхема материала bump из папки gem2/</p></figcaption></figure>

{% hint style="info" %}
В Редакторе схем можно создавать новые схемы для PBR-материалов
{% endhint %}

## Способы конверсии Phong-текстур в PBR

### Автоматическая конверсия

С помощью блоков конверсии в схеме материала наборы Phong-текстур (`diffuse`, `specular`) преобразовываются в компоненты `diffuse`, `ambient occlusion`, `metallic` и `roughness` для PBR-материала автоматически во время рендера.

### Частично-автоматическая конверсия

Карту `lightmap` вынести из `diffuse` текстуры и сохранить в отдельную текстуру `ambient occlusion` с помощью графического редактора.

Карта `specular` преобразовывается в компоненты `metallic` и `roughness` с помощью блока конверсии в схеме материала.

### Конверсия с помощью графического редактора

Алгоритм действий:

1. Из Phong-текстуры `diffuse` перенести карту `lightmap` в отдельную текстуру `ambient occlusion`.
2. Преобразовать Phong-текстуру `specular` в карту `roughness`.\
   Для этого в большинстве случаев достаточно сделать инверсию изображения specular и подкорректировать его слоем levels.
3. На основе Phong-текстуры `specular` создать карту `metalic`, оставив самые яркие участки белыми (`metallic = 1`).
4. В Редакторе схем собрать схему для PBR-материала, используя текстурные карты для PBR-материала

## Назначение схемы PBR-материала на модель

{% hint style="info" %}
При создании новых моделей рекомендуется назначать на модель материалы из папки `pbr/`
{% endhint %}

{% hint style="info" %}
Схемы материалов из папки `gem2/` поддерживают автоматическую конверсию набора Phong-текстур в PBR-материал во время рендера
{% endhint %}

### Переэкспорт модели

1. В программе 3D Max назначить на модель схему PBR-материала.
2. Экспортировать модель в игру с помощью Плагина для 3d Max.\
   В процессе эскорта в папке с моделью автоматически перезаписывается файл .material, в котором прописаны схема материала и пути к текстурам для компонент PBR-материала.

### Без переэкспорта модели

1. Открыть с помощью текстового редактора файл .material из папки с моделью.
2. Заменить название схемы материала и пути к соответствующим PBR-текстурам (текстуры должны быть в формате .dds)
