Освещение

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)Español (es)Русский (ru)中文 (zh)Translate (Translate)
Серия Воссоздание окружающей обстановки(en) Выскажите свои мысли — Помогите нам воплотить больше идей

Снаряжение | Животные и существа | Муравьиные львы | Лучи и лазеры | Кабели и верёвки | Движущиеся облака | Теория цвета | Битвы | Комбайны | Сжатие ресурсов | Двери | Пыль, туман и дым | Лифты | Переключение карт | Внешнее освещение, солнце, погода и окружение | Взрывы | Огонь | Растительность | Стекло и окна | Хэдкраб | Жизнеспособность | Лестницы | Освещение | Оптимизация | Физические объекты | Сканеры сетчатки | Звук и музыка | Спецэффекты | Ландшафт | Поезда | Турели | Вода | Оружие | Зомби

Освещение является собирательным названием всех систем Source, обеспечивающих создание освещения карты, чтобы она выглядела реалистично. Создатель карт Source должен знать множество аспектов создания освещения, большинство из которых представлены на этой странице.

Руководства

Пример хорошо освещённой комнаты.

Типы

Статичные источники света

Tip.pngСовет: Статичный свет компилируется в лайтмапы(en), освещающие браши(en), модели(en), кубмапы(en) и дают статичные отражения(en). Это упрощает(en) процесс рендеринга, поскольку источники освещения уже прописаны в карту.
light
Неподвижный, все-направленный точечный источник света (различные лампы, огонь и др.).
light_spot
Неподвижный, однонаправленный точечный источник света (например, направленный прожектор). Конический угол луча не должен превышать 90°.
light_environment
Содержит два связанных источника света:
  • Рассеянный 'окружающий' свет (отраженный от облаков и атмосферы в целом), исходящий из всех поверхностей скайбокса.
  • Направленный 'яркий' свет (солнечный или лунный), падающий в одном направлении.
