X-Ray Universal Compiler: различия между версиями

Материал из Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout
Перейти к навигации Перейти к поиску
Новая страница: «__NOTOC__ {| class="wikitable" style="float:right; margin-left:0.8em; clear:right; text-align: center; font-size:12px; width: 300px;" |- | colspan=2 style="font-s…»
 
обновил описание
 
(не показаны 2 промежуточные версии этого же участника)
Строка 14: Строка 14:
|-
|-
| '''Версия'''
| '''Версия'''
| 1.6 beta от 20 июля 2024 года
| 1.6b от 16 сентября 2025 года
|-
|-
| '''Тип'''
| '''Тип'''
Строка 25: Строка 25:
* [[X-Ray SDK 0.7]]
* [[X-Ray SDK 0.7]]
|-
|-
| colspan=2| [[Версии X-Ray Compilers by SkyLoader|История версий]]
| colspan=2| [[Версии X-Ray Universal Compiler|История версий]]
|}
|}


Строка 34: Строка 34:
|-
|-
| X-Ray Universal Compiler
| X-Ray Universal Compiler
| https://drive.google.com/file/d/1k3u_8PXyfKmsmF7sJ4mMGjswsRN4d0Rw/view?usp=sharing
| https://drive.google.com/file/d/1ZmckMkCK6uyIadZ9Y1Td5e6p3PQ4k1zr/view?usp=sharing<br>
https://disk.yandex.ru/d/6aLA9HwoIdiXWA
https://disk.yandex.ru/d/oYJFEmHVtW9Zfg
|-
|-
| Visual C++ 2017 Redistributable
| Visual C++ 2017 Redistributable
Строка 45: Строка 45:
https://go.microsoft.com/fwlink/?LinkId=746572
https://go.microsoft.com/fwlink/?LinkId=746572
|}
|}
== Состав компиляторов ==
* Компилятор геометрии [ТЧ, ЧН, ЗП]
* Компилятор травы [ТЧ, ЧН, ЗП]
* Компилятор АИ-сетки [ТЧ, ЧН, ЗП]
* Сборщик спавна [ТЧ, ЧН, ЗП]


