Эта статья документации для всего, что использует платформу Source. Нажмите для получения дополнительной информации.

VRAD

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)Español (es)Русский (ru)中文 (zh)Translate (Translate)

VBSPVVISVRADBSPZIP

VRAD — это инструмент командной строки(en), он берёт уже готовый BSP и добавляет в него данные об освещении. Статическое и заготовленное освещение функционируют через radiosity алгоритм.

VRAD может:

VRAD является самым медленным из компиляторов. Оптимизация освещения(en) может помочь ускорить процесс, если на карте нет утечек(en).

Tip.pngСовет:Если процесс компиляции словно завис на «8...9...» не переживайте, дело в том, что на каждый новый просчёт карты освещения тратится всё больше времени.
Warning.pngПредупреждение:VRAD сильно нагружает процессор во время компиляции!
Icon-Bug.pngБаг:Если в Half-Life 2: Episode One Half-Life 2: Episode One или Left 4 Dead Left 4 Dead во время компиляции освещения в HDR(en) происходит сбой, прочтите это(en).  [todo tested in?]
Icon-Bug.pngБаг:В серии игр Left 4 Dead Left 4 Dead, «.mdl» модели, которые не имеют «.dx80.vtx» будут проигнорированы компилятором VRAD. Скопируйте «.dx90.vtx» файл и переименуйте его в «.dx80.vtx» чтобы исправить это.  [todo tested in?]
Имеется бат-файл, который будет делать это автоматически: Скачать (разместите файл в папке с моделью и запустите бат-файл.)
Icon-Bug.pngБаг:К тому же, «.mdl» файлы, имеющие заголовок «IDST1» не будут обработаны для VBSP(en), и выдадут сообщение об ошибке, говорящее что модель не удалось загрузить. Это можно исправить, изменив заголовок на «IDST0» в HEX редакторе или перекомпилировав модель не в «Left 4 Dead Left 4 Dead Studiomdl(en)», таком как Source 2013 Source 2013. Можно так же использовать программу Crowbar(en).  [todo tested in?]
Icon-Bug.pngБаг:Уже как минимум 5–10 лет по состоянию на октябрь 2017 года, все известные вариации VRAD компилятора имеют проблему с многоядерными процессорами, вследствие чего нагрузка на процессоре может достигать до 100%, а по факту будет нагружено не более нескольких ядер. Это ощутимо заметно в режиме компиляции «-final» (несмотря на то, что показано 100% использование процессора). Исправление этого бага для Source 2013 Source 2013 доступно здесь, а отредактированные DLL библиотеки доступны здесь. Valve также выпустила патч для VRAD Counter-Strike: Global Offensive Counter-Strike: Global Offensive, который исправляет эту проблему.  [todo tested in?]
Icon-Bug.pngБаг:Иногда на картах освещения могут быть слишком чёрные тени и грубые переходы от света к темноте.  [todo tested in?]
Tip.pngСовет:С помощью Source Engine BSP Lightmap Editor можно вручную редактировать уже запечённую карту освещения у готового «.bsp» файла.

Синтаксис

vrad [options...] <bsp file>

Пример:

"Half-Life 2\bin\vrad.exe" -both -StaticPropLighting sdk_trainstation_01

Это сгенерирует, а так же встроит и стандартные, и High Dynamic Range(en) данные освещения с детализацией по каждой вершине для prop_static(en).

Опции

Используйте эти комбинации в режиме эксперта(en) или в bat-файле.

Эффекты

