Документация/Статьи/Обзор компилятора кеша шейдеров

From NeoAxis 3D Engine Wiki

Jump to: navigation, search
Перейти на уровень выше

Contents

Компилятор кеша шейдеров

UtilitiesIcon.jpg Компилятор кеша шейдеров (ShaderCacheCompiler.exe) — инструмент для оптимизации скорости загрузки движка. Инструмент прекомпилирует шейдерные программы видеокарты. Когда время загрузки приложения становится слишком большим, стоит воспользоваться данным инструментом.

Shader Cache Compiler

Современные 3D приложения используют большое количество шейдеров для своей работы. Компиляция большого количества шейдеров, которую при отсутствии кеша приходится делать при загрузке карты, занимает значительное время. Движок позволяет предрасчитать шейдеры заранее, существенно увеличив скорость загрузки приложения.

Каждый материал имеет свои настройки, по которым генерируется шейдеры. Кроме настроек самого материала, код шейдера зависит от глобальных настроек движка. Например, от выбранного вида теней. При генерации материала, движок обращается к кешу и, учитывая параметры материала и глобальные настройки, проверяет наличие нужного шейдера. Если шейдер имеется в кеше, то он используется, иначе шейдер приходится компилировать прямо во время работы приложения.

Чтобы избежать компиляции шейдеров во время работы приложения, создается кеш, в котором генерируются шейдеры для всех возможных комбинаций глобальных настроек движка. Т.к. вариантов настроек очень много, компиляция кеша шейдеров занимает достаточное длительное время (около часа). Не обязательно компилировать шейдеры для всех вариантов настроек, можно выбрать только нужные.

Помимо обычных материалов, существуют материалы, которые генерируются динамически в зависимости от настроек карты. Например, ландшафт создает шейдеры в процессе загрузки карты. Прекомпиляция таких шейдеров тоже поддерживается, и настраивается во вкладке Maps.

Меню

File

ShaderCacheCompiler 03.jpg


Меню File включает в себя кнопки Save и Exit.

Save — сохранение настроек компилятора кеша шейдеров. Данное действие также доступно из панели быстрого доступа.

Exit — выход из компилятора.


Build

ShaderCacheCompiler 04.jpg


Меню Build состоит из одного пункта — Compile. Эта кнопка отвечает за старт компиляции кеша. Данное действие доступно из панели быстрого доступа.

После нажатия на кнопку Compile, появляется окно подтверждения начала операции, сообщающее, что компиляция может занять длительное время. Также данное окно содержит опцию Purge cache, позволяющую предварительно очистить кеш, скомпилированный ранее. Рекомендуется использовать данную опцию при окончательной сборке проекта.

ShaderCacheCompiler 05.jpg

После подтверждения появляется окно Compile и начинается процесс компиляции.

ShaderCacheCompiler 06.jpg

После завершения компиляции, необходимо нажать кнопку Close, чтобы закрыть окно.

Help

ShaderCacheCompiler 07.jpg


Меню Help включает в себя 3 пункта:

  • Overview of Shader Cache Compiler — открывает документацию по компилятору кеша шейдеров, т.е. эта статья.
  • Documentation — открывает документация по движку.
  • About — открывает стандартное окно "О программе".

Вкладка General

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

ShaderCacheCompiler 08.jpg

Render Systems

Название Описание
Direct3D9 Компилировать ли шейдеры для Direct3D9 системы рендеринга.
OpenGL Компилировать ли шейдеры для OpenGL системы рендеринга.

Shadow Optimizations for Direct3D9

Название Описание
General Компилировать ли шейдеры, которые являются общими для всех типов видеокарт.
ATI Hardware Shadows Компилировать ли шейдеры специфичные для ATI карт.
nVidia Hardware Shadows Компилировать ли шейдеры специфичные для NVIDIA карт.

Fog Models

Название Описание
None Компилировать ли шейдеры для отключенного тумана. Опция недоступна для отключения.
Exp Компилировать ли шейдеры для типа тумана Exp (экспоненциальный).
Exp2 Компилировать ли шейдеры для типа тумана Exp2 (экспоненциальный в квадрате).
Linear Компилировать ли шейдеры для типа тумана Linear (линейный).

Shadow Techniques

Название Описание
None Компилировать ли шейдеры для выключенных теней. Опция недоступна для отключения.
Shadowmap Low Компилировать ли шейдеры для обычных теней низкого качества.
Shadowmap Medium Компилировать ли шейдеры для обычных теней среднего качества.
Shadowmap High Компилировать ли шейдеры для обычных теней высокого качества.
Shadowmap Low PSSM Компилировать ли шейдеры для PSSM теней низкого качества.
Shadowmap Medium PSSM Компилировать ли шейдеры для PSSM теней среднего качества.
Shadowmap High PSSM Компилировать ли шейдеры для PSSM теней высокого качества.

Others

Название Описание
Static Lighting Компилировать ли шейдеры для статичного освещения (карты освещения).

Вкладка Maps

Некоторые объекты на карте, такие как ландшафт, создают уникальные шейдеры для каждой карты. Для того чтобы предрасчитать такие шейдеры, нужно загружать карты в процессе компиляции.

В этой вкладке можно включить режим предзагрузки карт в процессе компиляции шейдеров (опция Load maps at compilation time).

Данный режим полезен только для карт, на которых есть ландшафт или динамически создаваемые материалы в процессе работы.

ShaderCacheCompiler 09.jpg

Помимо включения режима предзагрузки карт, необходимо указать список карт в поле в нижней половине вкладки. Можно прописывать как пути к картам, так и маски для поиска. Путь указывается относительно папки Data проекта.

Можно скомпилировать кеш для одной из карт, прописав путь для нее. Например, "Maps\TankDemo\Map.map".

Другой пример. Использование всех карт из определенной директории: "Maps\*.map". Кеш будет создан, извлекая информацию из карт, находящихся в папке Maps.

Наконец, можно выбрать все карты с помощью маски *.map. Данная настройка используется по умолчанию.