== Особенности ==
== Особенности ==
{| class="wikitable" style="float:left; margin-right:0.8em; clear:left; width: 250px;"
|-
| style="text-align:center" | <span class="plainlinks">[https://postimg.cc/HrWnzQv8 https://i.postimg.cc/HrWnzQv8/compiler-process-png-5f97b5ea56d82fddceee4273fd3cac11.png]</span>
|-
| Интерфейс
|}
<br clear="all" />
'''Внимание''':  в данном компиляторе по умолчанию отключено запекание статического света и статических теней солнца.
Для включения запекания этих компонентов необходимо использовать соответствующий ключ, указанный в описании.
=== Основные изменения ===
* Поддержка x64
* Поддержка x64
* Поддержка основных игр серии
* Поддержка основных игр серии
* Все компиляторы объединены в одно приложение
* Все компиляторы объединены в одно приложение
* Интерфейс полностью переписан на WinForms
* Часть алгоритмов компиляторов была переписана под многопоточное использование и вычисление на видеокарте с помощью CUDA
* Для ускорения рейтрейсинга подключена библиотека Intel Embree с полноценной поддержкой прозрачных поверхностей и инстансов
* Полностью изменен интерфейс
* Добавлено меню компилятора, в котором можно выбрать проект уровня, выставить определенные настройки и запустить компиляцию
* Добавлено меню компилятора, в котором можно выбрать проект уровня, выставить определенные настройки и запустить компиляцию
* Добавлена система сохранения и загрузки настроек последних проектов
* Добавлена система сохранения и загрузки настроек последних проектов
* Создаваемое количество потоков теперь не фиксировано, а зависит от количества ядер процессора
* Произведен переход на библиотеку DirectXTex на замену устаревшим FreeImage и nvDXT
* Произведен переход на библиотеку DirectXTex на замену устаревшим FreeImage и nvDXT
* Убран просчет RGB и Sun компонентов освещения и оставлен только Hemi
* Отключен просчет RGB и Sun компонентов статического освещения и опционально оставлен только Hemi
* Проведена работа по распоточиванию некоторых фаз компиляции и распоточиванию кода сторонних библиотек
* Проведена работа по распоточиванию некоторых фаз компиляции и распоточиванию кода сторонних библиотек
* Интегрирован Discord Rich Presence для возможности следить за статусом компиляции на удаленном ПК
* Интегрирован Discord Rich Presence для возможности следить за статусом компиляции на удаленном ПК
Строка 62: Строка 82:
* Добавлены ключи для ускоренной компиляции уровней в целях тестирования
* Добавлены ключи для ускоренной компиляции уровней в целях тестирования
* Добавлены экспериментальные ключи для отключения некоторых фаз компиляции и установки параметров в обход параметров СДК
* Добавлены экспериментальные ключи для отключения некоторых фаз компиляции и установки параметров в обход параметров СДК
* Добавлены основные изменения прошлых компиляторов
* Расширен вывод информации по некоторым ошибкам
* Расширен вывод информации по некоторым ошибкам
* Исправлены некоторые вылеты оригинальных компиляторов
* Исправлены некоторые вылеты оригинальных компиляторов


{| class="wikitable" style="float:left; margin-right:0.8em; clear:left; width: 250px;"
== Минимальные требования ==
Для использования Embree:
* Процессор с поддержкой SSE2 инструкций. Для достижения лучшей производительности рекомендуется процессор Intel с поддержкой AVX, AVX2 и AVX-512 инструкций
 
Для ускорения вычислений на CUDA:
* Операционная система: Windows 10
* Видеокарта Nvidia с поддержкой CUDA
* Видеодрайвер версии 452.39 и старше
 
== Ключи ==
{| class="mw-collapsible mw-collapsed wikitable"
!colspan="4" align="center"|Основные команды
|-
! Описание !! Пример команды
|-
| компиляции геометрии уровня ||
<syntaxhighlight lang=ini>
start bin\compilers_sky_x64\xrCompiler.exe -geometry -f имя_уровня -version название_версии (shoc/cs/cop)
</syntaxhighlight>
|-
| компиляции детейлов (травы) ||
<syntaxhighlight lang=ini>
start bin\compilers_sky_x64\xrCompiler.exe -details -f имя_уровня -version название_версии (shoc/cs/cop)
</syntaxhighlight>
|-
|-
| style="text-align:center" | <span class="plainlinks">[https://postimg.cc/HrWnzQv8 https://i.postimg.cc/HrWnzQv8/compiler-process-png-5f97b5ea56d82fddceee4273fd3cac11.png]</span>
| компиляции АИ-сетки ||
<syntaxhighlight lang=ini>
start bin\compilers_sky_x64\xrCompiler.exe -aispawn -f имя_уровня -version название_версии (shoc/cs/cop)
</syntaxhighlight>
|-
|-
| Интерфейс
| сборки спавна ||
<syntaxhighlight lang=ini>
start bin\compilers_sky_x64\xrCompiler.exe -aispawn -s имя_уровня1,имя_уровня2,имя_уровня3 -out all
</syntaxhighlight>
|}
|}
<br clear="all" />
'''Внимание''': в данном компиляторе по умолчанию отключено запекание статического света и статических теней солнца.
Для включения запекания этих компонентов необходимо использовать соответствующий ключ, указанный в описании.
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
!colspan="4" align="center"|Описание ключей компиляторов
! colspan="4" align="center"| Ключи для компиляции геометрии
|-
|-
! Компилятор!! Ключ!! Описание !! Пример
! Ключ !! Описание
|-
|-
| xrLC || <code>-geometry</code> || Компиляция геометрии уровня || start bin\compilers_sky_x64\xrCompiler.exe -geometry -f имя_уровня -version название_версии (shoc/cs/cop)
|| <code>-static</code> || запекать статическое освещение (не работает с ключом -nohemi)
|-
|-
| xrDO || <code>-details</code> || Компиляция детейлов (травы) || start bin\compilers_sky_x64\xrCompiler.exe -details -f имя_уровня -version название_версии (shoc/cs/cop)
|| <code>-nohemi</code> || отключить запекание освещения. Значительно ускоряет компиляцию. Предназначен для тестирования геометрии
|-
|-
| xrAI || <code>-aispawn</code> || Компиляция АИ-сетки || start bin\compilers_sky_x64\xrCompiler.exe -aispawn -f имя_уровня -version название_версии (shoc/cs/cop)
|| <code>-skipthm</code> || не прерывать компиляцию при отсутствующих текстурах
|-
|-
| xrAI || <code>-aispawn</code> || Сборка спавна || start bin\compilers_sky_x64\xrCompiler.exe -aispawn -s имя_уровня1,имя_уровня2,имя_уровня3 -out all
|| <code>-skipinvalid</code> || не прерывать компиляцию при найденных invalid faces и пропускать их
|-
|-
| xrLC || <code>-noimpl</code> || Пропуск стадии LIGHT: Implicit (запекание освещения для террейна) ||
|| <code>-removeinvalid</code> || не прерывать компиляцию при найденных invalid faces и удалять их
|-
|-
| xrLC || <code>-nocform</code> || Пропуск создания level.cform ||
|| <code>-noimpl</code> || пропуск стадии LIGHT: Implicit (запекание освещения для террейна)
|-
|-
| xrLC || <code>-noresize</code> || Отключить уменьшение размеров загружаемых текстур высокого разрешения ||
|| <code>-nocform</code> || пропуск создания level.cform
|-
|-
| xrLC || <code>-skipthm</code> || Не прерывать компиляцию при отсутствующих текстурах и файлах thm ||
|| <code>-noresize</code> || отключить уменьшение размеров загружаемых текстур высокого разрешения
|-
|-
| xrLC || <code>-removeinvalid</code> || Не прерывать компиляцию при найденных invalid faces и удалять их ||
|| <code>-tex_rgba</code> || не использовать сжатие для сохраняемых текстур
|-
|-
| xrLC || <code>-skipinvalid</code> || Не прерывать компиляцию при найденных invalid faces и пропускать их ||
|| <code>-tex_bc7</code> || использовать BC7 сжатие для сохраняемых текстур (формат поддерживается только на DX11)
|-
|-
| xrLC || <code>-tex_rgba</code> || Не использовать сжатие для сохраняемых текстур ||
|| <code>-silent</code> || автоматически закрыть приложение после завершения компиляции
|-
|-
| xrLC || <code>-tex_bc7</code> || Использовать BC7 сжатие для сохраняемых текстур (формат поддерживается только на DX11) ||
|| <code>-sleep</code> || выключить компьютер после завершения компиляции
|-
|-
| xrLC || <code>-silent</code> || Автоматически закрыть приложение после завершения компиляции ||
|| <code>-underground</code> || компилировать уровень как подземный. Ускоряет компиляцию
|-
|-
| xrLC || <code>-sleep</code> || Выключить компьютер после завершения компиляции ||
|| <code>-cform</code> || экспортировать только коллизию уровня
|-
|-
| xrLC || <code>-nohemi</code> || Отключить запекание освещения. Значительно ускоряет компиляцию. Предназначен для тестирования геометрии ||
|| <code>-noise</code> || отключить создание Progressive геометрии. Ускоряет компиляцию, но не создает упрощенную геометрию для уровня и Multiple Usage объектов
|-
|-
| xrLC || <code>-underground</code> || Компилировать уровень как подземный. Ускоряет компиляцию ||
|| <code>-nosmg</code> || не использовать группы сглаживания. В зависимости от конкретной геометрии помогает избежать ломаных фейсов/теней, или наоборот добавит их
|-
|-
| xrLC || <code>-static</code> || Запекать статическое освещение (не работает с ключом -nohemi) ||
|| <code>-notess</code> || не тесселировать геометрию. В некоторых случаях может повышать fps в зависимости от конкретной локации. Проверять на практике
|-
|-
| xrLC || <code>-cform</code> || Экспортировать только коллизию уровня ||
|| <code>-noweld</code> || отключить сшивание маленьких треугольников. В некоторых случаях помогает избежать глюков на некоторых типах геометрии
|-
|-
| xrLC || <code>-noise</code> || Отключить создание Progressive геометрии. Ускоряет компиляцию, но не создает упрощенную геометрию для уровня и Multiple Usage объектов ||
|| <code>-nomerge</code> || пропустить стадию Merging geometry
|-
|-
| xrLC || <code>-nosmg</code> || Не использовать группы сглаживания. В зависимости от конкретной геометрии помогает избежать ломаных фейсов/теней, или наоборот добавит их ||
|| <code>-nostrip</code> || отключить оптимизацию и стрипификацию геометрии
|-
|-
| xrLC || <code>-notess</code> || Не тесселировать геометрию. В некоторых случаях может повышать fps в зависимости от конкретной локации. Проверять на практике ||
|| <code>-dx_opt</code> || включить оптимизацию геометрии средствами D3DX optimizer вместо NvTriStrip
|-
|-
| xrLC || <code>-noweld</code> || Отключить сшивание маленьких треугольников. В некоторых случаях помогает избежать глюков на некоторых типах геометрии ||
|| <code>-old_bcform</code> || создавать build.cform в старом формате
|-
|-
| xrLC || <code>-nomerge</code> || Пропустить стадию Merging geometry ||
|| <code>-no_mt_mu</code> || не запускать расчет освещения для Multiple Usage объектов параллельно основной компиляции
|-
|-
| xrLC || <code>-nostrip</code> || Отключить оптимизацию и стрипификацию геометрии ||
|| <code>-high</code> || более высокий приоритет для потоков
|-
|-
| xrLC || <code>-dx_opt</code> || Включить оптимизацию геометрии средствами D3DX optimizer вместо NvTriStrip ||
|| <code>-saveobj_base</code> || сохранить всю геометрию уровня в модели с расширением .obj (базовая развертка)
|-
|-
| xrLC || <code>-old_bcform</code> || Создавать build.cform в старом формате ||
|| <code>-saveobj_lmap</code> || сохранить всю геометрию уровня в модели с расширением .obj (лайтмап развертка)
|-
|-
| xrLC || <code>-gi</code> || Включить фазу Radiosity ||
|| <code>-saveobj_cform</code> || сохранить всю коллизию уровня в модель с расширением .obj
|-
|-
| xrLC || <code>-no_mt_mu</code> || Не запускать расчет освещения для Multiple Usage объектов параллельно основной компиляции ||
|| <code>-qual_draft</code> || установить качество сцены в Draft (не влияет на выставленные шейдеры)
|-
|-
| xrLC || <code>-high</code> || Более высокий приоритет для потоков ||
|| <code>-qual_high</code> || установить качество сцены в High (не влияет на выставленные шейдеры)
|-
|-
| xrLC || <code>-saveobj_base</code> || Сохранить всю геометрию уровня в модели с расширением .obj (базовая развертка) ||
|| <code>-force_default_shader</code> || принудительно заменять шейдеры материалов с вершинного освещения на лайтмапное (def_vertex->default)
|-
|-
| xrLC || <code>-saveobj_lmap</code> || Сохранить всю геометрию уровня в модели с расширением .obj (лайтмап развертка) ||
|| <code>-force_vertex_shader</code> || принудительно заменять шейдеры материалов с лайтмапного освещения на вершинное (default->def_vertex)
|-
|-
| xrLC || <code>-saveobj_cform</code> || Сохранить всю коллизию уровня в модель с расширением .obj ||
|| <code>-ppm число</code> || установить качество лайтмапов вместо значения в СДК
|-
|-
| xrLC || <code>-qual_draft</code> || Установить качество сцены в Draft (не влияет на выставленные шейдеры) ||
|| <code>-weld_dist число</code> || установить Weld distance вместо значения в СДК
|-
|-
| xrLC || <code>-qual_high</code> || Установить качество сцены в High (не влияет на выставленные шейдеры) ||  
|| <code>-hemi_bias число</code> || установить смещение позиции луча при запекании хеми (по умолчанию: 0.1, в оригинале: 0.001)
|}
{| class="mw-collapsible mw-collapsed wikitable"
! colspan="4" align="center"| Ключи для компиляции травы
|-
|-
| xrLC || <code>-force_default_shader</code> || Принудительно заменять шейдеры материалов с вершинного освещения на лайтмапное (def_vertex->default) ||
! Ключ !! Описание
|-
|-
| xrLC || <code>-force_vertex_shader</code> || Принудительно заменять шейдеры материалов с лайтмапного освещения на вершинное (default->def_vertex) ||
|| <code>-skipthm</code> || не прерывать компиляцию при отсутствующих текстурах и файлах thm
|-
|-
| xrLC || <code>-ppm число</code> || Установить качество лайтмапов вместо значения в СДК ||
|| <code>-silent</code> || автоматически закрыть приложение после завершения компиляции
|-
|-
| xrLC || <code>-weld_dist число</code> || Установить Weld distance вместо значения в СДК ||
|| <code>-sleep</code> || выключить компьютер после завершения компиляции
|-
|-
| xrLC || <code>-hemi_bias число</code> || Установить смещение позиции луча при запекании хеми (по умолчанию: 0.1, в оригинале: 0.001) ||
|| <code>-nohemi</code> || отключить запекание освещения
|-
|-
| xrDO || <code>-skipthm</code> || Не прерывать компиляцию при отсутствующих текстурах и файлах thm ||  
|| <code>-static</code> || запекать статическое освещение (не работает с ключом -nohemi)
|}
{| class="mw-collapsible mw-collapsed wikitable"
! colspan="4" align="center"| Ключи для компиляции АИ-сетки
|-
|-
| xrDO || <code>-silent</code> || Автоматически закрыть приложение после завершения компиляции ||
! Ключ !! Описание
|-
|-
| xrDO || <code>-sleep</code> || Выключить компьютер после завершения компиляции ||
|| <code>-draft</code> || не просчитывать укрытия для АИ-сетки
|-
|-
| xrDO || <code>-nohemi</code> || Отключить запекание освещения ||
|| <code>-verify</code> || проверить АИ-сетку на ошибки
|-
|-
| xrDO || <code>-static</code> || Запекать статическое освещение (не работает с ключом -nohemi) ||
|| <code>-noverbose</code> || не выводить информацию об одиночных нодах (при ключе -verify)
|-
|-
| xrAI || <code>-draft</code> || Не просчитывать укрытия для АИ-сетки ||
|| <code>-skipthm</code> || не прерывать компиляцию при отсутствующих текстурах и файлах thm
|-
|-
| xrAI || <code>-verify</code> || Проверить АИ-сетку на ошибки ||
|| <code>-silent</code> || автоматически закрыть приложение после завершения компиляции
|-
|-
| xrAI || <code>-noverbose</code> || Не выводить информацию об одиночных нодах (при ключе -verify) ||  
|| <code>-sleep</code> || выключить компьютер после завершения компиляции
|}
{| class="mw-collapsible mw-collapsed wikitable"
! colspan="4" align="center"| Ключи для сборки спавна
|-
|-
| xrAI || <code>-skipthm</code> || Не прерывать компиляцию при отсутствующих текстурах и файлах thm ||
! Ключ !! Описание
|-
|-
| xrAI || <code>-silent</code> || Автоматически закрыть приложение после завершения компиляции ||
|| <code>-s имя_уровня1,имя_уровня2,имя_уровня3...</code> || собрать спавн из перечисленных уровней (перечисление через запятую без пробела). Например, -s zaton,labx8,jupiter,jupiter_underground,pripyat
|-
|-
| xrAI || <code>-sleep</code> || Выключить компьютер после завершения компиляции ||
|| <code>-out имя</code> || выбрать имя выходного файла спавна. Например, -out all
|-
|-
| xrAI || <code>-s имя_уровня1,имя_уровня2,имя_уровня3...</code> || Собрать спавн из перечисленных уровней (перечисление через запятую без пробела) || -s zaton,labx8,jupiter,jupiter_underground,pripyat
|| <code>-no_separator_check</code> || отключить конфликты спейс рестрикторов и АИ-сетки, а также другие ошибки
|-
|-
| xrAI || <code>-out имя</code> || Выбрать имя выходного файла спавна || -out all
|| <code>-insert_graph</code> || осуществлять сборку спавна со вшитыми в спавн графами для ТЧ спавна
|-
|-
| xrAI || <code>-no_separator_check</code> || Отключить конфликты спейс рестрикторов и АИ-сетки, а также другие ошибки ||  
|| <code>-large_aimap</code> || собрать спавн для уровней с расширенной АИ-сеткой. Все уровни должны иметь такой формат сетки
|}
{| class="mw-collapsible mw-collapsed wikitable"
! colspan="4" align="center"| Общие ключи
|-
|-
| xrAI || <code>-insert_graph</code> || Осуществлять сборку спавна со вшитыми в спавн графами для ТЧ спавна ||
! Ключ !! Описание
|-
|-
| xrAI || <code>-large_aimap</code> || Собрать спавн для уровней с расширенной АИ-сеткой. Все уровни должны иметь такой формат сетки ||
|| <code>-help</code> || вызов справки со списком всех ключей запуска
|-
|-
| xrLC, xrDO, xrAI || <code>-help</code> || Вызов справки со списком всех ключей запуска ||
|| <code>-t число</code> || установить количество потоков для многопоточных операций (не работает с ключом -tbb)
|-
|-
| xrLC, xrDO, xrAI || <code>-t число</code> || Установить количество потоков для многопоточных операций (не работает с ключом -tbb) ||
|| <code>-fsltx имя_файла</code> || использовать свой ltx вместо fsgame.ltx.
|-
|-
| xrLC, xrDO, xrAI || <code>-fsltx имя_файла</code> || Использовать свой ltx вместо fsgame.ltx ||
|| <code>-log_name имя_файла</code> || создать файл лога с данным именем. Полезно для компиляции локаций очередью
|-
|-
| xrLC, xrDO, xrAI || <code>-log_name имя_файла</code> || Создать файл лога с данным именем. Полезно для компиляции локаций очередью ||
|| <code>-log_count число</code> || установить максимальное количество множественных логов. По умолчанию, 30. Работает только через прописывание в .bat файл запуска
|-
|-
| xrLC, xrDO, xrAI || <code>-discord</code> || Включить Discord Rich Presence с выводом имени уровня и статуса компиляции ||
|| <code>-discord</code> || включить Discord Rich Presence с выводом имени уровня и статуса компиляции
|-
|-
| xrLC, xrDO, xrAI || <code>-discord_s</code> || Включить Discord Rich Presence с выводом только статуса компиляции ||
|| <code>-discord_s</code> || включить Discord Rich Presence с выводом только статуса компиляции
|-
|-
| xrLC, xrDO, xrAI || <code>-tbb</code> || Использовать TBB многопоточность (не рекомендуется) ||
|| <code>-tbb</code> || использовать TBB многопоточность (не рекомендуется)
|-
|-
| xrLC, xrDO, xrAI || <code>-both_texture_pathes </code> || Загрузка текстур и thm файлов по обоим путям ($game_textures$ и $textures$) ||
|| <code>-both_texture_pathes</code> || загрузка текстур и thm файлов по обоим путям ($game_textures$ и $textures$)
|}
|}
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
Строка 215: Строка 269:
|-
|-
| Ускоренная компиляция уровня для тестирования геометрии без запеченного освещения ||
| Ускоренная компиляция уровня для тестирования геометрии без запеченного освещения ||
<code>start bin\compilers_sky_x64\xrCompiler.exe -geometry -f zaton -nohemi -noise</code><br>
<syntaxhighlight lang=ini>
<code>start bin\compilers_sky_x64\xrCompiler.exe -details -f zaton -nohemi</code><br>
start bin\compilers_sky_x64\xrCompiler.exe -geometry -f zaton -nohemi -noise
<code>start bin\compilers_sky_x64\xrCompiler.exe -aispawn -f zaton -draft</code>
start bin\compilers_sky_x64\xrCompiler.exe -details -f zaton -nohemi
start bin\compilers_sky_x64\xrCompiler.exe -aispawn -f zaton -draft
</syntaxhighlight>
|-
|-
| Компиляция подземного уровня, полностью закрытого nosun геометрией ||
| Компиляция подземного уровня, полностью закрытого nosun геометрией ||
<code>start bin\compilers_sky_x64\xrCompiler.exe -geometry -f labx8 -underground</code>
<syntaxhighlight lang=ini>
start bin\compilers_sky_x64\xrCompiler.exe -geometry -f labx8 -underground
</syntaxhighlight>
|-
|-
| Компиляция только коллизии ||
| Компиляция только коллизии ||
<code>start bin\compilers_sky_x64\xrCompiler.exe -geometry -f zaton -cform</code>
<syntaxhighlight lang=ini>
start bin\compilers_sky_x64\xrCompiler.exe -geometry -f zaton -cform
</syntaxhighlight>
|-
|-
| Компиляция локаций очередью с последующим выключением ПК ||  
| Компиляция локаций очередью с последующим выключением ПК ||
<code>start /wait bin\compilers_sky_x64\xrCompiler.exe -geometry -f zaton -log_name zaton_geometry -silent
<syntaxhighlight lang=ini>
start /wait bin\compilers_sky_x64\xrCompiler.exe -geometry -f zaton -log_name zaton_geometry -silent