-ldr
Компилировать освещение в Низком Динамическим Диапазоне.
Warning.pngПредупреждение:Insurgency и Counter-Strike: Global Offensive не поддерживают LDR. Для правильного освещения используйте -both или -hdr
-hdr
Компилировать освещение в Высоком Динамическим Диапазоне(en).
-both
Компилировать освещение как в LDR, так и в HDR.
-fast
Компиляция освещения низкого качества. Используются для быстрого предпросмотра карты.
Note.pngПримечание:-fast приведёт к появлению случайных неправильно окрашенных пятен в тёмных областях карты.
Не используйте эту опцию для исправления проблем с освещением.
-final
Улучшает качество light_environment и непрямого света, затрачивая больше времени на лучи.
-extrasky <integer(en)>
Прослеживает в N раз больше лучшей для непрямого освещения и неба.
(-final то же самое, что и -extrasky 16; normal соответствует -extrasky 1)
-lights <filename>.rad
Загружает пользовательский файл освещения в дополнение к lights.rad и файлу освещения непосредственно для этой карты. В этом параметре необходимо указывать расширение файла.
-bounce <integer(en)>
Устанавливает максимальное число лучей света. (по умолчанию: 100).
-smooth <integer(en)>
Устанавливает порог для групп сглаживания(en), в градусах (по умолчанию: 45).
-luxeldensity <normal(en)>
Уменьшает масштаб всех люкселей(en). По умолчанию (максимальное значение) 1.
-softsun <float(en)>
Рассматривает солнце как источник освещения в этой степени. Создаёт мягкие тени. Рекомендуемые значения 0–5, по умолчанию 0. Идентично параметру SunSpreadAngle для light_environment, Используйте его вместо этого.
-StaticPropLighting  (Во всех играх начиная с Half-Life 2: Episode Two)
генерирует освещение по вершинам prop_static; всегда включено для энтити light_spot. Отключает энтити info_lighting на пропах без карт рельефа на текстуре(en). Не работает на пропах с картами рельефа на текстуре во всех играх, кроме Counter-Strike: Global Offensive.
Warning.pngПредупреждение:Это может существенно увеличить размер файла вашей карты. Отключите освещение по вершинам для пропов, которым это не требуется, чтобы сохранить размер файла небольшим.
Note.pngПримечание:Чтобы в Counter-Strike: Global Offensive получить правильное освещение на ваших статических пропах, вам нужно будет запустить VRAD с этим параметром.
-StaticPropPolys  (Во всех играх начиная с Half-Life 2: Episode Two)
Использовать актуальные меши ваших статичных пропов вместо их мешей столкновения(en) для генерации теней. Это ведёт к более точному созданию теней.
-TextureShadows  (Во всех играх начиная с Half-Life 2: Episode Two)
Генерировать тени карты освещения из $translucent поверхностей моделей (НЕ брашей), которые указаны в файле освещения и используются с prop_static(en). Обычно требуют включенного параметра -StaticPropPolys.
Note.pngПримечание:Поверхность требует низкомасштабной карты освещения(en), чтобы большинство текстур теней были узнаваемыми.
Note.pngПримечание:По какой-то странной причине это не будет работать, если VMT файл полупрозрачной текстуры содержит .vtf файл, заканчивающийся строками с basetexture.
-aoscale <float(en)> (Во всех играх начиная с Counter-Strike: Global Offensive)
Определяет масштаб интенсивности моделируемой окклюзии VRAD. По умолчанию 1.0.
Tip.pngСовет:Valve используют 1.5 для новой Dust 2.
-aoradius <float(en)> (только в Insurgency)
Устанавливает радиус имитации окклюзии VRAD.
Нужно сделать: Узнать, как именно.
-aosamples <integer(en)> (только в Insurgency)
Как много сэмплов использовать для имитации окклюзии VRAD.
-StaticPropBounce <integer(en)> (только в Counter-Strike: Global Offensive)
Число симуляции световых отражений статических пропов. По умолчанию 0.
Tip.pngСовет:Valve используют 3 отражения статических пропов для новой Dust 2.
Note.pngПримечание:У любого статического пропа можно отключить световые отражения через ключ "Enable Bounced Lighting".
-StaticPropLightingFinal  (только в Counter-Strike: Global Offensive)
Компилирует освещение более высокого качества для статических пропов.
-StaticPropLightingOld  (только в Counter-Strike: Global Offensive)
Использовать старый алгоритм освещения для пропов, на них свет влияет сильнее всего.
-choptexlights  (только в Black Mesa)
Включает разделение текстурного света, сгенерированного на основе файла освещения. Управляет качеством текстурного света с помощью плотности карты освещения в Hammer. Существенно увеличивает качество текстурного освещения и время компиляции.
-extratransfers  (только в Black Mesa)
Включить масштабирование передачи света.
-transferscale <float(en)> (только в Black Mesa)
Масштабный коэффициент передачи света. Увеличенные значения заставляют поверхности передавать больше света (предлагается масштаб 2–4). По умолчанию 1.0.
-satthresh <float(en)> (только в Black Mesa)
Порог, определяющий насыщенность цвета материала. Используется вместе с -satthreshscale. По умолчанию 0.4.
-satthreshscale <float(en)> (только в Black Mesa)
Количество масштабируемого света переносится с поверхностей, которые превышают порог насыщенности. По умолчанию 3.0.

Производительность

-low
Запуск процесса с низким приоритетом.
-threads <integer(en)>
Указать количество задействованных ядер цпу, максимум 16. Используя патч vrad_dll(en) вы можете расширить предел до 32.
-mpi
Использовать VMPI(en) для распределения вычислений (не актуально).
-mpi_pw <string(en)>
Использовать пароль для определённых VMPI шаблонов-режимов.
-noextra
Отключить суперсэмплинг. Карта станет более яркой, а тени неточными.
-chop <integer(en)>
Наименьшее число ширины люкселей(en) для патчей отражения, используемых на краях. (По умолчанию: 4)
-maxchop <integer(en)>
Самое грубое допустимое число ширины люкселей(en) в патче, используемое на поверхностях интерьера. (По умолчанию: 4)
-dispchop <integer(en)>
Наименьшая приемлемая ширина люкселей(en) в поверхностях патча дисплейсментов. (По умолчанию: 8)
-LargeDispSampleRadius
Это можно использовать, если на поверхности есть пятна отражённого света. Компиляция займёт больше времени, но она соберёт свет в более обширных областях.
-compressconstant <integer(en)>
Сжать карты освещения(en), цветовая вариация которых меньше, чем данное значение.
-fastambient
Использовать низкое качество выборки для каждого листа, чтобы сэкономить время вычисления.
-noao  (только в Insurgency)
Отключить компиляцию смоделированной окклюзии для карты освещения.
-StaticPropSampleScale <integer(en)> (только в Counter-Strike: Global Offensive)
Регулирует освещение, сгенерированное для каждой вершины проп статик.
медленно: 16 (высокое качество); по умолчанию: 4 (нормальное качество); быстро: 0.25 (низкое качество)
Note.pngПримечание:Параметр -final эквивалентен значению 16 параметра -StaticPropLightingScale.


