# Конверсия текстур в 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`.&#x20;
2. Преобразовать Phong-текстуру `specular` в карту `roughness`.\
   Для этого в большинстве случаев достаточно сделать инверсию изображения specular и подкорректировать его слоем levels.&#x20;
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)


---

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