start /wait bin\compilers_sky_x64\xrCompiler.exe -details -f zaton -log_name zaton_detail -silent
start /wait bin\compilers_sky_x64\xrCompiler.exe -details -f zaton -log_name zaton_detail -silent
Строка 236: Строка 297:
start /wait bin\compilers_sky_x64\xrCompiler.exe -details -f jupiter -log_name jupiter_detail -silent
start /wait bin\compilers_sky_x64\xrCompiler.exe -details -f jupiter -log_name jupiter_detail -silent


start /wait bin\compilers_sky_x64\xrCompiler.exe -aispawn -f jupiter -log_name jupiter_aimap -silent -sleep</code>
start /wait bin\compilers_sky_x64\xrCompiler.exe -aispawn -f jupiter -log_name jupiter_aimap -silent -sleep
</syntaxhighlight>
|}
|}


{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
!align="center"|Ньюансы и советы
!align="center"|Некоторые ньюансы и советы
|-
|-
|
|
Можно не устанавливать ключ -version. В таком случае выходной формат данных будет следующим: для уровня из ТЧ СДК – ТЧ формат, для уровня ЧН/ЗП СДК – ЗП формат.
Есть возможность выставить настройки по умолчанию для загружаемых уровней. После первого запуска компилятора создаётся файл ''compiler.ini'' в корневой папке СДК. В секции <code>[compiler_default_pref]</code> этого файла можно поменять опции различных ключей, которые присутствуют в меню. Например, если ваш движок требует запекание статического освещения, то в данной секции нужно поменять опции <code>gm_static</code> и <code>dt_static</code> с <code>off</code> на <code>on</code>. После этого для всех новых проектов будет автоматически выставляться галка "Запекать статическое освещение".


Для уровней, собранных ТЧ СДК, будет автоматически применяться ТЧ сглаживание, а значит нет необходимости использовать ключ -nosmg (за исключением модифицированных ТЧ СДК, добавляющих группы сглаживания).
Для уровней, собранных ТЧ СДК, будет автоматически применяться ТЧ сглаживание, а значит нет необходимости использовать ключ <code>-nosmg</code>. Исключение составляют модифицированные ТЧ СДК, добавляющие группы сглаживания (например, SDK от Yara).


При активном ключе -both_texture_pathes на этапе загрузки .thm файлов сначала производится попытка открыть файл по пути $game_textures$ (gamedata\textures), при его отсутствии – по пути $textures$ (rawdata\textures). По умолчанию, для ЧН/ЗП проектов используется только путь $game_textures$, для ТЧ проектов - $textures$.
При активном ключе <code>-both_texture_pathes</code> на этапе загрузки [[*.thm]] файлов сначала производится попытка открыть файл по пути <code>$game_textures$</code> (gamedata\textures), при его отсутствии – по пути <code>$textures$</code> (rawdata\textures). По умолчанию, для ЧН/ЗП проектов используется только путь <code>$game_textures$</code>, для ТЧ проектов - <code>$textures$</code>.


Для частичного исправления часто встречающейся проблемы с появлением черных полигонов было изменено смещение позиции лучей при запекании затенений от хемисферы. В связи с этим, при моделировании геометрии зданий рекомендуется не создавать ту-сайд геометрию для стен (как, например, у кораблей на Затоне), а выдерживать определенную их толщину. Если же требуется оставить геометрию как есть, то можно вернуть смещение луча на оригинальное значение с помощью ключа -hemi_bias 0.001, но тогда количество черных треугольников будет как при использовании старых компиляторов.  
Для частичного исправления часто встречающейся проблемы с появлением черных полигонов было изменено смещение позиции лучей при запекании затенений от хемисферы. В связи с этим, при моделировании геометрии зданий рекомендуется не создавать ту-сайд геометрию для стен (как, например, у кораблей на Затоне), а выдерживать определенную их толщину. Если же требуется оставить геометрию как есть, то можно вернуть смещение луча на оригинальное значение с помощью ключа <code>-hemi_bias 0.001</code>, но тогда количество черных треугольников будет как при использовании старых компиляторов.  


Увеличение значения -hemi_bias (например, на значение от 1.0 до 10.0) в определенных случаях позволяет избавиться от черных треугольников, оставшихся после запекания освещения.
Увеличение значения <code>-hemi_bias</code> (например, на значение от <code>1.0</code> до <code>10.0</code>) в определенных случаях позволяет избавиться от черных треугольников, оставшихся после запекания освещения, однако может увеличить просветы в других местах.


В продакшен версии уровня не рекомендуется использовать ключ -skipthm, поскольку из-за отсутствующих текстур и файлов thm на поверхностях может неправильно запечься свет.
В продакшен версии уровня не рекомендуется использовать ключ <code>-skipthm</code>, поскольку из-за отсутствующих текстур и файлов thm на поверхностях может неправильно запечься свет.


Не следует выставлять Weld distance в ноль. Иногда это провоцирует создание кривых фейковых теней от некоторой геометрии. Лучше поставить небольшое значение, но больше нуля.
Не следует выставлять настройку сцены Weld distance в ноль. Иногда это провоцирует создание кривых фейковых теней от некоторой геометрии. Лучше поставить небольшое значение, но больше нуля.


В случаях, когда на уровне нужно поправить только коллизию уровня или расставить фейки для актора, можно воспользоваться ключом -cform. Будет компилироваться только коллижн-геометрия уровня без запекания освещения, тем самым значительно уменьшится время компиляции.
В случаях, когда на уровне нужно поправить только коллизию уровня или расставить фейки для актора, можно воспользоваться ключом <code>-cform</code>. Будет компилироваться только коллижн-геометрия уровня без запекания освещения, тем самым значительно уменьшится время компиляции.


Для анализа того, как компилятор изменил геометрию уровня под игру, можно воспользоваться ключами -saveobj_base, -saveobj_lmap и -saveobj_cform. Геометрия будет сохранена по пути temp\geom… в файлы с расширением obj для дальнейшего просмотра их в 3д редакторе. Также ключ -saveobj_lmap может помочь в ручном редактировании лайтмап текстур, если на них были обнаружены проблемы.
Для анализа того, как компилятор изменил геометрию уровня под игру, можно воспользоваться ключами <code>-saveobj_base</code>, <code>-saveobj_lmap</code> и <code>-saveobj_cform</code>. Геометрия будет сохранена по пути temp\geom… в файлы с расширением obj для дальнейшего просмотра их в 3д редакторе. Также ключ <code>-saveobj_lmap</code> может помочь в ручном редактировании лайтмап текстур, если на них были обнаружены проблемы.
|}
|}



