# Уровни детализации для локальных источников света

Система уровней детализации для источников света в Gem RTS позволяет эффективно управлять освещением в сценах, оптимизируя производительность за счет динамического управления затуханием яркости в зависимости от расстояния до камеры.

## **Принцип работы**

Система **LOD** для локальных источников света основана на затухании их яркости вплоть до полного удаления источника света по мере увеличения расстояния до камеры.\
Для каждого источника света определяется его **LOD-класс**, который определяет параметры затухания. По мере увеличения расстояния от камеры до источника света, его яркость плавно уменьшается до полного исчезновения. Такой подход позволяет сократить количество активных источников света в кадре и регулировать радиус их освещения, что снижает нагрузку на рендеринг.

### **Цели системы уровней детализации для источников света**

1. **Оптимизация производительности**
   * **Сокращение радиуса освещения**\
     Снижение яркости источников света уменьшает эффективный радиус освещения, что сокращает количество пикселей, освещаемых источником, и снижает общую нагрузку на систему при расчетах освещения.
   * **Уменьшение количества источников света**\
     Источники света, находящиеся далеко от камеры, удаляются из сцены. Это снижает количество расчетов освещения от локальных источников света, что повышает FPS.
2. **Визуальная реалистичность**
   * **Плавное уменьшение яркости**\
     Затухание яркости источника света с увеличением расстояния соответствует законам физики и делает визуальное восприятие сцены более реалистичным.
   * **Незаметное удаление источников света**\
     Плавное уменьшение яркости делает процесс исчезновения источников света менее заметным для игрока.

## **Классы уровней детализации для локальных источников света**

**LOD-классы** для локальных источников света определяют параметры затухания яркости освещения при их удалении от камеры. \
В **Gem RTS** используются **LOD-классы**, которые описаны в файле `\main\scene\set\lod_light.set`:

* `default`
* `small`
* `medium`
* `big`
* `huge`

Каждому локальному источнику света можно задать **LOD-класс**, согласно его визуальным свойствам. \
Для этого используется **Редактор спецэффектов**. \
В поле `lod` для блока параметров `Light view` необходимо выбрать соответствующий **LOD-класс** из выпадающего списка.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfBy09NNX5jpFi0hAVx2lzuGi7OufatWExpLGcr_QQzLOC2-DeAcHNVGKfMpugGOpOhUPm-F0O7XiM1rSUzjRjqsKb7NBI-OzC-_MqmsrkLL2Zu_4O8NR9ktUlMLuuZnCzG-MyxxNfwxdULE_DxOqWO28mI?key=O2nz-D-1U_djd-57Jgbdfg" alt="" width="563"><figcaption><p>Назначение LOD-класса в Редакторе спецэффектов</p></figcaption></figure>

Если для источника света не задан конкретный **LOD-класс**, будут использованы параметры класса `default`.

### **Конфигурация LOD-классов в редакторе спецэффектов**

Набор имен **LOD-классов**, доступных для выбора в **Редакторе спецэффектов**, прописывается в конфигурационном файле редактора: `resource\interface\editor\efx\view.tpl` в разделе блока `lightview`.

**Пример строк:**

```plaintext
{Block "lod" optional 
  {param "typevalues" blockinfo enum {values "small" "medium" "big" "huge"} {default "medium"}} 
}
```

<figure><img src="/files/mYmpMHP2Bw0dOmTwVcML" alt=""><figcaption><p>Пример настройки Редактора спецэффектов</p></figcaption></figure>

{% hint style="warning" %}
Список имен **LOD-классов** в конфигурационном файле  **Редактора спецэффектов** должен соответствовать списку, указанному в файле `\main\scene\set\lod_light.set`
{% endhint %}

## **Параметры затухания**

Параметры затухания яркости источников света для каждого **LOD-класса** указаны в файле `\main\scene\set\lod_light.set`. \
Для настройки затухания используются следующие параметры:

* `falloff_start` — расстояние (в метрах), с которого начинается уменьшение яркости источника света;
* `falloff_end` — расстояние, на котором яркость света становится равной нулю, и источник удаляется из сцены.

**Пример конфигурации затухания для LOD-классов**

```plaintext
{levelofdetail
  {"default" ; first lod is default
    {falloff_start 80}
    {falloff_end 150}
  }
  {"small"
    {falloff_start 50}
    {falloff_end 100}
  }
  {"medium"
    {falloff_start 80}
    {falloff_end 120}
  }
  {"big"
    {falloff_start 120}
    {falloff_end 200}
  }
  {"huge"
    {falloff_start 240}
    {falloff_end 360}
  }
}
```

{% hint style="warning" %}
Параметр `shadow_off`, который отключает расчет теней для локальных источников света при отдалении камеры, в текущей версии движка не используется, но может быть добавлен в будущем.
{% endhint %}

### **Особенности настройки и оптимизации**

1. **Оптимизация затухания**\
   Подбор значений параметров `falloff_start` и `falloff_end` выполняется с целью минимизации нагрузки на систему рендеринга. Чем меньше значения этих параметров, тем выше производительность сцены, но при этом необходимо учитывать, чтобы исчезновение источников света происходило плавно и незаметно.
2. **Настройка параметров**\
   Для достижения оптимального баланса между производительностью и качеством визуализации рекомендуется экспериментировать с параметрами для различных классов LOD. Минимальные значения параметров следует устанавливать таким образом, чтобы избежать резких переходов яркости при перемещении камеры.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdqivteRAdMINVLxSZPT45ilWGGE2qEX0VchplkjeOsaPyY-XHi9LytdHlHC72OkAH4PZxjM1icXERd_Of7KAhXDOJJ1VprWEOOqTC1OeF3GCwcEb63ksofX0xpQx-bExuKmTKFoGa0fF93SsamYqucdT4?key=O2nz-D-1U_djd-57Jgbdfg" alt="" width="563"><figcaption><p>Демонстрация затухания яркости локальных источников света</p></figcaption></figure>


---

# 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/redaktor/redaktor-fx/nastroika-vfx-na-osnove-istochnika-sveta/urovni-detalizacii-dlya-lokalnykh-istochnikov-sveta.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.
