Компилятор освещения VRAD
VRAD - это инструмент командной строки для
Source, который использует имеющийся BSP-файл и добавляет в него данные об освещении. Статичное и заготовленное освещение распостраняется VRAD на весь мир карты посредством алгоритма излучения света.
Что делает VRAD:
- Рассчитывает карты освещения;
- Рассчитывает освещение рассеяным светом;
- Рассчитывает освещение по вершинам геометрии, например для реквизит-объектов (prop_static);
- Рассчитывает освещение для объектов целиком, например для мелких реквизит-объектов (detail props).
VRAD является самым долгим из компиляторов, из-за прогрессирующего количества операций расчёта. Оптимизация освещения может помочь ускорить процесс, если на карте нет утечек.
Синтаксис
Пример для обычной компиляция:
Это сгенерирует и встроит в файл карты как стандартное освещение, так и данные для широкого диапазона яркости для вершинного освещения реквизита prop_static. It also generates shadows based on transparency for prop_static entities that have been flagged as casting texture shadows.
Параметры
Используйте их комбинации в подробном режиме компиляции, пакетном bat-файл или оболочке компиляторов
Compile Pal.
Эффекты
- -ldr
- Компилировать освещение в малом диапазоне яркости.
- -hdr
- Компилировать освещение с Широким Динамическим Диапазоном яркости.
- -both
- Компилировать освещение как в LDR, так и в HDR.
Важно: In engine branches prior to
(including
), loading a map compiled with -hdronly when HDR is disabled will result inmat_fullbright 1being forced on, which applies to all subsequent maps until cheats are enabled. This does not affect maps compiled with-ldronly. As such, final distributables for pre-
multiplayer games should be compiled in -bothor-ldrto prevent giving fullbright cheats to users with HDR enabled;-hdrcan still be useful for faster iteration in development compiles.
- -fast
- Компиляция освещения низкого качества. Используются для быстрого предпросмотра карты.
Примечание: -fastприведёт к появлению случайных неправильно окрашенных пятен в тёмных областях карты.
Не используйте эту опцию для исправления проблем с освещением.- -final
- Улучшает качество light_environment и непрямого света, затрачивая больше времени на лучи. Устанавливает значение -extrasky на 16.
,
Устанавливает значение -StaticPropSampleScale на 16.
Устанавливает значения -aosamples на 32, -extrasky на 16, и -extrapasses на 8.
- -extrasky <целое число>
- Прослеживает в
Nраз больше лучшей для непрямого освещения и неба. (-finalто же самое, что и-extrasky 16; normal соответствует-extrasky 1)
- -lights <имя_файла>.rad
- Загружает пользовательский файл освещения в дополнение к
lights.radи файлу освещения непосредственно для этой карты. В этом параметре необходимо указывать расширение файла. - -bounce <целое число>
- Устанавливает максимальное количество отражений лучей света. (по умолчанию: 100).
- -smooth <целое число>
- Устанавливает порог для групп сглаживания, в градусах (по умолчанию: 45).
- -luxeldensity <норма>
- Уменьшает масштаб всех люкселов. По умолчанию (максимальное значение) 1.
Предупреждение: Установка слишком малого значения может привести к дефектам освещения. - -softsun <число с плавающей запятой>
- Представляет Солнце как объёмный источник рассеянного света. Создаёт мягкие тени. Рекомендуемые значения 0–5, по умолчанию - 0. Идентично параметру
SunSpreadAngleдля light_environment, используйте его вместо этого. - -StaticPropLighting (Во всех играх начиная с
) - Рассчитывает освещение по вершинам на объектах prop_static. Не учитывает точку освещения для расчёта освещения объектов без маски рельефа на текстуре или $phong (only affecting chosen env_cubemap), unless the
disablevertexlightingKV is set for the prop. Это может существенно увеличить размер файла вашей карты. Отключите освещение по вершинам для объектов, которым это не требуется, чтобы сохранить наименьший размер файла. Static props which are close to bright light_spot entities will still appear as if they were lit per-vertex, due to the lights creating directional elights.
(только в
) It also generates lightmaps for static props that have generatelightmapsenabled in supported engines.
Баг:In all games prior to
, VRAD uses a faulty algorithm for calculating indirect vertex lighting on props. In games based on
and
, the lighting tends to be unnaturally dark or harsh, while in games based on older branches (
&
) it's too bright. A pull request to address this has been submitted.
Предупреждение: В
Black Mesa вместо этого следует использовать -StaticPropLighting3.
Важно: Не работает на объектах реквизита с маской рельефа, за исключением
Counter-Strike: Global Offensive.
- -StaticPropPolys (Во всех играх начиная с
) - Использовать для создания теней непосредственно модели prop_static вместо их габаритов столкновений для получения более точного отображения теней.
Примеры -StaticPropPolys
- -textureshadows (Во всех играх начиная с
) - Генерировать тени карты освещения из $alphatest и $translucent поверхностей моделей реквизита prop_static, которые указаны в файле освещения или скомпилированных с
$casttextureshadows. Обычно необходим параметр-StaticPropPolysего для действия. A surface will need a low lightmap scale for most texture shadows to be recognizable. Nonetheless, textures such as grate fences, foliage, and barbed wire will still cast noticeably more accurate shadows with this command enabled compared to disabled.
Also casts shadows from model materials with %alphatexture.
Примеры -textureshadows
Примечание: Поверхность требует низкомасштабной карты освещения, чтобы большинство текстур теней были узнаваемыми. - |game=(Во всех играх начиная с
Баг:
- Static props with multiple skins will always use the alpha channel(s) from the default skin's texture(s), even though the alternative skins' alpha textures are loaded by VRAD. (подтверждено в:

) - По какой-то странной причине это не будет работать, если VMT файл полупрозрачной текстуры содержит .vtf файл, заканчивающийся строками с basetexture.
) - Static props with multiple skins will always use the alpha channel(s) from the default skin's texture(s), even though the alternative skins' alpha textures are loaded by VRAD. (подтверждено в:
Параметры для конкретных игр/компиляторов
Counter-Strike: Global Offensive
- -aoscale <число с плавающей запятой> (Во всех играх начиная с
)(также в 
) - Определяет масштаб интенсивности имитации VRAD прикрытия рассеяного света. По умолчанию
1.0.
Совет: Valve используют 1.5 для новой Dust 2.
Примеры -aoscale
- -StaticPropBounce <целое число> (только в
)(также в
) - Число отражений света на статичных реквизит-объектах для симуляции. По умолчанию
0.
Совет: Valve используют 3 отражения на статичных реквизит-объектов в новом Dust 2.
Примечание: У любого статичного реквизит-объекта можно отключить световые отражения через ключ-параметр "Enable Bounced Lighting". - -StaticPropLightingFinal (только в
) - Компилирует освещение более высокого качества для статичных реквизит-объектов.
- -StaticPropLightingOld (только в
) - Использовать старый алгоритм освещения для реквизит-объектов, на них свет влияет сильнее всего.
- -ambient <цвет КЗС 0-1> (только в


) - Sets the ambient term. Can be used to tweak lightmap color. Appears to just mix the color into all lightmaps.
Also available in
Source 2013 if VRAD is compiled in debug mode - -unlitdetail (только в
) - Disables lighting for detail props.
- -ambientfromleafcenters (только в
) - Samples ambient lighting from the center of the leaf.
- -StaticPropSampleScale <целое число> (только в
)(также в 
) - Регулирует освещение, сгенерированное для каждой вершины объекта prop_static.
- медленно: 16 (высокое качество); по умолчанию: 4 (нормальное качество); быстро: 0.25 (низкое качество)
Примечание: Параметр -finalэквивалентен значению16параметра-StaticPropLightingScale.- -LeafAmbientSampleReduction <число с плавающей запятой> (только в
) - Reduction factor for ambient samples. По умолчанию 1.0.
Garry's Mod
- -aofacesamples <целое число> (только в
) - Adjust number of AO face samples for brushes. По умолчанию 32, -final - 128, -fast - 16.
- -aopropsamples <целое число> (только в
) - Adjust number of AO face samples for props. По умолчанию 16, -final - 32, -fast - 12.
- -aoNoSquare (только в
) - Disables squaring of ambient occlusion, making it look less harsh. Default is on (more harsh).
- -bounceFromNamed (только в
) - Forces named and styled lights to cast bounced lighting. Note that this will increase lightmap usage!
Black Mesa
- -StaticPropLighting3 (только в
) - This is a more precise and less buggy version of
-StaticPropLighting. - -choptexlights (только в
) - Включает разделение текстурного света, сгенерированного на основе файла освещения. Управляет качеством текстурного света с помощью плотности карты освещения в Hammer. Существенно увеличивает качество текстурного освещения и время компиляции.
Примечание: In other games, this is enabled by default, unless %CompileNoChop is used. - -extratransfers (только в
) - Включить масштабирование передачи света.
- -transferscale <число с плавающей запятой> (только в
) - Масштабный коэффициент передачи света. Увеличенные значения заставляют поверхности передавать больше света (предлагается масштаб
2–4). По умолчанию1.0.
Recommended 4.0 as max value, as it makes env_cascade_light's shadows less intensive.
Примеры -transferscale
- -satthresh <число с плавающей запятой> (только в
) - Порог, определяющий насыщенность цвета материала. Используется вместе с
-satthreshscale. По умолчанию 0.4. - -satthreshscale <число с плавающей запятой> (только в
) - Количество масштабируемого света переносится с поверхностей, которые превышают порог насыщенности. По умолчанию 3.0.
- -ambientocclusion (только в
)(также в 

) - Enable lightmapped ambient occlusion.
Совет: Use very low lightmap scale for small stairs or add additional light sources to light them, otherwise stairs will be completely black.
Примеры -ambientocclusion
- -experimentalambientocclusion (только в
) - Uses an improved algorithm for ambient occlusion.
Broken. Don't use.
Примеры -experimentalambientocclusion
- -cascadeshadows (только в
) - Indicates that lightmap alpha data is interleved in the lighting lump, required for CSM.
- Must be used with
-StaticPropLighting3to have proper lighting of static props.
Примеры -cascadeshadows
- -realskylight (только в
) - Enables VRAD to compute skylight ambient color by using actual values from skybox.
This option was originally designed only for levels in Xen, to make lighting for islands more natural. With earthbound outdoor levels this option makes level lighting weird, especially if level uses a skybox with an open, clear sky.
Примеры -realskylight
- -realskylightscale <число с плавающей запятой> (только в
) - Scale factor of -realskylight intensity. По умолчанию: 1.0. Recommended 0.4 for earthbound outdoor levels.
- -directsunlightisforadditivemode (только в
) - Toggles direct sunlight for additive mode.
Баг:This option is not compatible with cascaded shadows and was never supposed to be used. It was an attempt to not include the sun lighting in the lightmaps, and add the entire sun lighting later, for the better prop lighting, but this feature was never finished.
Пример -directsunlightisforadditivemode
Strata Source
- -aoradius <число с плавающей запятой> (только в

) - Устанавливает радиус для имитации VRAD прикрытия рассеянного света. По умолчанию 36.
- -aosamples <целое число> (только в

)(также в
) - Как много образцов использовать VRAD для имитации прикрытия рассеянного света.
- -PortalTraversalLighting (только в
) - Enables static lights to go through linked_portal_door, if
Static Portalvalue isYes.
Примеры -PortalTraversalLighting
- -PortalTraversalAO (только в
) - Enables static light Ambient Occlusion to go through linked_portal_door, if
Static Portalvalue isYes.
Примеры -PortalTraversalAO
Slammin' Source Map Tools
- -softenCosine (только в
) - Softens coloured lighting so it blends more accurately.
- -worldtextureshadows (только в
(также в
)) - Allows world polys to cast texture shadows, much like models can.
Баг:Doesn't work with displacements, and certain file formats might not cast shadows! (подтверждено в:
)
Примеры -worldtextureshadows
- -translucentshadows (только в
(также в
)) - Enables -worldtextureshadows on
$translucentsurfaces. As by default only $alphatest surfaces cast baked shadows.
Баг:Doesn't work with displacements, and certain file formats might not cast shadows! (подтверждено в:
)
Примеры -translucentshadows
- -coring <число с плавающей запятой> (только в
) - Luxels with values dimmer than this are treated as completely black, and don't get supersampled.
Also available in
Source 2013 if VRAD is compiled in debug mode - -reflectivityScale <число с плавающей запятой> (только в
) - Scale the $reflectivity of all textures. По умолчанию 1.0
Mapbase
- -ultrafast (только в
) - Merges '-fast -fastambient -noextra -bounce 1' commands into one, reduces compile time, useful for testing large maps.
- -extrapasses (только в
) - Lets you scale how many extra passes you want your map to go through for supersampling, useful for making the lightmaps more rgb constant.
Half-Life 2 20-летия и
Portal (обновление 20 мая)
- -HL2LDRAmbientClassic (только в
) 20th - Use BSP version <20 LDR ambient lighting constant (pre-Lost Coast vmfs)
- -HL2LDRAmbientFix (только в
) 20th - Use adjusted LDR ambient lighting constant for HDR re-lit maps (Post Xbox 360/Orange Box HL2 VMFs only)
VRAD++
All debug mode options are also available.
- -ambientocclusion (только в
)(также в 

) - Enable baked ambient occlusion. This uses a custom implementation that is an order of magnitude faster than AO in Slammin/CS:GO.
- -aoradius <число с плавающей запятой> (только в
)(также в 

) - По умолчанию 32.
- -aoscale <число с плавающей запятой> (только в
)(также в 

) - Intensity multiplier for baked ambient occlusion. По умолчанию 0.5.
- -aopropsamples <целое число> (только в
)(также в 

) - How many samples to use for baked ambient occlusion on static props. 0 disables static prop AO.
- По умолчанию: 12 для fast, 16 для normal, 32 для final.
- -aofacesamples <целое число> (только в
)(также в 

) - How many samples to use for baked ambient occlusion on brushes and displacements. 0 disables brush and disp AO.
- По умолчанию: 16 для fast, 32 для normal, 96 для final.
- -aodebug (только в
) - Only write ambient occlusion to the lightmaps. This allows for "no lighting" compiles to still have some basic shadowing to be easier to discern geometry.
- -StaticPropSampleScale <число с плавающей запятой> (только в
)(также в 
) - Extra sampling factor for vertex lighting on props.
Примечание: -final implies -StaticPropSampleScale 4, unless explicitly defined. Otherwise, default is 1.
Unlike the CSGO version of the command, this affects direct lighting as well, instead of only indirect lighting.- -reflectivityscale <число с плавающей запятой> (только в
)(также в
) - Scale the reflectivity of all surfaces for bounced lighting.
- -worldtextureshadows (только в
)(также в
) - Allows world polys with
$alphatestto cast texture shadows, much like models can.
Примеры -worldtextureshadows
- -translucentshadows (только в
)(также в
) - Enables -worldtextureshadows on
$translucentsurfaces, as by default only $alphatest surfaces cast baked shadows from brushes.
Примечание: Models which cast texture shadows always cast texture shadows from $translucentmaterials, regardless of this parameter.
Подтвердить:Does %alphatextureon brushes require-translucentshadows, or only-worldtextureshadows?
Примеры -translucentshadows
- -forcetextureshadows (только в
) - Cast texture shadows from all model materials with
$alphatest,$translucent, and/or%alphatexture, even if they don't have$casttextureshadowsnor are defined withforcetextureshadowin the RAD file. - -propambient (только в
) - Allow static prop shadows to affect ambient cubes, and prevent ambient cubes from being generated inside of static props. Note that this requires engine changes to have a noticeable effect.
- -patchlightmapsize <целое число> (только в
) - Minimum lightmap size for patches (default is 16). This controls how faces with lower lightmap scales get subdivided for bounced lighting; lower values will subdivide more, at the cost of increased compile time and memory usage. This may sometimes solve issues with thin surfaces obstructed by geometry not receiving light.
- -StaticPropIndirectMode <целое число выбор> (только в
) - Change the algorithm used to calculate the ambient term for per-vertex lighting and lightmaps on static props.
- See this GitHub PR for graphical comparison.
- -report_search_paths (только в
) - List all active search paths, for debugging.
|
Производительность
- -low
- Запуск компилятора как процесса с низким приоритетом.
- -threads <целое число>
- Указать количество задействованных процессоров/ядер. Максимум 16 потоков (32 в


, без ограничения в
)
Обходной приём: Используя патч vrad_dll можно увеличить предел до 32.
fixtoolthreads is a patch for VRAD (and VVIS) that supports unlimited threads and fixes a thread scaling issue.
Совет: If you know that the compile time will be very long and would rather do something else while waiting, it may be useful to specify a number of threads 1 or 2 lower than what your CPU has. This allows the computer to allocate some more power to other applications, making it less choppy while lighting is being compiled. Keep in mind that this may slightly extend your compile time.
- -mpi (нет в
) - Использовать VMPI для распределения вычислений (не актуально).
- -mpi_pw <строка>
- Использовать пароль для определённых VMPI шаблонов-режимов.
- -noextra
- Отключить суперсэмплинг. Карта станет более яркой, а тени неточными.
- -chop <целое число>
- Наименьшее число ширины люкселов для патчей отражения, используемых на краях. (По умолчанию: 4)
- -maxchop <целое число>
- Самое грубое допустимое число ширины люкселов в патче, используемое на поверхностях интерьера. (По умолчанию: 4)
- -dispchop <целое число>
- Наименьшая приемлемая ширина люкселов в поверхностях патча дисплейсментов. (По умолчанию: 8)
- -LargeDispSampleRadius
- Это можно использовать, если на поверхности есть пятна отражённого света. Компиляция займёт больше времени, но она соберёт свет в более обширных областях.
- -compressconstant <целое число>
- Сжать карты освещения, цветовая вариация которых меньше, чем данное значение.
- -fastambient
- Использовать грубую выборку образцов рассеянного освещения для экономии времени вычисления.
- -noao (только в
) - Отключить компиляцию имитации прикрытия рассеяного света для карты освещения.
- -disppatchradius <число с плавающей запятой>
- Sets the maximum radius allowed for displacement patches. If you get "Patch Sample Radius Clamped", you can try increasing this limit.
}}
Отладка
- -rederrors
- Выделяет красным цветом "люкселы без сэмплов".
- -vproject <директория>
- -game <директория>
- Переопределяет переменную среды VPROJECT.
- -insert_search_path <директория>
- Добавляет путь к директории для поиска дополнительного содержимого (как записи в Gameinfo.txt). Полезно, если по какой-либо причине необходимо хранить некоторые ресурсы отдельно от основной модификации.
- -v
- -verbose
- Включает вывод подробного отчёта.
- -novconfig
- Не запускать игру при наличии ошибок с Vconfig (при проблемах с поиском контента игры.
- -dump
- Выводит патчи в отладочные файлы.
- -dumpnormals
- Записывать нормали в отладочные .txt файлы.
- -debugextra
- Помещает данные отладки в карты освещения для визуализации суперсэмплинга.
- -dlightmap
- Принудительно использовать разнонаправленные карты освещения вместо прямого освещения.
- -stoponexit
- Ожидать нажатия кнопки, для выхода (закрытия окна).
- -nodetaillight
- Не освещать объекты мелкого реквизита.
- -centersamples
- Переместить сэмплы в центр.
- -loghash
- Записать хэш таблицы в samplehash.txt.
- -onlydetail
- Освещать только объекты мелкого реквизита и per-leaf освещение.
- -maxdispsamplesize <целое число>
- Установить максимальный размер сэмплов для деформированных поверхностей (по умолчанию: 512).
- -FullMinidump
- Записывает полные кадры памяти при сбое компиляции.
- -OnlyStaticProps
- Выполнять освещение реквизит-объектов (prop_static) только от источников света.
- -StaticPropNormals
- В случае освещения реквизит-объектов, просто отображать направление нормалей.
- -noskyboxrecurse
- Отключить рекурсию в объёмное небо (тени от небосвода на элементах карты).
- -nossprops
- Полностью отключить самозатенение статичных реквизит-объектов (когда существует тень от бочки, даже на карте без освещения).
- -dumppropmaps (Во всех играх начиная с
)(также в
) - Вывести вычисленные карты освещения статичных реквизит-объектов в виде TGA-файлов.
Совет: This can be used to create lightmaps for dynamic props, using the $lightmap shader parameter.
Совет: To pair static props in a map with their dumped lightmaps, use r_staticpropinfo 2to show static prop IDs on screen.
Баг:The resulting TGAs are written with the wrong color space (fixed in
); convert the resulting PPL files instead. This command can be useful for indicating which model and at what location each prop is, which the PPL filenames lack.
Параметры режима отладки
If VRAD is compiled in debug mode or the #if ALLOWDEBUGOPTIONS preprocessor is removed, additional options are available. These are enabled in
VRAD++ and
Slammin' VRAD.
- -scale <число с плавающей запятой>
- Scale lighting by this value.
- -ambient <цвет КЗС 0-1>
- Apply a minimum ambient lighting value to the map.
- -sky <число с плавающей запятой>
- [Уточнить]
- -notexscale
- [Уточнить]
- -coring <число с плавающей запятой>
- Luxels with values dimmer than this are treated as completely black, and don't get supersampled.
Файлы статичного освещения
Дополнительные сведения о свечении текстур смотрите в статье RAD-файл освещения
Вывод информации в терминал
Ошибки и предостережения
-threads #. .mdl файлы, имеющие заголовок IDST1 не будут обработаны для VBSP, и выдадут сообщение об ошибке, говорящее что модель не удалось загрузить. Это можно исправить, изменив заголовок на IDST0 в HEX редакторе или перекомпилировав модель не в ««-final» (несмотря на то, что показано 100% использование процессора). Исправление этого бага для raytrace.cpp isn't present so check if these versions also have the bug or not.
Совет: Using HDR fixes light splotching in dark areas.
Совет: С помощью Source Engine BSP Lightmap Editor можно вручную редактировать уже запечённую карту освещения у готового .bspфайла.
8...9... не переживайте, дело в том, что на каждую последующую итерацию расчёта карты освещения тратится всё больше времени. Смотреть также
- QRAD and HLRAD - в составе
GoldSrc. - VRAD2 & VRAD3 - в составе
Source 2. - Теория компиляции карт
- Ошибки компиляции
- Основы освещения HDR
- VRAD HDR Crash Fix
- Static Props show up black
Тематический указатель
| |||||||||||||||||||||||||||||