Текущая версия от 07:44, 25 января 2026

X-Ray Universal Compiler

compiler-menu-png-f317cf39cb1243265d8c81d5fef1e345.png

Разработчик GSC Game World
Модифицировал SkyLoader
Версия 1.6b от 16 сентября 2025 года
Тип компиляторы
Платформа
История версий

X-Ray Universal Compiler[1] — это набор модифицированных (в 64-битные версии) на основе X-Ray SDK 0.4/0.5/0.7 компиляторов xrLC, xrDO и xrAI, использующихся для сборки уровней, травы и освещения детальных объектов одиночной игры и мультиплеера, а также компонентов искусственного интеллекта уровней только одиночной игры.

Ссылки на скачивание
X-Ray Universal Compiler https://drive.google.com/file/d/1ZmckMkCK6uyIadZ9Y1Td5e6p3PQ4k1zr/view?usp=sharing

https://disk.yandex.ru/d/oYJFEmHVtW9Zfg

Visual C++ 2017 Redistributable

x86
https://aka.ms/vs/15/release/VC_redist.x86.exe

x64
https://go.microsoft.com/fwlink/?LinkId=746572

Состав компиляторов

  • Компилятор геометрии [ТЧ, ЧН, ЗП]
  • Компилятор травы [ТЧ, ЧН, ЗП]
  • Компилятор АИ-сетки [ТЧ, ЧН, ЗП]
  • Сборщик спавна [ТЧ, ЧН, ЗП]

