Карта освещения

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)Français (fr)Русский (ru)Translate (Translate)
Info content.png
This translated page needs to be updated.
You can help by updating the translation.
Also, please make sure the article complies with the alternate languages guide.(en)
This notice is put here by LanguageBar template and if you want to remove it after updating the translation you can do so on this page.


Карта освещения - это сгенерированная текстура(en), Wikipedia icon аддитивно наложенная на поверхность LightmappedGeneric(en) элемента карты(en), чтобы имитировать освещение. Цветовые значения поверхностей альбедо(en) умножаются на значения цвета их карты освещения.

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

In November 16, 2024, with the release of the Half-Life 2 20th anniversary update, Team Fortress 2's February 18, 2025 patch (also includes Counter-Strike: Source, Day of Defeat: Source, Half-Life 2: Deathmatch and Half-Life Deathmatch: Source), and later May 20, 2025 update for Portal, lightmaps are now Bicubic filtered if the player set the video options to "Very High". This can be toggled independently with the r_lightmap_bicubic cvar.

Note.pngПримечание:Source 2013 Multiplayer Source 2013 Multiplayer, the Ветвь Team Fortress 2 Ветвь TF2, and Garry's Mod Garry's Mod also support lightmaps on MDL props using VertexLitGeneric.
Prop lightmaps are capable of being higher resolution than brush or displacement lightmaps, but come with their own share of complications; see $lightmap and prop_static for specifics.
Icon-Bug.pngБаг:Source Lightmap seams can sometimes occur at brush face subdivisions when MSAA is enabled. As subdivision size (chopping) is affected by luxel scale, this is more noticeable at lower luxel scales (higher-resolution lightmaps). Engine modifications and a modified VBSP are required to reduce face subdivisions at lower luxel scales.  (подтверждено в: Half-Life 2: Deathmatch Day of Defeat: Source)

Масштаб

Масштаб карты освещения поверхности определяет размер её карты освещения. По умолчанию, он равен 16, т.е. каждый пиксель карты освещения ("люксель") соответствует квадрату шириной в 16 единиц(en), следовательно, при масштабе 1 люксель будет соотвествовать квадрату шириной в одну единицу. Это значение изменяется в Hammer Face Edit Dialog(en) для каждой грани элемента карты или деформированной поверхности.

Уменьшение масштаба делает тени чёткими, но увеличивает размер файла карты, слегка замедляет отображение и экспоненциально замедляет компиляцию (на очень низких масштабах приводит к большому использованию системной памяти).

Масштаб освещения 4 Масштаб освещения 16 Масштаб освещения 64
Масштаб освещения 4, 16, и 64.

Во время генерации карт освещения, VRAD не создаёт полутеней(en). Тем не менее, эффект можно имитировать увеличением масштаба освещения (поэтому, по умолчанию используется относительно большое значение 16).

Note.pngПримечание:Каждый скомпилированный полигон элементов карты(en) максимально размещает 31x31 люкселей. При необходимости VBSP(en) делит поверхности для получения дополнительных люкселей.
  • Имеется ограничение в 124x124 люкселей на деформированную поверхность, которое не исправляется VBSP автоматически; смотрите Плотность люкселей для деформированных поверхностей(en).
  • В Military Conflict: VietnamStrata Source ограничение для элементов карты увеличено до 127x127 люкселей.
  • Большое количество граней элементов карты с маленьким масштабом люкселей приводит с сбою VBSP(en) с ошибкой Too many unique verts (слишком много вершин).
Tip.pngСовет:
  • Туман(en) дополнительно рассеивает тени, делая их ещё более размытыми. Look at light_environment's sun spread angle
  • Source Luxel scale does not need to be a power of two; it does not directly correspond to lightmap resolution. Any integer value can be used, but even scales are preferred to avoid seams; odd values may be also more prone to Engine Hunk Overflow[подтвердить].
Icon-Important.pngВажно:Faces which have lightmap scale set to 0 are treated as being set to 16 by VBSP(en), but Hammer rounds up the value of such faces to 1 instead when applying any changes to the brush face. This affects VMF(en)s which are exported from Jack.
Масштабы и эффекты.
Масштабы и эффекты light textures.

Оптимизация

Оптимизация карты освещения.

Оптимизация карты освещения делается на глазок после компилирования карты: на гранях с низким контрастом освещения масштаб нужно увеличивать, и наоборот, уменьшать его на гранях с высоким контрастом. Но будьте осторожны с большими масштабами, потому что они могут привести к 'пятну' света, не сочетающемся с соседями (чтобы заметить это, используйте команду mat_fullbright 2).

Не забывайте также учитывать размер грани. Смещение огромной грани вверх или вниз на одну точку может иметь большие последствия. Не бойтесь разделять грань или убирать некоторые детали на огромных гранях полов и стен.

Вид в Hammer

Щелкните по camera в левом верхнем углу 3D-вида Hammer и выберите параметр "3D Lightmap Grid"(Световая сеть). В этом режиме все текстуры поверхностей элементов карты будут заменены сеткой, отображающей масштаб их освещения (о чём рассказано в предыдущем разделе).

