Build 1126 (xrLC)

xrLC\_save.exe

Компилятор геометрии, присутствует в полном составе в составе SDK 1097, под именем *xrLC\_Save.exe*.

## Описание

Принцип работы и предназначение данного компилятора, по сравнению с предшествующими версиями не изменилось и в будущем оно также будет сохранять наследственность. Имея больше полугодичный временной промежуток между прошлой известной версией и данной, в составе текущей сборки содержится достаточно большой ряд нововведений и исправлений. Этой версией был скомпилирован уровень Lev5 aztec из сборки 1098, вместе с предварительными версиями.

## История сборки

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

Несмотря на остро стоящие для открытых пространств проблемы, было решено в первую очередь уделить внимание ИИ, тесты которого проводились в сентябре 2001 года. Полномасштабная работа над компилятором началась только в конце 2001 года, когда было начато создание уровня **lev5\_aztec**. Был добавлен *Implicid Lighting*, проецирующий на ландшафт уровня глобальное затенение от хемисферы, который отбросил требование также считать для него лайтмапы в несколько десятков-сотен карт. Глобавльное затенение также оказывало эффект и на всю остальную геометрию, что позволяло создавать полноценный эффект рассеиваемого света в помещениях. Для повышения скорости просчета фаз, связанных с освещением, было сделано разбиение их на несколько потоков (*англ.* Threads), состоящих из шести или восьми штук, которые одновременно занимались выполнением просчетов внутри этих фаз.

Позже компилятор был выложен пользователем Loxotron на *GAMEINATOR forums* в сливе сборок от 9 февраля 2011 года.

## Технические особенности

В отличие от прошлых версий, компилятор ссылается на библиотеки *DXT.dll*, для работы с форматом *.dds* и *xrLC\_Options.dll*, для возможности взаимодействовать с настройками сцены перед компиляцией. Из ранее имевшихся библиотек, используемыми остались *xrDXTC.dll*, по-факту больше неиспользуемая и *xrProgressive.dll*, которая все также отвечает за создание прогрессивной геометрии. Однако, в каталоге SDK, вместе с компиляторами находятся и старые библиотеки, используемые прошлыми версиями компилятора. Среди них находится *xrSpherical.dll*, которая отсутствовала в прошлой известной версии, но была используема компилятором примерно с июля 2001 года до неизвестного срока.

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

* Были добавлены ключи запуска компилятора: *-f*, *-h*/*-?*, *-o*;
* Фазы *Implicit lighting...*, *Raytracing lightmaps...* и *Calculating vertex lighting...* используют многопоточное выполнение своих расчетов;
* Добавлены фазы *Implicit Lighting* и *Soften Lights*, отвечающие за построение и запекание света от хемисферы, который используется для эмуляции рассеянного света;
* При просчете лайтмап стал применяться *Root Mean Square* (RMS), предназначенный для разброса плотности пикселей на дефлекторы;
* При создании текстур-лайтмап, создаются их **\_base** копии, где в альфа-канале хранится развертка дефлекторов без паддинга, для отладки процесса распределения их по холсту. Для запеченного глобального затенения от хемисферы на проекции террейна создается *markup*-копия;
* Дефлекторы больше не разбиваются по градусу угла разреза, а привязаны к параметру, отвечающим за угол автоматического сглаживания нормали моделей в сцене;
* Более продуманная работа распределения геометрии в пространстве, с использованием дополнительных настроек, получаемых от настроек сцены;
* Стрипификация применяется также выборочно, как и создание прогрессивной геометрии;
* Компилятор начал читать *.thm* файлы текстур, которые используются в собранной сцене. Это связано с появлением в редакторе редактора текстур, где настройки той или иной текстуры записывались в её *.thm*;
* Появление параметра **XRCL\_PRODUCTION\_VERSION**, со значение 5. А **XRCL\_CURRENT\_VERSION** в данной версии имеет значение 10;

## Скачивание и запуск

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

```
@%systemroot%\system32\subst.exe x: .

```

Сама компиляция уровня вызывается через bat-файл или командную строку, в которых нужно прописать:

```
x:\xrLC.exe -f %1

```

Где *-f* — ключ, осуществляющий компиляцию, а *%1* — имя собранной в редакторе сцены. Для изменения параметров сцены следует ввести *-o*, после имени сцены.

## Интересные факты

* Первый известный компилятор геометрии, где появились ключи запуска.
* Несмотря на то, что система детальных объектов в редакторе претерпела колоссальные изменения, и алгоритм по её освещению в сцене был перенесен в отдельное приложение, в составе кода все-еще находятся рабочие фазы по обработке Detail Patch, которые все-еще можно расставить в SDK ;
* Единственный известный компилятор геометрии, чья форма окна оформлена в книжной ориентации.

## Галерея

* Процесс запекания глобального затенения от хемисферы на проекцию-текстуру террейна
* Создание прогрессивных мешей и стрипификация исходных мешей
* Чтение компилятором *.thm* файлов
* Процесс просчёта глобального освещения с помощью метода Radiosity

* Скриншоты перекомпилированной локации l1\_escape\_part, с использованием fuzzy light, без изменения параметров и позиций источников света

## Примечания

1. ^ В прошлой известной версии компилятора стабильность работы создания прогрессивов оставляла желать лучшего и могла легко послужить причиной падения программы
2. ^ Запуск компилятора возможен и без неё, она нужна только для визуализации окна изменения настроек компилируемой сцены
3. ^ **-f <ИМЯ>** — главный ключ запуска, отвечающий за компиляцию уровня
**-h** (или **-?**) — ключ для вывода окна о существующих ключах запуска. Если запускать компилятор как обычное приложение, то это окно будет инициализироваться при запуске
**-o** — возможность изменить настройки компилируемого уровня, вызывающий окно настройки сцены редактора, которое содержится в библиотеке *xrLC\_Options.dll*
4. ^ Эффект смягчения и рассеивания источников света, в будущем это станет параметром *fuzzy* у источников статического света в Level Editor
5. ^ Компилятор содержит в себе фазу `Soften lights...`
6. ^ Компилятор содержит в себе фазу `Processing DetailPatches...` и выводимую строку `%d detail patches processed.`

Источник
1. ^ P:\xrLC\xrLC.cpp (файл упоминается в двоичном коде приложения)
2. ^ P:\xrLC\xrThread.cpp (файл упоминается в двоичном коде приложения)
3. ^ P:\xrLC\Build.cpp (файл упоминается в двоичном коде приложения)
4. ^ P:\xrLC\xrLight\_Implicit.cpp (файл упоминается в двоичном коде приложения)