Особенности

compiler-process-png-5f97b5ea56d82fddceee4273fd3cac11.png
Интерфейс


Внимание: в данном компиляторе по умолчанию отключено запекание статического света и статических теней солнца.

Для включения запекания этих компонентов необходимо использовать соответствующий ключ, указанный в описании.

Основные изменения

  • Поддержка x64
  • Поддержка основных игр серии
  • Все компиляторы объединены в одно приложение
  • Часть алгоритмов компиляторов была переписана под многопоточное использование и вычисление на видеокарте с помощью CUDA
  • Для ускорения рейтрейсинга подключена библиотека Intel Embree с полноценной поддержкой прозрачных поверхностей и инстансов
  • Полностью изменен интерфейс
  • Добавлено меню компилятора, в котором можно выбрать проект уровня, выставить определенные настройки и запустить компиляцию
  • Добавлена система сохранения и загрузки настроек последних проектов
  • Произведен переход на библиотеку DirectXTex на замену устаревшим FreeImage и nvDXT
  • Отключен просчет RGB и Sun компонентов статического освещения и опционально оставлен только Hemi
  • Проведена работа по распоточиванию некоторых фаз компиляции и распоточиванию кода сторонних библиотек
  • Интегрирован Discord Rich Presence для возможности следить за статусом компиляции на удаленном ПК
  • Добавлена возможность автоматически выключить ПК после компиляции
  • Реализован прогресс бар на панели задач для отображения состояния текущей фазы компиляции при свернутом приложении
  • Добавлены ключи для ускоренной компиляции уровней в целях тестирования
  • Добавлены экспериментальные ключи для отключения некоторых фаз компиляции и установки параметров в обход параметров СДК
  • Расширен вывод информации по некоторым ошибкам
  • Исправлены некоторые вылеты оригинальных компиляторов