Режим отладки

-rederrors
подсвечивает люксели(en) без сэмплов
-vproject <directory>
-game <directory>
Указать путь к VPROJECT (Game Info).
-insert_search_path <directory>
Включает дополнительный базовый каталог для монтирования дополнительного контента (например, записи Gameinfo.txt). Полезно, если вы хотите отделить некоторые активы от мода по какой-либо причине.
-v
-verbose
Включить подробный отчёт-вывод.
-novconfig
Не запускать игру при наличии ошибок с Vconfig (при проблемах с поиском контента игры.
-dump
Сброс патчей для отладки файлов.
-dumpnormals
Записывать нормали в файл дампа .txt.
-debugextra
Помещает данные отладки в карты освещения для визуализации суперсэмплинга.
-dlightmap
Превращает направленное освещение в разнонаправленные лайтмапы.
-stoponexit
Ждать нажатия кнопки, для выхода (закрытия окна).
-nodetaillight
Не освещать дитейл пропы (или func_details?).
-centersamples
Переместить сэмплы в центр.
-loghash
Записать хэш таблицы в samplehash.txt.
-onlydetail
Освещать только детейл пропы и per-leaf.
-maxdispsamplesize <integer(en)>
Установить максимальный размер сэмплов для дисплейсментов (по умолчанию: 512).
-FullMinidump
Написать большой минидамп при ошибке.
-OnlyStaticProps
Выполнять только прямое освещение prop static (или же простое освещение?).
-StaticPropNormals
Когда освещаются static props, просто отображать направление нормалей.
-noskyboxrecurse
Отключить рекурсию для 3d skybox (тени скайбокса на карту).
-nossprops
Отключить все произвольные тени для static props (когда существует тень от бочки, даже карте без освещения.
-dumppropmaps  (только в Source 2013 Multiplayer)
Сдампить (слить) вычисленные карты освещения.

Файлы статического освещения

Merge-arrow.png
Было предложено перенести эту статью или раздел в Ru/RAD file. (Обсуждение)

Файл освещения представляет собой обычный TXT документ VRAD(en), который вы можете править. Он указывает какие материалы(en) могут излучать статическое освещение. Ваши «.rad» файлы должны находиться в той же папке, где и gameinfo.txt(en).

Также:

  1. lights.rad, является глобальным файлом (используется всеми картами).
  2. Для автозагрузки файла освещения, нужно использовать «<имя карты>.rad». файл должен быть расположен там же, где и «<имя карты>.vmf».
  3. Любое количество файлов освещения могут быть добавлены в карту, если использовать -lights параметр.

Правила-Условия

light энтити, который расставляется движком на расстоянии каждые 4 люкселя

Чтобы файлы освещения работали правильно, на каждую отдельную текстуру должна идти отдельная строка по следующему шаблону:

<material> <red> <green> <blue> <intensity> <hdr_red> <hdr_green> <hdr_blue> <hdr_intensity>
Материал должен покрывать грани обычных брашей(en) (hdr_ значение не обязательно). Размер текстуры в хаммере напрямую влияет на степень яркости.
Note.pngПримечание:На самом деле не текстура излучает свет, это делает обычный light энтити, который расставляется движком на расстоянии каждые 4 люкселя(en). Иногда быстрее и разумней будет сделать это вручную в хаммере.
Note.pngПримечание:Текстуры, которые не лежат в папке Light, а находятся просто в materials, должны иметь перед своим именем слеш /ИМЯ_ТЕКСТУРЫ.
Warning.pngПредупреждение:func_detail(en) на которых будут нанесены текстуры излучающие свет, возможно не обработаются VRAD.
noshadow <имя текстуры>
Запрещает данной текстуре отбрасывать тень.
forcetextureshadow <путь к модели>.mdl
Включает тестирование полупрозрачной тени для модели, когда VRAD запускается с -TextureShadows. нужно указать папку расположения модели.
ldr:
hdr:
Префиксы для выполнения в режиме LDR или HDR.
hdr:ldr:
Строки, начинающиеся с обоих тегов (в таком порядке), всегда будут игнорироваться VRAD. Может использоваться для добавления комментариев или быстрого отключения некоторых параметров.

См. также