X-Ray Universal Compiler: различия между версиями
Новая страница: «__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. | | 1.6b от 16 сентября 2025 года | ||
|- | |- | ||
| '''Тип''' | | '''Тип''' | ||
| Строка 25: | Строка 25: | ||
* [[X-Ray SDK 0.7]] | * [[X-Ray SDK 0.7]] | ||
|- | |- | ||
| colspan=2| [[Версии X-Ray | | colspan=2| [[Версии X-Ray Universal Compiler|История версий]] | ||
|} | |} | ||
| Строка 34: | Строка 34: | ||
|- | |- | ||
| X-Ray Universal Compiler | | X-Ray Universal Compiler | ||
| https://drive.google.com/file/d/ | | https://drive.google.com/file/d/1ZmckMkCK6uyIadZ9Y1Td5e6p3PQ4k1zr/view?usp=sharing<br> | ||
https://disk.yandex.ru/d/ | 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 | ||
* Поддержка основных игр серии | * Поддержка основных игр серии | ||
* Все компиляторы объединены в одно приложение | * Все компиляторы объединены в одно приложение | ||
* | * Часть алгоритмов компиляторов была переписана под многопоточное использование и вычисление на видеокарте с помощью CUDA | ||
* Для ускорения рейтрейсинга подключена библиотека Intel Embree с полноценной поддержкой прозрачных поверхностей и инстансов | |||
* Полностью изменен интерфейс | |||
* Добавлено меню компилятора, в котором можно выбрать проект уровня, выставить определенные настройки и запустить компиляцию | * Добавлено меню компилятора, в котором можно выбрать проект уровня, выставить определенные настройки и запустить компиляцию | ||
* Добавлена система сохранения и загрузки настроек последних проектов | * Добавлена система сохранения и загрузки настроек последних проектов | ||
* Произведен переход на библиотеку DirectXTex на замену устаревшим FreeImage и nvDXT | * Произведен переход на библиотеку DirectXTex на замену устаревшим FreeImage и nvDXT | ||
* | * Отключен просчет RGB и Sun компонентов статического освещения и опционально оставлен только Hemi | ||
* Проведена работа по распоточиванию некоторых фаз компиляции и распоточиванию кода сторонних библиотек | * Проведена работа по распоточиванию некоторых фаз компиляции и распоточиванию кода сторонних библиотек | ||
* Интегрирован Discord Rich Presence для возможности следить за статусом компиляции на удаленном ПК | * Интегрирован Discord Rich Presence для возможности следить за статусом компиляции на удаленном ПК | ||
| Строка 62: | Строка 82: | ||
* Добавлены ключи для ускоренной компиляции уровней в целях тестирования | * Добавлены ключи для ускоренной компиляции уровней в целях тестирования | ||
* Добавлены экспериментальные ключи для отключения некоторых фаз компиляции и установки параметров в обход параметров СДК | * Добавлены экспериментальные ключи для отключения некоторых фаз компиляции и установки параметров в обход параметров СДК | ||
* Расширен вывод информации по некоторым ошибкам | * Расширен вывод информации по некоторым ошибкам | ||
* Исправлены некоторые вылеты оригинальных компиляторов | * Исправлены некоторые вылеты оригинальных компиляторов | ||
{| class="wikitable" | == Минимальные требования == | ||
Для использования 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> | |||
|- | |- | ||
| | | компиляции АИ-сетки || | ||
<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> | |||
|} | |} | ||
{| class="mw-collapsible mw-collapsed wikitable" | {| class="mw-collapsible mw-collapsed wikitable" | ||
!colspan="4" align="center"| | ! colspan="4" align="center"| Ключи для компиляции геометрии | ||
|- | |- | ||
! Ключ !! Описание | |||
|- | |- | ||
|| <code>-static</code> || запекать статическое освещение (не работает с ключом -nohemi) | |||
|- | |- | ||
|| <code>-nohemi</code> || отключить запекание освещения. Значительно ускоряет компиляцию. Предназначен для тестирования геометрии | |||
|- | |- | ||
|| <code>-skipthm</code> || не прерывать компиляцию при отсутствующих текстурах | |||
|- | |- | ||
|| <code>-skipinvalid</code> || не прерывать компиляцию при найденных invalid faces и пропускать их | |||
|- | |- | ||
|| <code>-removeinvalid</code> || не прерывать компиляцию при найденных invalid faces и удалять их | |||
|- | |- | ||
|| <code>-noimpl</code> || пропуск стадии LIGHT: Implicit (запекание освещения для террейна) | |||
|- | |- | ||
|| <code>-nocform</code> || пропуск создания level.cform | |||
|- | |- | ||
|| <code>-noresize</code> || отключить уменьшение размеров загружаемых текстур высокого разрешения | |||
|- | |- | ||
|| <code>-tex_rgba</code> || не использовать сжатие для сохраняемых текстур | |||
|- | |- | ||
|| <code>-tex_bc7</code> || использовать BC7 сжатие для сохраняемых текстур (формат поддерживается только на DX11) | |||
|- | |- | ||
|| <code>-silent</code> || автоматически закрыть приложение после завершения компиляции | |||
|- | |- | ||
|| <code>-sleep</code> || выключить компьютер после завершения компиляции | |||
|- | |- | ||
|| <code>-underground</code> || компилировать уровень как подземный. Ускоряет компиляцию | |||
|- | |- | ||
|| <code>-cform</code> || экспортировать только коллизию уровня | |||
|- | |- | ||
|| <code>-noise</code> || отключить создание Progressive геометрии. Ускоряет компиляцию, но не создает упрощенную геометрию для уровня и Multiple Usage объектов | |||
|- | |- | ||
|| <code>-nosmg</code> || не использовать группы сглаживания. В зависимости от конкретной геометрии помогает избежать ломаных фейсов/теней, или наоборот добавит их | |||
|- | |- | ||
|| <code>-notess</code> || не тесселировать геометрию. В некоторых случаях может повышать fps в зависимости от конкретной локации. Проверять на практике | |||
|- | |- | ||
|| <code>-noweld</code> || отключить сшивание маленьких треугольников. В некоторых случаях помогает избежать глюков на некоторых типах геометрии | |||
|- | |- | ||
|| <code>-nomerge</code> || пропустить стадию Merging geometry | |||
|- | |- | ||
|| <code>-nostrip</code> || отключить оптимизацию и стрипификацию геометрии | |||
|- | |- | ||
|| <code>-dx_opt</code> || включить оптимизацию геометрии средствами D3DX optimizer вместо NvTriStrip | |||
|- | |- | ||
|| <code>-old_bcform</code> || создавать build.cform в старом формате | |||
|- | |- | ||
|| <code>-no_mt_mu</code> || не запускать расчет освещения для Multiple Usage объектов параллельно основной компиляции | |||
|- | |- | ||
|| <code>-high</code> || более высокий приоритет для потоков | |||
|- | |- | ||
|| <code>-saveobj_base</code> || сохранить всю геометрию уровня в модели с расширением .obj (базовая развертка) | |||
|- | |- | ||
|| <code>-saveobj_lmap</code> || сохранить всю геометрию уровня в модели с расширением .obj (лайтмап развертка) | |||
|- | |- | ||
|| <code>-saveobj_cform</code> || сохранить всю коллизию уровня в модель с расширением .obj | |||
|- | |- | ||
|| <code>-qual_draft</code> || установить качество сцены в Draft (не влияет на выставленные шейдеры) | |||
|- | |- | ||
|| <code>-qual_high</code> || установить качество сцены в High (не влияет на выставленные шейдеры) | |||
|- | |- | ||
|| <code>-force_default_shader</code> || принудительно заменять шейдеры материалов с вершинного освещения на лайтмапное (def_vertex->default) | |||
|- | |- | ||
|| <code>-force_vertex_shader</code> || принудительно заменять шейдеры материалов с лайтмапного освещения на вершинное (default->def_vertex) | |||
|- | |- | ||
|| <code>-ppm число</code> || установить качество лайтмапов вместо значения в СДК | |||
|- | |- | ||
|| <code>-weld_dist число</code> || установить Weld distance вместо значения в СДК | |||
|- | |- | ||
|| <code>-hemi_bias число</code> || установить смещение позиции луча при запекании хеми (по умолчанию: 0.1, в оригинале: 0.001) | |||
|} | |||
{| class="mw-collapsible mw-collapsed wikitable" | |||
! colspan="4" align="center"| Ключи для компиляции травы | |||
|- | |- | ||
! Ключ !! Описание | |||
|- | |- | ||
|| <code>-skipthm</code> || не прерывать компиляцию при отсутствующих текстурах и файлах thm | |||
|- | |- | ||
|| <code>-silent</code> || автоматически закрыть приложение после завершения компиляции | |||
|- | |- | ||
|| <code>-sleep</code> || выключить компьютер после завершения компиляции | |||
|- | |- | ||
|| <code>-nohemi</code> || отключить запекание освещения | |||
|- | |- | ||
|| <code>-static</code> || запекать статическое освещение (не работает с ключом -nohemi) | |||
|} | |||
{| class="mw-collapsible mw-collapsed wikitable" | |||
! colspan="4" align="center"| Ключи для компиляции АИ-сетки | |||
|- | |- | ||
! Ключ !! Описание | |||
|- | |- | ||
|| <code>-draft</code> || не просчитывать укрытия для АИ-сетки | |||
|- | |- | ||
|| <code>-verify</code> || проверить АИ-сетку на ошибки | |||
|- | |- | ||
|| <code>-noverbose</code> || не выводить информацию об одиночных нодах (при ключе -verify) | |||
|- | |- | ||
|| <code>-skipthm</code> || не прерывать компиляцию при отсутствующих текстурах и файлах thm | |||
|- | |- | ||
|| <code>-silent</code> || автоматически закрыть приложение после завершения компиляции | |||
|- | |- | ||
|| <code>-sleep</code> || выключить компьютер после завершения компиляции | |||
|} | |||
{| class="mw-collapsible mw-collapsed wikitable" | |||
! colspan="4" align="center"| Ключи для сборки спавна | |||
|- | |- | ||
! Ключ !! Описание | |||
|- | |- | ||
|| <code>-s имя_уровня1,имя_уровня2,имя_уровня3...</code> || собрать спавн из перечисленных уровней (перечисление через запятую без пробела). Например, -s zaton,labx8,jupiter,jupiter_underground,pripyat | |||
|- | |- | ||
|| <code>-out имя</code> || выбрать имя выходного файла спавна. Например, -out all | |||
|- | |- | ||
|| <code>-no_separator_check</code> || отключить конфликты спейс рестрикторов и АИ-сетки, а также другие ошибки | |||
|- | |- | ||
|| <code>-insert_graph</code> || осуществлять сборку спавна со вшитыми в спавн графами для ТЧ спавна | |||
|- | |- | ||
|| <code>-large_aimap</code> || собрать спавн для уровней с расширенной АИ-сеткой. Все уровни должны иметь такой формат сетки | |||
|} | |||
{| class="mw-collapsible mw-collapsed wikitable" | |||
! colspan="4" align="center"| Общие ключи | |||
|- | |- | ||
! Ключ !! Описание | |||
|- | |- | ||
|| <code>-help</code> || вызов справки со списком всех ключей запуска | |||
|- | |- | ||
|| <code>-t число</code> || установить количество потоков для многопоточных операций (не работает с ключом -tbb) | |||
|- | |- | ||
|| <code>-fsltx имя_файла</code> || использовать свой ltx вместо fsgame.ltx. | |||
|- | |- | ||
|| <code>-log_name имя_файла</code> || создать файл лога с данным именем. Полезно для компиляции локаций очередью | |||
|- | |- | ||
|| <code>-log_count число</code> || установить максимальное количество множественных логов. По умолчанию, 30. Работает только через прописывание в .bat файл запуска | |||
|- | |- | ||
|| <code>-discord</code> || включить Discord Rich Presence с выводом имени уровня и статуса компиляции | |||
|- | |- | ||
|| <code>-discord_s</code> || включить Discord Rich Presence с выводом только статуса компиляции | |||
|- | |- | ||
|| <code>-tbb</code> || использовать TBB многопоточность (не рекомендуется) | |||
|- | |- | ||
|| <code>-both_texture_pathes</code> || загрузка текстур и thm файлов по обоим путям ($game_textures$ и $textures$) | |||
|} | |} | ||
{| class="mw-collapsible mw-collapsed wikitable" | {| class="mw-collapsible mw-collapsed wikitable" | ||
| Строка 215: | Строка 269: | ||
|- | |- | ||
| Ускоренная компиляция уровня для тестирования геометрии без запеченного освещения || | | Ускоренная компиляция уровня для тестирования геометрии без запеченного освещения || | ||
< | <syntaxhighlight lang=ini> | ||
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 | |||
</syntaxhighlight> | |||
|- | |- | ||
| Компиляция подземного уровня, полностью закрытого nosun геометрией || | | Компиляция подземного уровня, полностью закрытого nosun геометрией || | ||
< | <syntaxhighlight lang=ini> | ||
start bin\compilers_sky_x64\xrCompiler.exe -geometry -f labx8 -underground | |||
</syntaxhighlight> | |||
|- | |- | ||
| Компиляция только коллизии || | | Компиляция только коллизии || | ||
< | <syntaxhighlight lang=ini> | ||
start bin\compilers_sky_x64\xrCompiler.exe -geometry -f zaton -cform | |||
</syntaxhighlight> | |||
|- | |- | ||
| Компиляция локаций очередью с последующим выключением ПК || | | Компиляция локаций очередью с последующим выключением ПК || | ||
< | <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</ | 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"|Некоторые ньюансы и советы | ||
|- | |- | ||
| | | | ||
Есть возможность выставить настройки по умолчанию для загружаемых уровней. После первого запуска компилятора создаётся файл ''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 | |
| Разработчик | 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 | ||
| Visual C++ 2017 Redistributable | |||
Состав компиляторов
- Компилятор геометрии [ТЧ, ЧН, ЗП]
- Компилятор травы [ТЧ, ЧН, ЗП]
- Компилятор АИ-сетки [ТЧ, ЧН, ЗП]
- Сборщик спавна [ТЧ, ЧН, ЗП]
Особенности
|
| Интерфейс |
Внимание: в данном компиляторе по умолчанию отключено запекание статического света и статических теней солнца.
Для включения запекания этих компонентов необходимо использовать соответствующий ключ, указанный в описании.
Основные изменения
- Поддержка 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 в корневой папке СДК. В секции Для уровней, собранных ТЧ СДК, будет автоматически применяться ТЧ сглаживание, а значит нет необходимости использовать ключ При активном ключе Для частичного исправления часто встречающейся проблемы с появлением черных полигонов было изменено смещение позиции лучей при запекании затенений от хемисферы. В связи с этим, при моделировании геометрии зданий рекомендуется не создавать ту-сайд геометрию для стен (как, например, у кораблей на Затоне), а выдерживать определенную их толщину. Если же требуется оставить геометрию как есть, то можно вернуть смещение луча на оригинальное значение с помощью ключа Увеличение значения В продакшен версии уровня не рекомендуется использовать ключ Не следует выставлять настройку сцены Weld distance в ноль. Иногда это провоцирует создание кривых фейковых теней от некоторой геометрии. Лучше поставить небольшое значение, но больше нуля. В случаях, когда на уровне нужно поправить только коллизию уровня или расставить фейки для актора, можно воспользоваться ключом Для анализа того, как компилятор изменил геометрию уровня под игру, можно воспользоваться ключами |
Установка
Переместите файлы из архива в:
- X-Ray_SDK_SoC\level_editor
- X-Ray_SDK_CS\editors
- X-Ray_SDK_CoP\editors