Минимальные требования

Для использования Embree:

  • Процессор с поддержкой SSE2 инструкций. Для достижения лучшей производительности рекомендуется процессор Intel с поддержкой AVX, AVX2 и AVX-512 инструкций

Для ускорения вычислений на CUDA:

  • Операционная система: Windows 10
  • Видеокарта Nvidia с поддержкой CUDA
  • Видеодрайвер версии 452.39 и старше

Ключи

Основные команды
Описание Пример команды
компиляции геометрии уровня
start bin\compilers_sky_x64\xrCompiler.exe -geometry -f имя_уровня -version название_версии (shoc/cs/cop)
компиляции детейлов (травы)
start bin\compilers_sky_x64\xrCompiler.exe -details -f имя_уровня -version название_версии (shoc/cs/cop)
компиляции АИ-сетки
start bin\compilers_sky_x64\xrCompiler.exe -aispawn -f имя_уровня -version название_версии (shoc/cs/cop)
сборки спавна
start bin\compilers_sky_x64\xrCompiler.exe -aispawn -s имя_уровня1,имя_уровня2,имя_уровня3 -out all
Ключи для компиляции геометрии
Ключ Описание
-static запекать статическое освещение (не работает с ключом -nohemi)
-nohemi отключить запекание освещения. Значительно ускоряет компиляцию. Предназначен для тестирования геометрии
-skipthm не прерывать компиляцию при отсутствующих текстурах
-skipinvalid не прерывать компиляцию при найденных invalid faces и пропускать их
-removeinvalid не прерывать компиляцию при найденных invalid faces и удалять их
-noimpl пропуск стадии LIGHT: Implicit (запекание освещения для террейна)
-nocform пропуск создания level.cform
-noresize отключить уменьшение размеров загружаемых текстур высокого разрешения
-tex_rgba не использовать сжатие для сохраняемых текстур
-tex_bc7 использовать BC7 сжатие для сохраняемых текстур (формат поддерживается только на DX11)
-silent автоматически закрыть приложение после завершения компиляции
-sleep выключить компьютер после завершения компиляции
-underground компилировать уровень как подземный. Ускоряет компиляцию
-cform экспортировать только коллизию уровня
-noise отключить создание Progressive геометрии. Ускоряет компиляцию, но не создает упрощенную геометрию для уровня и Multiple Usage объектов
-nosmg не использовать группы сглаживания. В зависимости от конкретной геометрии помогает избежать ломаных фейсов/теней, или наоборот добавит их
-notess не тесселировать геометрию. В некоторых случаях может повышать fps в зависимости от конкретной локации. Проверять на практике
-noweld отключить сшивание маленьких треугольников. В некоторых случаях помогает избежать глюков на некоторых типах геометрии
-nomerge пропустить стадию Merging geometry
-nostrip отключить оптимизацию и стрипификацию геометрии
-dx_opt включить оптимизацию геометрии средствами D3DX optimizer вместо NvTriStrip
-old_bcform создавать build.cform в старом формате
-no_mt_mu не запускать расчет освещения для Multiple Usage объектов параллельно основной компиляции
-high более высокий приоритет для потоков
-saveobj_base сохранить всю геометрию уровня в модели с расширением .obj (базовая развертка)
-saveobj_lmap сохранить всю геометрию уровня в модели с расширением .obj (лайтмап развертка)
-saveobj_cform сохранить всю коллизию уровня в модель с расширением .obj
-qual_draft установить качество сцены в Draft (не влияет на выставленные шейдеры)
-qual_high установить качество сцены в High (не влияет на выставленные шейдеры)
-force_default_shader принудительно заменять шейдеры материалов с вершинного освещения на лайтмапное (def_vertex->default)
-force_vertex_shader принудительно заменять шейдеры материалов с лайтмапного освещения на вершинное (default->def_vertex)
-ppm число установить качество лайтмапов вместо значения в СДК
-weld_dist число установить Weld distance вместо значения в СДК
-hemi_bias число установить смещение позиции луча при запекании хеми (по умолчанию: 0.1, в оригинале: 0.001)
Ключи для компиляции травы
Ключ Описание
-skipthm не прерывать компиляцию при отсутствующих текстурах и файлах thm
-silent автоматически закрыть приложение после завершения компиляции
-sleep выключить компьютер после завершения компиляции
-nohemi отключить запекание освещения
-static запекать статическое освещение (не работает с ключом -nohemi)
Ключи для компиляции АИ-сетки
Ключ Описание
-draft не просчитывать укрытия для АИ-сетки
-verify проверить АИ-сетку на ошибки
-noverbose не выводить информацию об одиночных нодах (при ключе -verify)
-skipthm не прерывать компиляцию при отсутствующих текстурах и файлах thm
-silent автоматически закрыть приложение после завершения компиляции
-sleep выключить компьютер после завершения компиляции
Ключи для сборки спавна
Ключ Описание
-s имя_уровня1,имя_уровня2,имя_уровня3... собрать спавн из перечисленных уровней (перечисление через запятую без пробела). Например, -s zaton,labx8,jupiter,jupiter_underground,pripyat
-out имя выбрать имя выходного файла спавна. Например, -out all
-no_separator_check отключить конфликты спейс рестрикторов и АИ-сетки, а также другие ошибки
-insert_graph осуществлять сборку спавна со вшитыми в спавн графами для ТЧ спавна
-large_aimap собрать спавн для уровней с расширенной АИ-сеткой. Все уровни должны иметь такой формат сетки
Общие ключи
Ключ Описание
-help вызов справки со списком всех ключей запуска
-t число установить количество потоков для многопоточных операций (не работает с ключом -tbb)
-fsltx имя_файла использовать свой ltx вместо fsgame.ltx.
-log_name имя_файла создать файл лога с данным именем. Полезно для компиляции локаций очередью
-log_count число установить максимальное количество множественных логов. По умолчанию, 30. Работает только через прописывание в .bat файл запуска
-discord включить Discord Rich Presence с выводом имени уровня и статуса компиляции
-discord_s включить Discord Rich Presence с выводом только статуса компиляции
-tbb использовать TBB многопоточность (не рекомендуется)
-both_texture_pathes загрузка текстур и thm файлов по обоим путям ($game_textures$ и $textures$)
Примеры команд
Описание Пример команды
Ускоренная компиляция уровня для тестирования геометрии без запеченного освещения
start bin\compilers_sky_x64\xrCompiler.exe -geometry -f zaton -nohemi -noise
start bin\compilers_sky_x64\xrCompiler.exe -details -f zaton -nohemi
start bin\compilers_sky_x64\xrCompiler.exe -aispawn -f zaton -draft
Компиляция подземного уровня, полностью закрытого nosun геометрией
start bin\compilers_sky_x64\xrCompiler.exe -geometry -f labx8 -underground
Компиляция только коллизии
start bin\compilers_sky_x64\xrCompiler.exe -geometry -f zaton -cform
Компиляция локаций очередью с последующим выключением ПК
start /wait bin\compilers_sky_x64\xrCompiler.exe -geometry -f zaton -log_name zaton_geometry -silent

