Версии X-Ray Universal Compiler

Материал из MODFAQ.RU — моддинг классического S.T.A.L.K.E.R., TES и Fallout
Перейти к: навигация, поиск
Относится к странице X-Ray Universal Compiler
Крайняя версия 1.6 beta от 20 июля 2024 года
Первая версия 1.0 от 22 февраля 2022 года

1.6 beta от 20 июля 2024 года[1]

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

Геометрия:

  • Часть алгоритмов компиляторов была переписана под многопоточное использование и вычисление на видеокарте
  • Для ускорения рейтрейсинга подключена библиотека Embree с полноценной поддержкой прозрачных поверхностей и инстансов
  • Оптимизированы фазы запекания освещения и расчетов укрытий АИ-сетки
  • Исправлен пересвет хеми у MU объектов в аутдоре. Данная проблема имелась даже на оригинальных локациях, и сейчас все объекты (для исключением объектов в зданиях) более менее выровнены по значению хеми
  • Лайтмап текстуры теперь автоматически расширяются до 4К разрешения. Благодаря этому на этапе сшивания геометрии больше вершин будут объединены за счет схожих текстур. Также данное разрешение было выбрано, так как оно поддерживается более-менее старыми видеокартами
  • Изменена последовательность условий при распределении лайтмапов по холстам
  • Изменено условие тесселяции треугольников. Теперь тесселяция производится только при большой площади текстурных координат у треугольников
  • Добавлена подфаза оптимизации текстурных координат, которая нацелена на исправление потяжек текстур
  • Исправлена проблема потенциальных потяжек текстур на геометрии с наложенными текстурами большого разрешения
  • Убрана фаза Building tangent-basis, теперь действия этой фазы выполняются в процессе Converting to OGFs
  • Экспериментальный отказ от использования THM файлов. Данные файлы используются компилятором для определения наличия прозрачности у текстур, чтобы в дальнейшем использовать текстуры при запекании освещения. Теперь проверка прозрачности происходит через чтение игровых шейдеров (shaders.xr). Производится поиск материалов с шейдером, который поддерживает полупрозрачность, и подгружаются только нужные текстуры. Также в подгружаемых текстурах дополнительно проверяется наличие альфа канала. Если его не обнаруживается, то текстура выгружается, а поверхность становится непрозрачной. Данный переход на использование shaders.xr поможет избавиться от проблемы с обработкой сломанных и некорректно настроенных THM файлов
  • Фаза Radiosity (ключ -gi) автоматически отключается с использованием Embree, поскольку фаза стала deprecated. На первых версиях компилятора она уже работала не так как надо, поэтому в планах совсем её вырезать
  • Уменьшен размер структуры треугольников, что уменьшило потребление памяти
  • Новый формат build.cform, имеющий меньший вес файла

Спавн:

  • Оптимизация в фазе сборки графов
  • В спавн добавлена поддержка классов W_MOUNTD и Z_AMEBA
  • Экспериментальный отказ от необходимости заполнения секции [levels]. Теперь список формируется из добавленных пользователем спавнов, и идентификаторы уровней идут по возрастанию. Для возвращения чтения секции добавлен ключ -use_levels_section
  • Добавлен ключ -spawn_version <значение> для принудительного выставления версии спавна
  • При ошибке "Can't find any graphs! Check log" могут дополнительно выводиться количество уровней без АИ-сетки и количество АИ-сеток с расхождением версий, если таковые имеются

Интерфейс:

  • В меню добавлена опция перезагрузки меню после успешной компиляции
  • В случае успешной компиляции при наличии опции выключения ПК теперь появляется окно с полуминутным таймером и возможностью отменить выключение
  • Сообщения об инвалид фейсах и split faces больше не выводятся в окне, выводится только их количество. В лог всё пишется как раньше
  • Добавлены новые опции ускорения вычислений
  • Исправлено сохранение дополнительных ключей для компилятора АИ-сетки
  • Добавлено поле дополнительных ключей в сборку спавна

1.5 от 29 сентября 2023 года[2]

  • Добавлена возможность форсировать использование групп сглаживания на определенной геометрии даже при наличии ключа -nosmg. Для использования групп сглаживания на модели необходимо назначить на его материалы компил шейдер, имеющий в названии _smg. Например, def_vertex\def_vertex_smg. Сам компил шейдер достаточно склонировать с оригинального и переименовать с этим постфиксом
  • Добавлена возможность отключить тесселяцию на определенной геометрии (например, на носан коробках). Для этого необходимо назначить на материал компил шейдер, имеющий _no_tess в названии. Однако следует помнить, что отключение тесселяции может порождать потяжки текстур, поскольку не создаются дополнительные вершины, необходимые для оптимизированной развертки
  • Добавлена возможность отключить запекание теней от определенных MU моделей. Компил шейдеры MU моделей должны иметь _no_mu_shadow в названии. Отличие данного решения от обычного отключения галки Cast shadow заключается в том, что в данном случае будет применяться самозатенение MU модели, и модель не будет высветлена
  • Отключены некоторые фазы компиляции в режиме -nohemi. Также теперь в этом режиме создается только одна пара лайтмап текстур на весь уровень
  • При выключенном запекании статического освещения текстура лайтмапы террейна сохраняется с разрешением 32x32
  • Исправлен экспорт левел ченджеров в ЧН и ЗП
  • Добавлен новый алгоритм выполнения фазы "Merging geometry". Потребляет чуть больше памяти, но выполняется быстрее
  • Фаза создания коллизии уровня перемещена перед фазой тесселяции для уменьшения полигонажа
  • Добавлена опция отображения максимального потребления памяти при компиляции