В этом режиме функциональные элементы карты, покрытые служебными текстурами, отображаются как и обычные, но их можно скрыть отключив соответствующие авто-видовые группы(en)Hammer++, используйте значок Показать служебные текстуры отображения служебных текстур).

Масштаб карты освещения 4 (отображается красным цветом, если масштаб <7) Масштаб карты освещения 8 (отображается жёлтым цветом, если масштаб 8-15) Масштаб карты освещения 16 (отображается белым цветом) Масштаб карты освещения 32 (отображается голубым цветом, если масштаб 17-63) Масштаб карты освещения 64 (отображается зелёным цветом, если масштаб >64)
Масштабы карты освещения 4, 8, 16, 32, и 64 в режиме 3D-вида Световая сеть.

Бикубические карты освещения

Half-Life 2 Half-Life 2, Half-Life: Source Half-Life: Source, Portal Portal, and the Ветвь Team Fortress 2 Ветвь Team Fortress 2 include the "Very High" shader detail option, which also enables bicubic filtering on lightmaps, smoothing out the aliasing ("stair-stepping") at the cost of reduction of thinner details and more prominent seams. This can be also toggled independently with the r_lightmap_bicubic cvar(en). Bicubic lightmaps require (DX9 SM2). Так как она реализована посредством оттенения, она влияет только на LightmappedGeneric(en) и WorldVertexTransition(en) материалы.

На изображениях ниже представлено сравнение отключенного и включенного режимов для демонстрации преимуществ и недостатков. Нажмите на изображения, чтобы увидеть их в полном размере.

Сравнение бикубических карт освещения — с отключенным и включенным режимом.
Сравнение бикубических карт освещения — с отключенным и включенным режимом.

Консольные команды

Далее перечислены все читы(en), кроме r_lightmap_bicubic:

mat_fullbright 2
mat_fullbright 2
Заменяет все альбедо(en) серым тоном, оставляя лишь информацию о свете.
mat_luxels <boolean(en)>
Показывает люксели(en) на поверхностях всех элементов карты и реквизит-объектах покрытых lightmaps.
Note.pngПримечание:Разрывается на деформированных поверхностях(en), это не баг.
Icon-Bug.pngБаг:This command is broken in Source 2009, Source Multiplayer and Source 2013 Singleplayer Source 2013 Singleplayer and doesn't display correctly, due to missing shaders (see GitHub issues #3803). This issue is not affected in Ветвь Team Fortress 2 games (Counter-Strike: Source, Day of Defeat: Source, Half-Life Deathmatch: Source, Half-Life 2: Deathmatch, Team Fortress 2), most Source 2013 Multiplayer games and both legacy and 2025 version of Source SDK Base 2013.
Remains unfixed on Half-Life 2 (20th anniversary).
Fixed in Garry's Mod
  (подтверждено в: Ветвь Team Fortress 2, Garry's Mod, Source Multiplayer (via Garry's Mod 13 Beta),Half-Life 2 20th, Half-Life 2 2012 build)
Icon-Bug.pngБаг:Lightmaps show up incorrectly on displacements when this command is used.  (подтверждено в: Day of Defeat: Source)
mat_filterlightmaps <boolean(en)>
Контролирует, сглаживаются ли люксели таким же образом, как и тексели(en).
r_avglightmap <boolean(en)>
Режим "Doom"! Средние значения карты освещения на всех полигонах.
mat_showlightmappage <integer(en)>
Разворачивает каждую карту освещения в маленьком окне в верхнем левом углу экрана. Ужасно не полезно для моддеров.
Tip.pngСовет:You can see all lightmaps by opening mat_texture_list and clicking Render Targets and Special Textures.
r_lightmap <integer(en)>
Specifies the light style index to compute and display the lightmap for. If set to -1 (default), computes for all light styles. Primarily used for debugging and inspecting specific light styles' effects on the lightmap.
Нужно сделать: Не очевидный эффект.
r_unloadlightmaps <boolean(en)>
Controls whether lightmap data is unloaded from memory after being updated. When set to 1, the engine unloads lightmap data to save memory. Useful for debugging or when frequent changes to lighting occur.
Нужно сделать: Неизвестно. Возможен ли способ очищать данные карты освещенности между загрузками карты?
r_lightmap_bicubic <boolean(en)> (только в Half-Life 2 Half-Life: Source Portal Ветвь Team Fortress 2)
Enable bicubic lightmap sampling. Only available in Half-Life 2 Half-Life 2 and Half-Life: Source Half-Life: Source since Half-Life 2 20th Anniversary, Portal Portal (May 20, 2025 update), and Ветвь Team Fortress 2 Ветвь Team Fortress 2 since the February 18, 2025 patch.

Manual lightmap edition

The lightmap samples are not stored as an embedded texture but rather as raw samples. It is possible to preview, export and import lightmaps for selected or all faces using BSPEntSpy BSPEntSpy.

Lightmaps being preview in BSPEntSpy v1.67.

Смотреть также

Info content.png
This translated page needs to be updated.
You can help by updating the translation.
Also, please make sure the article complies with the alternate languages guide.(en)