start /wait bin\compilers_sky_x64\xrCompiler.exe -details -f zaton -log_name zaton_detail -silent

start /wait bin\compilers_sky_x64\xrCompiler.exe -aispawn -f zaton -log_name zaton_aimap -silent

start /wait bin\compilers_sky_x64\xrCompiler.exe -geometry -f jupiter -log_name jupiter_geometry -silent

start /wait bin\compilers_sky_x64\xrCompiler.exe -details -f jupiter -log_name jupiter_detail -silent

start /wait bin\compilers_sky_x64\xrCompiler.exe -aispawn -f jupiter -log_name jupiter_aimap -silent -sleep
Некоторые ньюансы и советы

Есть возможность выставить настройки по умолчанию для загружаемых уровней. После первого запуска компилятора создаётся файл compiler.ini в корневой папке СДК. В секции [compiler_default_pref] этого файла можно поменять опции различных ключей, которые присутствуют в меню. Например, если ваш движок требует запекание статического освещения, то в данной секции нужно поменять опции gm_static и dt_static с off на on. После этого для всех новых проектов будет автоматически выставляться галка "Запекать статическое освещение".

Для уровней, собранных ТЧ СДК, будет автоматически применяться ТЧ сглаживание, а значит нет необходимости использовать ключ -nosmg. Исключение составляют модифицированные ТЧ СДК, добавляющие группы сглаживания (например, SDK от Yara).

