Env tonemap controller

Материал из CSM Wiki
Перейти к навигации Перейти к поиску

Оригинал Env_tonemap_controller

Описание

Объект env_tonemap_controller используется для контролирования настроек режима HDR.

Объект env_tonemap_controller действует на всех игроков на карте, у которых включен режим HDR.

Для того, чтобы этот объект работал, необходимо, чтобы в графических настройках игры была включена опция "High Dynamic Range" (HDR), а так же, чтобы карта была скомпилирована с использованием HDR.

Особенности использования

  • Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
  • Объект может быть установлен в любом месте на карте.
  • На карте может быть установлено множество этих объектов
  • Для того, чтобы этот объект работал, необходимо, чтобы в графических настройках игры была включена опция "High Dynamic Range" (HDR), а так же, чтобы карта была скомпилирована с использованием HDR.

Ошибки

Не обнаружены.

Заметки

Для настройки HDR используются только функции:

  • SetAutoExposureMin
  • SetAutoExposureMax
  • SetBloomScale
  • и иногда SetTonemapRate

Балансировка яркости экрана средствами HDR на разных компьютерах может занимать разное количество времени, независимо от использования функции SetTonemapRate. Время балансировки может быть увеличено на слабых компьютерах, на которых FPS не превышает 15. Авторов карты не должно заботить то, как работает HDR на слабых компьютерах, потому что опцию HDR всегда можно отключить в графических настройках игры.

Советы

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

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

  • mat_dynamic_tonemapping (0 или 1, по умолчанию 1) – использовать динамическое изменение яркости экрана в зависимости от текущей яркости экрана; если экран игрока слишком яркий, то яркость экрана автоматически снижается, делая экран немного темнее; если экран игрока темный (игрок находится в тёмном помещении), то яркость экрана автоматически добавляется, чтобы было лучше видно в темноте; при динамическом изменении яркости экрана автоматически изменяется mat_hdr_tonemapscale; в игре CS:S mat_dynamic_tonemapping всегда равен 1;
  • mat_autoexposure_max (от 0.0 до 20.0, по умолчанию 2) – максимальная яркость экрана игрока; чем выше это значение, тем ярче будет экран игрока в темноте; используется только при "mat_dynamic_tonemapping 1";
  • mat_autoexposure_min (от 0.0 до 20.0, по умолчанию 0.5) – минимальная яркость экрана игрока; чем ниже это значение, тем проще игроку видеть при ярком свете; для нормальной освещённости должно использоваться значение ниже 1.0; используется только при "mat_dynamic_tonemapping 1";
  • mat_hdr_tonemapscale (от 0.0 до 20.0, по умолчанию 1) – множитель яркости экрана игрока; можно изменить вручную только при "mat_dynamic_tonemapping 0", в противном случае регулируется автоматически; значение 0.0 - полная темнота (игрок закрыл глаза); значение 0.5 соответствует половине нормальной яркости экрана, 1.0 – нормальной яркости экрана, и выше 1.0 – преувеличенной яркости экрана; зависит от mat_hdr_manual_tonemap_rate;
  • mat_hdr_manual_tonemap_rate (от 0.0 до 20.0, по умолчанию 1) – скорость с которой происходит коррекция яркости экрана игрока; низкое значение приведёт к тому, что заходя с яркой улицы в тёмное помещение (или выходя с тёмного помещение на яркую улицу), яркость экрана будет изменяться в течение нескольких секунд, что во многих случаях для игры CS:S просто не допустимо; высокое значение приведёт к такому быстрому изменению яркости, что будет превышено необходимое значение и яркость может начать изменяться постоянно, прыгая от низких значений до высоких; используется только при "mat_dynamic_tonemapping 1";
  • mat_bloomscale (от 0.0 до 20.0, по умолчанию 1) – множитель свечения ярких областей экрана игрока (засветы); высокое значение может привести к высокой яркости экрана игрока даже в темноте, что будет сильно мешать игровому процессу.