Оба излучаются материалом toolsskybox(en) везде, где он есть на карте. См. также Скайбокс(en).
env_particlelight
Освещает частицы, порождаемые env_smokestack. Частицы не подвержены нормальному освещению. Используйте не более двух.
light_directional (Во всех играх начиная с Left 4 Dead)(также в Slammin' Source Map Tools)
Essentially a second (or third, or…) one of the direct light from light_environment. Like light_environment's direct light, it is emitted only from brush faces textured with toolsskybox. Unlike light_environment, it can be toggled or use lightstyles without significant bugs.
Светящиеся текстуры(en)
Любые Брашевые(en) поверхности со светоизлучающим материалом (определяемым в game_dir/lights.rad), который отбрасывает свет на угол 180°.

Статичные светоприёмники

Браши(en)
Инструмент Масштаб карты освещения(en) диалогового окна Hammer Face Edit Dialog(en) может быть использован для управления резкостью и размытостью лайтмапа на поверхности браша - эффект наиболее заметен в зонах с повышенной контрастностью, например, в затенённых местах. Обратите внимание, что добавление новых источников света не сильно скажется на производительности, но уменьшение масштаба карты освещения (т.е. увеличение разрешения) сразу увеличит размер карты и объём занимаемой памяти.
prop_static
В отличие от других моделей, prop_static светится статично: значение освещения сохраняется для каждой вершины(en), в габарит столкновений(en) модели (или, опционально, отображаемая сетка(en)) используется для расчёта теней.
Существуют следующие опции:
  • disableshadows - Не отбрасывать тени;
  • disablevertexlighting - Сохранять только одно значение освещения для всей модели;
  • disableselfshadowing - Не позволять энтити отбрасывать тень на себя;
  • ignorenormals - При расчёте освещения игнорировать данные нормалей вершин. Это чрезвычайно полезно для листвы и других тонких типов вершин сетки.
  • generatelightmaps (только в Source 2013 Multiplayer Ветвь Team Fortress 2 Garry's Mod) - Allows the props to use lightmaps (like world brushes) if VRAD is run with -StaticPropLighting and the prop is not bumpmapped(en). Lightmap resolution can be configured with lightmapresolutionx and lightmapresolutiony. (только в gmod) Can also be manually defined with the $lightmap Shader parameter(en), including on non-static props.
Warning.pngПредупреждение: There are a number of caveats related to lighting on prop_static. See its page(en) for detailed info.
All non-internal(en) brush entities (Во всех играх начиная с Source 2007)
Use the vrad_brush_cast_shadows keyvalue to allow them to cast lightmap shadows. Might be Отсутствует в FGD! in some games and/or on some entities.

Динамичные источники света

Tip.pngСовет: Динамическое освещение вычисляется в процессе игры, что делает рендеринг более дорогим(en). However, if your game/mod uses Deferred shading(en) or clustered forward/deferred(en), dynamic lighting are Cheap(en) to render, and not restricted to certain number of lights.
env_projectedtexture(en) светит из дверного проёма.
light_dynamic
Простой, однонаправленный динамический свет, который может быть перемещён, повёрнут и отрегулирован.
point_spotlight
Эффект луча от прожектора с дополнительным динамическим источником света в точке падения на поверхность.
npc_spotlight
Прожектор НИП(en), похожий на point_spotlight, но с возможностью отслеживания целей.
env_projectedtexture
Динамический источник, который светит не однотонным цветом, а определённой текстурой и в то же время "вычитает" реалистичные динамические тени. Влияет на все поверхности, которые могут принимать свет, и используется в качестве фонарика игрока в Half-Life 2: Episode Two Half-Life 2: Episode Two.
  • In games since Portal 2 Portal 2, most visible dynamic entities can have texture projection disabled with the disableflashlight keyvalue, and they can have it toggled at runtime with the EnableReceivingFlashlight and DisableReceivingFlashlight inputs. Their shadow-casting behavior, however, must be controlled separately (see under Dynamic Shadows). In earlier games, this behavior can still be controlled via the EF_NOFLASHLIGHT effect flag (see below).
Effect flags(en) Отсутствует в FGD!
Most entities with an Origin(en) KV can have EF_BRIGHTLIGHT or EF_DIMLIGHT applied to them to have them radiate dynamic light of the appropriate brightness.

Динамичные тени

Tip.pngСовет: Динамичные тени отбрасываются только моделями(en) (NPC, физическими пропами и т.д.), и только на брашевые(en) поверхности (от статичных и динамических источников света). Они рассчитываются в реальном времени, поэтому довольно грубы и достаточно затратны(en) для визуализации. However, dynamic shadows in certain mods or games using deferred rendering(en) or clustered rendering(en), are significantly cheaper(en).
Warning.pngПредупреждение: Это не *настоящие* тени, а процедурные (создаваемые кодом) текстуры, проецируемые объектом. В Left 4 Dead, Portal 2 и Alien Swarm направление теней вычисляется на основе энтити, и обусловлено близостью к ней света. Но не в модах Source2006/2007/2013, если там не используются Динамичные RTT углы теней из Source 2007-го года(en).
Warning.pngПредупреждение: Иногда динамические тени проникают сквозь стены и полы, выдавая местоположение игроков или объектов. Если вы столкнулись с этой проблемой, используйте info_no_dynamic_shadow(en). CSM(en) does not have this issue.
Note.pngПримечание: Тени "скользят" по визуальной сетке, если только нет shadowlod, задаваемого в QC(en). Shadow LOD при создании тени используют низкую детализацию. Это не относится к теням на карте (фонарикам, env_projectedtexture(en))
Note.pngПримечание: Если динамические тени пересекаются, то они не сливаются друг с другом или освещением карты. Это может приводить к нежелательным эффектам "удвоения", когда, например, физические пропы находятся на физическом пропе стола. Чтобы обойти эту проблему, вы можете включать и отключать динамические тени требуемых энтити. CSM(en) does not have this issue.
Note.pngПримечание: Динамические тени поддерживают полупрозрачность. Если ваша модель имеет разные уровни прозрачности, они могут отразиться на тени.
shadow_control
Точечная энтити, использует управление динамическими тенями по всей карте, в том числе максимальное расстояние отбрасывания, направление отбрасывания и резкость/рассеяние.
env_cascade_light
Point entity used to control Dynamic shadow projections casted via the tools/toolsskybox(en) texture. Uses Cascade Shadow Map technique. (только в Counter-Strike: Global Offensive Xengine)
info_no_dynamic_shadow
Точечное энтити, использет список брашевых(en) поверхностей, чтобы не отбрасывать динамические тени.
Энтити prop_physics
Имеет значение "shadowcastdist" для переопределения дальности отбрасывания динамических теней.
Энтити prop_dynamic
Имеет значение "disableshadows" и входы "enableshadows" и "disableshadows" для управления отбрасываемыми ими динамическими тенями.
Энтити NPC
Имеет управление prop_dynamic shadow, а также "disablereceiveshadows"
Most dynamic visible entities
Have a shadowcastdist keyvalue to override how far these objects cast Dynamic shadows, a disableshadows keyvalue to control whether they cast Dynamic shadows, and EnableShadow and DisableShadow inputs to control Dynamic shadows cast by them. In games since Portal 2 Portal 2, they also have disableshadowdepth to prevent them casting shadows from env_projectedtexture.
Effect flags(en) Отсутствует в FGD!
Most entities can have various effect flags applied to them to regulate many of the same effects as the aforementioned keyvalues, even if they don't have those keyvalues in your version of Source.

Эффекты Тиндаля

Эффекты Тиндаля вызваны рассеянием света на взвешенных (коллоидных) частицах в прозрачной среде. Например, автомобильные фары в тумане.

  • env_sprite - энтити, используемая для создания всенаправленного свечения или засветки.
  • env_lightglow - асимметричное свечение (для зон с контрастным освещением).
  • env_sun - добавляет яркое пятно с ореолом на небосводе(en) для задания положения Солнца или Луны.
  • Брашевая текстура : models/effects/vol_light001
  • Брашевая текстура : models/effects/vol_light002
  • Модель : models/Effects/vol_light.mdl - используется вместе с prop_static.

Стандартные значения

Яркость
Автомобильные фары 231 223 192
Лампа Комбайнов 147 226 240
Лампа накаливания 254 216 146
Огонь 254 174 10
Лампа дневного света (холодный оттенок) 159 237 215
Лампа дневного света (тёплый оттенок) 255 245 145

Значения для текстур неба(en) смотрите в списке текстур неба(en).

Примечания

  • Именование источников света(en) делает их гораздо тяжелее для рендеринга. Давайте имена только необходимым источникам света. Несколько источников света с одинаковыми именами движку проще обрабатывать, чем с разными.
  • light_dynamic(en) - самый тяжёлый, и на некоторых системах может не отображаться
  • Основные энтити света не связаны с видимыми источниками (например, лампочки). Для этого вам нужна модель. Смотрите список моделей освещения(en).
  • Основные энтити света не "отсвечивают", как будто в тумане или сумерках. Чтобы это заработало, скомпилируйте и запустите карту с включённым HDR(en), или добавьте point_spotlight(en) (с отключенным динамическим освещением, если таковое не нужно) или энтитю env_lightglow(en) или env_sprite.
  • Карты не будут освещены, если вы не запустите VRAD(en) (или эквивалент). VRAD не сможет работать как надо и не будет рассчитывать реалистичное отражение света, если на карте присутствуют утечки(en).
  • Некоторые текстуры сами отбрасывают свет и могут быть созданы с помощью lights.rad(en) в папке мода или в sourcesdk/bin.
  • Перемещаемые объекты не меняют свечения. Их освещение будет рассчитываться только в соответствии с их положением в Хаммере (например, браш из тёмной комнаты не станет ярче, если его перенести в освещённую комнату).
PlacementTip.pngОбходной приём: Parent(en) a prop_dynamic to the moving brush entity, and make the brush entity itself invisible. Tools such as Propper++(en) can convert brush geometry into studio models for this purpose.
  • Light can be reflected off surfaces during compile, indirectly illuminating the environment around them. See $reflectivity.


Команды управления

mat_fullbright 2. Ярко-белые физические модели, кажется, работают с ошибкой; они освещаются правильно во время движения.
mat_fullbright <0-2>
0 - нормальное освещение.
1 - 'полноценное' освещение, когда всё освещено на 100%. This will be enabled by default if there's no lighting data on the map (BSP(en)), or the map was compiled for HDR lighting only and HDR is disabled.
2 был введён в Orange Box и отображает 'только освещение'. Он заменяет все $basetexture текстуры на однотонный цвет, позволяя увидеть что, где и как излучает свет. Ignored for materials with $no_fullbright.
Icon-Bug.pngБаг:Lightmapped props are unaffected by mat_fullbright 1.  (подтверждено в: Day of Defeat: Source Counter-Strike: Source)
Note.pngПримечание: mat_toolsvis replaced mat_fullbright in s&box s&box

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

Внешние ссылки