maximum-memory-png-79a1fd6fcdae5f40ded00402ab2160bb.png

  • Новые ключи для компилятора геометрии:
    • -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.4b от 3 апреля 2023 года[3]

  • Добавлено игнорирование "levels\" шейдеров при ключах -force_default_shader и -force_vertex_shader
  • Исправлен конфликт одновременного использования ключей -f и -force...
  • Отключен вылет iFloor((source_position.z - header().box().min.z)/header().cell_size() + .5f) при нахождении объекта за пределами АИ-сетки. В лог выводится некорректная позиция и производится попытка сместить позицию на крайнюю аи-ноду
  • Убрано изменение level файла при ключе -cform
  • Добавлено завершение записи level файла перед сообщением об успешной компиляции
  • При ключе -saveobj_cform разделен экспорт геометрии на два файла: raycast геометрию и коллизию
  • Не используемые при запекании выходные текстуры сохраняются с разрешением 32х32
  • Добавлена возможность прописать абсолютный путь к выходному спавну. Такой путь должен быть указан в кавычках и не содержать кириллицы. Например: -out "e:\Games\STALKER - COP\gamedata\spawns\all.spawn" -no_separator_check
  • Добавлен вывод ключей в лог при старте компилятора через батник

1.4a от 22 января 2023 года[4]

  • Хотфикс компиляции АИ-сетки для ТЧ.

1.4 от 13 января 2023 года[5]

  • Добавлена поддержка формата расширенной АИ-сетки. Сетка будет автоматически экспортироваться в новый формат при обнаружении нового формата в файле проекта из СДК. Для данного формата также необходим измененный игровой движок и СДК
  • Для сборки спавна добавлен ключ -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 от 8 сентября 2022 года

Данное обновление направлено на поддержку сборки ТЧ спавна. Теперь для ТЧ спавна достаточно воспользоваться только ключом -s, так как все фазы сборки левел графов, гейм графа и спавна объединены в одну задачу. Также в меню компилятора можно выбрать список уровней, которые будут присоединены к общему спавну.

Второе нововведение для ТЧ спавна, это ключ -insert_graph. Он позволяет вшить все графы уровней в файл спавна, как это реализовано в ЗП. Это облегчит перенос спавна из рабочей директории сдк в директорию игры, поскольку не нужно переносить все файлы графов и таблиц связности АИ-сетки с графами, а лишь перенести один файл спавна. Однако такой формат спавна потребует изменения игрового движка, поэтому ниже приложена ссылка на коммит, который можно адаптировать под свою версию движка.

https://github.com/SkyLoaderr/OGSR-Engine/commit/c756706c6b1fb826bfaf53a83cedea579b38b971

  • Добавлена поддержка сборки ТЧ спавна
  • Для ТЧ спавна добавлен ключ -insert_graph, который осуществляет сборку спавна со вшитыми в спавн графами
  • Мультивыбор уровней в списке на добавление в спавн
  • Добавлена поддержка чтения файлов больше 2 Гб

1.2 от 30 августа 2022 года[6]

  • Добавлена поддержка сборки ЧН спавна
  • Добавлена поддержка групп сглаживания для ТЧ локаций
  • При ключе -removeinvalid больше не удаляются полигоны с нулевой площадью текстурных координат. Координаты заменяются на константное значение
  • Улучшено взаимодействие потоков расчетов лайтмапов и обработки MU моделей между собой
  • Добавлен ключ -nocform для пропуска создания level.cform
  • В создаваемый компилятором compiler.ini добавлены параметры проектов по умолчанию (секция [compiler_pref]). К примеру, чтобы включить автоматическую установку флага -static для новых проектов, следует выставить параметр gm_static в on.
  • Добавлено больше информации о фазах сборки спавна

1.1 от 9 апреля 2022 года[7]

  • Изменено хранение загружаемых текстур, что уменьшило потребление оперативной памяти
  • Добавлено автоматическое уменьшение размеров загружаемых текстур высокого разрешения до 1К, что тоже повлияло на уменьшение потребления памяти
  • Уменьшен шанс появления черных треугольников при недостаточном значении Pixel per meter
  • Добавлено отключение стрипификации и прогрессивов у высоколигональных мешей для пропуска вылетов "iNumVerts < 65535" и "OGF::Stripify"
  • Добавлен ключ -noimpl для пропуска стадии LIGHT: Implicit
  • Добавлен ключ -noresize для отключения уменьшения размеров загружаемых текстур высокого разрешения
  • Исправлено возможное подвисание окна приложения
  • Исправлено некорректное запекание освещения для некоторых террейнов
  • Исправлено не добавление ключа формата при старте компиляции из меню
  • Исправлена оригинальная ошибка распараллеливания на стадиях запекания освещения
  • Исправлен вылет при отсутствии implicit текстур

1.0 от 22 февраля 2022 года[8]

  • первый публичный релиз


За основу взяты компиляторы X-Ray SDK GSC Game world.


Источник