Inputs

  • SetTonemapScale <float> - устанавливает mat_hdr_tonemapscale;
  • BlendTonemapScale <string> - (формат: <цель> <время>) изменяет mat_hdr_tonemapscale от текущего значения до <цель> в течение времени <время>; нужно использовать при "mat_dynamic_tonemapping 0", иначе возможны появления артефактов;
  • SetTonemapRate <float> - устанавливает mat_hdr_manual_tonemap_rate;
  • SetAutoExposureMin <float> - устанавливает минимальную яркость экрана игрока не изменяя mat_autoexposure_min;
  • SetAutoExposureMax <float> - устанавливает минимальную яркость экрана игрока не изменяя mat_autoexposure_max;
  • UseDefaultAutoExposure – установить границы яркости экрана игрока равными mat_autoexposure_min и mat_autoexposure_max;
  • UseDefaultBloomScale – установить множитель свечения ярких областей экрана игрока равным mat_bloomscale;
  • SetBloomScale <float> - установить множитель свечения ярких областей экрана игрока не изменяя mat_bloomscale;
  • SetBloomScaleRange <float> - #возможно не работает#.

Карта

csssdk_env_tonemap_controller.vmf

Используются объекты

  • env_tonemap_controller
  • func_button
  • func_detail
  • prop_static
  • env_cubemap
  • light

Описание карты

Эта карта должна быть скомпилирована с использованием HDR. Так же нужно включить в графических настройках игры опцию "High Dynamic Range". Если вы не сделаете этого объект env_tonemap_controller не будет работать.

Игроки появляются в небольшом тёмном помещении с маленькими окошечками. Будем называть это помещение бункером. Из бункера есть путь на улицу через узкий проход. На улице размещёно два пульта с кнопками. Почему два? Просто так захотелось.

Встав за пульты, игрок будет смотреть в сторону бункера. Кнопки слева направо:

  • Первая кнопка в нажатом состоянии изменяет минимальную яркость экрана (SetAutoExposureMin), делая её очень высокой, что приводит к увеличению яркости на всей карте. Игрокам с такой яркостью будет сложно увидеть других игроков вдалеке и в темноте. Отжав кнопку, настройки вернутся к стандартным.
  • Вторая кнопка в нажатом состоянии изменяет максимальную яркость экрана (SetAutoExposureMax), делая тёмные места на карте более светлыми. Попробуйте зайти в бункер со включенной кнопкой и с выключенной и сами убедитесь в том, что при увеличенной яркости в темноте видно лучше. Так же при выходе из бункера, обратите внимание на то, насколько ярко на улице. Отжав кнопку, настройки вернутся к стандартным.
  • Третья кнопка в нажатом состоянии изменяет множитель свечения (SetBloomScale), что заставляет яркие места на экране светиться ещё ярче. Эффект очень хорошо заметен в самом бункере - если смотреть на улицу через маленькие окошечки в стене (для того они, кстати, и сделаны). В примере установлено очень высокое значение свечения, и как вы можете заметить, при этом появился "шум", похожий на плохой эффект размытия изображения. Отжав кнопку, настройки вернутся к стандартным.
  • Четвёртая кнопка в нажатом состоянии меняет скорость изменения яркости экрана (SetTonemapRate). Обратите внимание, как ме-е-е-дленно изменяется яркость если направить камеру на небо. Опять же рекомендуется забежать в бункер и проверить изменения там, а после – на улице. Отжав кнопку, настройки вернутся к стандартным.
  • Пятая кнопка в нажатом состоянии так же меняет скорость изменения яркости экрана (SetTonemapRate), только в отличие от четвёртой кнопки, эта кнопка увеличивает скорость. Обратите внимание, что яркость долгое время не может подобрать своё оптимальное значение, постоянно "прыгая" от высоких значений к низким. Отжав кнопку, настройки вернутся к стандартным.
  • Шестая кнопка на некоторое время увеличивает или уменьшает множитель яркости экрана (SetTonemapScale). Выглядит это как яркая вспышка или как временная потеря зрения. Эффект яркой вспышки отлично подходит в качестве дополнительного эффекта к какому-нибудь большому взрыву на карте (например: атомному взрыву). На эту кнопку можно нажимать сколько угодно раз.
  • Седьмая кнопка отдельно расположена на другом пульте и используется (BlendTonemapScale) для создания десятисекундной анимации значения mat_hdr_tonemapscale. Так как по умолчанию "mat_dynamic_tonemapping 1", то анимация будет выполняться рывками, потому что значение mat_hdr_tonemapscale будет стремиться к нормальному (уменьшаться), а функция BlendTonemapScale будет увеличивать его, стремясь выставить значение mat_hdr_tonemapscale равным 15.