forked from Roman-n/HybridXRay
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCompiler_Readme.txt
211 lines (184 loc) · 25.8 KB
/
Compiler_Readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
Универсальные 64-х битные компиляторы уровней
Оригинальные компиляторы разработаны: GSC Game world
Правки компиляторов и сборка: SkyLoader
Благодарности: Abramcumner, K.D.
Состав компиляторов:
* Компилятор геометрии [ТЧ, ЧН, ЗП]
* Компилятор травы [ТЧ, ЧН, ЗП]
* Компилятор АИ-сетки [ТЧ, ЧН, ЗП]
* Сборщик спавна [ТЧ, ЧН, ЗП]
Описание основных изменений:
* Поддержка x64
* Поддержка форматов уровней основных игр серии
* Все компиляторы объединены в одно приложение
* Интерфейс полностью переписан на WinForms
* Добавлено меню компилятора, в котором можно выбрать проект уровня, выставить определенные настройки и запустить компиляцию
* Добавлена система сохранения и загрузки настроек последних проектов
* Создаваемое количество потоков теперь не фиксировано, а зависит от количества ядер процессора
* Произведен переход на библиотеку DirectXTex на замену устаревшим FreeImage и nvDXT
* Убран просчет RGB и Sun компонентов освещения и оставлен только Hemi
* Проведена работа по распоточиванию некоторых фаз компиляции и распоточиванию кода сторонних библиотек
* Интегрирован Discord Rich Presence для возможности следить за статусом компиляции на удаленном ПК
* Добавлена возможность запустить выключение ПК после компиляции
* Реализован прогресс бар на панели задач для отображения состояния текущей фазы компиляции при свернутом приложении
* Добавлены ключи для ускоренной компиляции уровней в целях тестирования
* Добавлены экспериментальные ключи для отключения некоторых фаз компиляции и установки параметров в обход параметров СДК
* Добавлены основные изменения прошлых компиляторов
* Расширен вывод информации по некоторым ошибкам
* Множество различных исправлений и правок
Описание изменений версии 1.5:
* Добавлена возможность форсировать использование групп сглаживания на определенной геометрии даже при наличии ключа -nosmg. Для использования групп сглаживания на модели необходимо назначить на его материалы компил шейдер, имеющий в названии _smg. Например, def_vertex\def_vertex_smg. Сам компил шейдер достаточно склонировать с оригинального и переименовать с этим постфиксом
* Добавлена возможность отключить тесселяцию на определенной геометрии (например, носан коробки). Для этого необходимо назначить на материал компил шейдер, имеющий _no_tess в названии. Однако следует помнить, что отключение тесселяции может порождать потяжки текстур, поскольку не создаются дополнительные вершины, необходимые для оптимизированной развертки
* Добавлена возможность отключить запекание теней от определенных MU моделей. Компил шейдеры MU моделей должны иметь _no_mu_shadow в названии. Отличие данного решения от обычного отключения галки Cast shadow заключается в том, что в данном случае будет применяться самозатенение MU модели, и модель не будет высветлена
* Отключены некоторые фазы компиляции в режиме -nohemi. Также теперь в этом режиме создается только одна пара лайтмап текстур на весь уровень
* При выключенном запекании статического освещения текстура лайтмапы террейна сохраняется с разрешением 32x32
* Исправлен экспорт левел ченджеров в ЧН и ЗП
* Добавлен новый алгоритм выполнения фазы "Merging geometry". Потребляет чуть больше памяти, но выполняется быстрее
* Фаза создания коллизии уровня перемещена перед фазой тесселяции для уменьшения полигонажа
Добавлена опция отображения максимального потребления памяти при компиляции
* Новые ключи для компилятора геометрии:
-no_bcform - пропустить фазы "Building rcast-CFORM model", "Building rcast-CFORM-mu model" и отключить создание файла build.cform, необходимого компиляторам для запекания освещения детейлов и расчета укрытий АИ-сетки. Работает только с ключом -nohemi и предназначен для ускорения компиляции без расчетов освещения
-old_merge - вернуть использование старого алгоритма фазы "Merging geometry"
-lmap_size число - разрешение лайтмап текстур. По умолчанию 1024
-border число - изменить значение переменной BORDER в коде компиляторов. По умолчанию 1
-subdiv_size число - изменить максимальный размер участков (в метрах), на которые разбивается большая геометрия. По умолчанию 32
-bparams_ext - поддержка расширенных настроек уровней, экспортированных SDK от Yara
* Новый ключ для компилятора АИ-сетки:
-force_large_aimap - форсировать открытие АИ-сетки оригинального формата с большим количеством АИ-нод (более 8 млн). Ключ экспериментальный, в данном случае не гарантируется корректность сетки.
* Новые ключи для сборщика спавна:
-actor_level имя_уровня - выбрать уровень для спавна актора. Позволяет избежать рутинного удаления актора вручную с каждого уровня. Будет заспавнен только актор с выбранного уровня, остальные проигнорированы. Если же его нет на уровне, то он автоматически создастся в нулевых координатах
-no_levels_section - игнорировать список уровней из секции [levels]. Позволяет не прописывать каждый уровень в эту секцию. В этом случае общий спавн будет собран из списка уровней, прописанных в батнике
-skip_invalid_class - пропускать вылет "Can't create entity". Все объекты с некорректными и неизвестными классами будут проигнорированы и не попадут в общий спавн
Описание изменений версии 1.4:
* Добавлена поддержка формата расширенной АИ-сетки. Сетка будет автоматически экспортироваться в новый формат при обнаружении нового формата в файле уровня из СДК. Для данного формата также необходим измененный игровой движок и СДК
* Для сборки спавна добавлен ключ -large_aimap, предназначенный для уровней с расширенной АИ-сеткой. Все уровни должны иметь одинаковую версию АИ-сетки
* Оптимизована система трассировки. На оригинальных локациях стадии запекания освещения заняли на ~30% меньше времени. Предположительно, на тяжелых локациях ускорение будет больше
* Распоточена упаковка вершин коллизии. На тяжелых локациях может немного ускорить фазы, связанные с CFORM. Правка экспериментальная, поэтому для отключения добавлен ключ -no_mt_cdb_pack
* Создан новый формат build.cform, поддерживающий более 60 млн вершин и 110 млн треугольников
* Исправлено сохранение больших файлов
* Добавлена поддержка MU объектов, не имеющих ни одного материала с Cast shadow
* Компилятор травы больше не запрашивает и не загружает build.cform и build.lights при ключе -nohemi
* Компилятор АИ-сетки больше не запрашивает и не загружает build.cform при ключе -draft
* Добавлен ключ -force_default_shader для принудительной замены шейдеров материалов с вершинным освещением на лайтмапное (def_vertex -> default)
* Добавлен ключ -force_vertex_shader для принудительной замены шейдеров материалов с лайтмап освещением на вершинное (default -> def_vertex)
* Ключ -t теперь влияет на количество TBB потоков
* Расширена информация по некоторым ошибкам при сборке спавна
* Отключена загрузка текстур и thm файлов по обоим путям ($game_textures$ и $textures$) во избежание путаницы и конфликтов. Теперь для ЧН/ЗП уровней производится загрузка только по $game_textures$, а для ТЧ по $textures$
* Добавлен ключ -both_texture_pathes для возвращения загрузки текстур по обоим путям
Описание изменений версии 1.3:
* Добавлена поддержка сборки ТЧ спавна
* Для ТЧ спавна добавлен ключ -insert_graph, который осуществляет сборку спавна со вшитыми в спавн графами
* Мультивыбор уровней из списка на добавление в спавн
* Добавлена поддержка чтения файлов больше 2 Гб
Описание изменений версии 1.2:
* Добавлена поддержка сборки ЧН спавна
* Добавлена поддержка групп сглаживания для ТЧ локаций
* При ключе -removeinvalid больше не удаляются полигоны с нулевой площадью текстурных координат. Координаты заменяются на константное значение
* Улучшено взаимодействие потоков расчетов лайтмапов и обработки MU моделей между собой
* Добавлен ключ -nocform для пропуска создания level.cform
* В создаваемый компилятором compiler.ini добавлены параметры проектов по умолчанию (секция [compiler_pref]). К примеру, чтобы включить автоматическую установку флага -static для новых проектов, следует выставить параметр gm_static в on
* Добавлено больше информации о фазах сборки спавна
Описание изменений версии 1.1:
* Изменено хранение загружаемых текстур, что уменьшило потребление памяти
* Добавлено автоматическое уменьшение размеров загружаемых текстур высокого разрешения до 1К, что тоже повлияло на уменьшение потребления памяти
* Уменьшен шанс появления черных треугольников при недостаточном значении Pixel per meter
* Добавлен ключ -noimpl для пропуска стадии LIGHT: Implicit
* Добавлен ключ -noresize для отключения уменьшения размеров загружаемых текстур высокого разрешения
* Исправлено возможное подвисание окна приложения
* Исправлено некорректное запекание освещения для некоторых террейнов
* Исправлено отсутствие ключа ЗП формата при старте компиляции из меню
* Исправлена оригинальная ошибка распараллеливания на стадиях запекания освещения
* Исправлен вылет при отсутствии implicit текстур
Установка:
Распаковать архив в папку с СДК.
Для работы требуется установленный Microsoft Visual C++ 2017 Redistributable х64.
Внимание: в данном компиляторе по умолчанию отключено запекание статического света и статических теней солнца. Для включения запекания этих компонентов необходимо использовать соответствующий ключ, указанный в описании.
Основные ключи:
Для компиляции геометрии уровня:
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
Ключи для компиляции геометрии:
-noimpl - пропуск стадии LIGHT: Implicit (запекание освещения для террейна)
-nocform - пропуск создания level.cform
-noresize - отключить уменьшение размеров загружаемых текстур высокого разрешения
-skipthm – не прерывать компиляцию при отсутствующих текстурах и файлах thm
-removeinvalid – не прерывать компиляцию при найденных invalid faces и удалять их
-skipinvalid – не прерывать компиляцию при найденных invalid faces и пропускать их
-tex_rgba – не использовать сжатие для сохраняемых текстур
-tex_bc7 – использовать BC7 сжатие для сохраняемых текстур (формат поддерживается только на DX11)
-silent – автоматически закрыть приложение после завершения компиляции
-sleep – выключить компьютер после завершения компиляции
-nohemi – отключить запекание освещения. Значительно ускоряет компиляцию. Предназначен для тестирования геометрии
-underground – компилировать уровень как подземный. Ускоряет компиляцию
-static – запекать статическое освещение (не работает с ключом -nohemi)
-cform – экспортировать только коллизию уровня
-noise – отключить создание Progressive геометрии. Ускоряет компиляцию, но не создает упрощенную геометрию уровня и Multiple Usage объектов
-nosmg – не использовать группы сглаживания. В зависимости от конкретной геометрии помогает избежать ломаных фейсов/теней, или наоборот добавит их
-notess – не тесселировать геометрию. В некоторых случаях может повышать fps в зависимости от конкретной локации. Проверять на практике
-noweld – отключить сшивание маленьких треугольников. В некоторых случаях помогает избежать глюков на некоторых типах геометрии
-nomerge – отключить стадию Merging geometry
-nostrip – отключить оптимизацию и стрипификацию геометрии
-dx_opt – включить оптимизацию геометрии средствами D3DX optimizer вместо NvTriStrip
-old_bcform - создавать build.cform в старом формате
-gi – включить фазу Radiosity
-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 имя_файла – создать файл лога с данным именем. Полезно для компиляции локаций очередью
-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