При активном ключе -both_texture_pathes на этапе загрузки *.thm файлов сначала производится попытка открыть файл по пути $game_textures$ (gamedata\textures), при его отсутствии – по пути $textures$ (rawdata\textures). По умолчанию, для ЧН/ЗП проектов используется только путь $game_textures$, для ТЧ проектов - $textures$.

Для частичного исправления часто встречающейся проблемы с появлением черных полигонов было изменено смещение позиции лучей при запекании затенений от хемисферы. В связи с этим, при моделировании геометрии зданий рекомендуется не создавать ту-сайд геометрию для стен (как, например, у кораблей на Затоне), а выдерживать определенную их толщину. Если же требуется оставить геометрию как есть, то можно вернуть смещение луча на оригинальное значение с помощью ключа -hemi_bias 0.001, но тогда количество черных треугольников будет как при использовании старых компиляторов.

Увеличение значения -hemi_bias (например, на значение от 1.0 до 10.0) в определенных случаях позволяет избавиться от черных треугольников, оставшихся после запекания освещения, однако может увеличить просветы в других местах.

В продакшен версии уровня не рекомендуется использовать ключ -skipthm, поскольку из-за отсутствующих текстур и файлов thm на поверхностях может неправильно запечься свет.

Не следует выставлять настройку сцены Weld distance в ноль. Иногда это провоцирует создание кривых фейковых теней от некоторой геометрии. Лучше поставить небольшое значение, но больше нуля.

В случаях, когда на уровне нужно поправить только коллизию уровня или расставить фейки для актора, можно воспользоваться ключом -cform. Будет компилироваться только коллижн-геометрия уровня без запекания освещения, тем самым значительно уменьшится время компиляции.

Для анализа того, как компилятор изменил геометрию уровня под игру, можно воспользоваться ключами -saveobj_base, -saveobj_lmap и -saveobj_cform. Геометрия будет сохранена по пути temp\geom… в файлы с расширением obj для дальнейшего просмотра их в 3д редакторе. Также ключ -saveobj_lmap может помочь в ручном редактировании лайтмап текстур, если на них были обнаружены проблемы.

Установка

Переместите файлы из архива в:

  • X-Ray_SDK_SoC\level_editor
  • X-Ray_SDK_CS\editors
  • X-Ray_SDK_CoP\editors

Источники