Skip to content

Latest commit

 

History

History
77 lines (57 loc) · 9.75 KB

weapon-materials.ru.md

File metadata and controls

77 lines (57 loc) · 9.75 KB

Формат материалов оружия

Английская версия | Руководство автора | Серверное API

При отрисовке Studio-модели клиент подбирает материал по имени текстуры. Вне сеанса редактирования он сначала проверяет серверную привязку сущности, затем документ .mat модели. Если материал не задан ни в одном из этих источников, клиент использует встроенный материал по флагам текстуры. Активный сеанс редактирования временно заменяет выбранный материал для своей цели. Для материалов требуются r_studio_shader 1 и r_studio_materials 1.

Документ модели

Материалы модели models/v_glock18.mdl задаются в файле models/v_glock18.mat. Раздел materials содержит имена текстур модели и назначенные им материалы. Регистр букв в именах текстур не учитывается. Материал действует на все части модели с этой текстурой; выбранный скин может менять набор используемых текстур.

{
    "version": 1,
    "materials": {
        "glock_slide.bmp": {
            "program": "weapon_finish",
            "params": {
                "uWearMap": { "texture": "materials/masks/wear/blotches.png" },
                "uUnderlay": { "texture": "materials/surfaces/brass.png" },
                "uWear": 0.5
            }
        }
    }
}

Материал содержит обязательное поле program и необязательный объект params. Имена параметров должны точно совпадать с манифестом программы, включая регистр. Число задает скаляр, массив из четырех чисел задает вектор, {"texture": "path"} задает ссылку на изображение. Клиент проверяет типы и диапазоны значений по манифесту. Скаляры и все компоненты векторов должны быть конечными числами в объявленных границах. Пропущенные параметры получают объявленные значения по умолчанию.

Ограничения файлов и изображений

Ресурс Лимит
Версия документа 1
Записи текстур в документе модели 64
Параметры одного материала 64
Различные файлы изображений, указанные в документе 64
Путь изображения в документе модели 128 байт
Путь изображения в серверном пресете 96 байт
Форматы изображений PNG или TGA
Площадь изображения 1 048 576 пикселей

Пути изображений задаются относительно игрового каталога. Используются прямые слэши и расширения .png или .tga. Абсолютные пути, префиксы дисков, обратные слэши, управляющие символы и пустые сегменты, . или .. отклоняются. Площадь вычисляется как width * height. Поставляемые изображения входят в общий лимит файлов. Повторная ссылка на тот же файл учитывается один раз.

Манифест программы

Манифест описывает доступные параметры программы: их имена, типы, значения по умолчанию, допустимые диапазоны и элементы управления в редакторе. Основные поля: version, program и parameters. Параметр типа scalar с instance: true можно менять отдельно для каждой сущности через серверное API. Значение передается как число с плавающей точкой и ограничивается указанным диапазоном. Округление до шага ползунка не выполняется.

Необязательное поле render_contract выбирает поддерживаемый профиль материала. Оно должно содержать непустую строку длиной не более 64 байт и доступно в версии манифеста 1. Без этого поля программа использует универсальные параметры.

Встроенные программы studio и weapon_finish поддерживают профиль материалов studio_effects_v1. Параметры эффектов должны использовать поддерживаемые типы, диапазоны и значения по умолчанию. Видимый результат описан в справочнике эффектов, точные определения параметров находятся в поставляемом манифесте.

Схема допускает 64 параметра, в том числе восемь текстурных. Необязательный массив groups задает разделы редактора. Поле strings указывает файл локализации. Точные значения по умолчанию, границы и группировка элементов редактора приведены в поставляемом манифесте weapon_finish.

Скалярный параметр с widget: "choice" задает массив локализованных подписей choices. Значениями служат целые индексы: min равно 0, а max на единицу меньше числа вариантов. Значение default тоже должно быть целым индексом из этого диапазона. Редактор показывает список без свободного ввода. Дробные индексы отклоняются до ограничения границами; целые индексы за границами ограничиваются диапазоном при записи через API. Например, у uOutlineMode индекс 0 включает обводку только скрытых участков, 1 включает весь силуэт, а 2 только видимые участки.

Параметры weapon_finish

Параметр Назначение
uBaseTint Множитель цвета базовой текстуры.
uPattern, uPatternTint, uPatternTransform Изображение узора, оттенок и размещение по UV. Альфа узора также управляет смешиванием.
uLayerMix Доля узора, 0..1.
uWearMap, uWearMapTransform Пороговая карта и размещение по UV. Темные участки стираются первыми.
uWear Степень износа, 0..1.
uWearSoftness Половина ширины перехода около порога износа.
uUnderlay, uUnderlayTint, uUnderlayTransform Изображение обнажаемой поверхности, оттенок и размещение по UV.
uReflectMask, uReflectMaskTransform Множитель силы отражения и размещение по UV.
uReflectTint Множитель цвета блика от света сцены и отражения из matcap.
uReflectWear Зависимость блеска от износа: от -1 для покрытия до 1 для обнаженных участков; при 0 действует одна маска.
uSphereMap, uReflectivity Изображение освещенной сферы (matcap) и сила отражения.
uSpecular, uGloss Сила и показатель степени блика от света сцены.

UV-преобразование [scale_u, scale_v, offset_u, offset_v] задает масштаб и сдвиг изображения на поверхности. Узор накладывается на базовую текстуру. В местах износа виден нижний слой. Маска отражения управляет блеском, а освещение сцены влияет на блики и отражение из matcap.

Перед передачей документа проверьте его через matgen. Ответственность материалов и рендеринга описана в архитектуре рендерера.

Эффекты материалов