Cubemaps
Многие зеркальные и environment материалы берут информацию о своих отражениях в игре из внешних источников. Этими внешними источниками могут быть Cubemap — текстуры, которые представляют собой 360-градусный рендеринг окружающей местности. Используя Cubemap, зеркальные и environment материалы будут более точно отражать окружающие пространства. Ставить Cubemap и располагать их в пространстве очень просто, но очень важно расположить их правильно, как в эстетическом плане, так и в плане производительности.

Расположение
Чтобы поставить Cubemap на карте, нужно использовать env_cubemap. Когда карта откомпилирована с помощью VBSP, все видимые фэйсы автоматически связывают себя с ближайшими Cubemap. Нужно обратить внимание на то, что Cubemap могут выполнять несколько задач в зависимости от того, как они расположены на карте. Некоторые Cubemap будут использоваться для отражения окружающего пространства на геометрии карты. Другие Cubemap будут использоваться для отражения окружающего пространства на различных, таких как NPC или сам игрок. Располагая Cubemap на карте, нужно следовать нескольким простым правилам, чтобы получить от них максимальную пользу:
  • Если Cubemap предназначены для NPC или игрока, то они должны быть расположены на высоте в 64 юнита, чтобы лучше всего отражать мир для находящихся рядом объектов.

  • Если Cubemap предназначены для отражения окружающего пространства на геометрии, то они должны быть удалены на 16 юнитов от всех брашей.

  • Cubemap должны быть размещены во всех зонах с визуальным контрастом. У коридора с ярким жёлтым светом должен быть свой Cubemap, особенно, если рядом будет комната с темно-синим светом. Без двух отдельных Cubemap отражения и зеркальные эффекты будут отображаться неправильно на геометрии карты.
Компиляция
Cubemap могут быть построены только после сборки карты VBSP и VRAD (соответственно).

Запустите вашу карту и включите какой-нибудь из графиков (showbudget, net_graph), затем наберите в консоли buildcubemaps для построения Cubemap.

В верхнем левом углу вы сможете увидеть каждую грань Cubemap (по 6 на один Cubemap) во время рендеринга.

В зависимости от вашей видеокарты, драйвера и сложности вашей карты процесс может занять от пары секунд до нескольких минут.

После построения Cubemap должна быть перезапущена, чтобы они правильно были применены ко всем граням объектов.
Тестирование
Правильность применения Cubemap лучше всего проверять с помощью консольной команды: impulse 81.

Она заменяет текущую модель оружия на несколько сфер с различной отражающей способностью.

Двигаясь по карте, вы сможете увидеть, какие Cubemap поставлены в данную точку, правильно ли они применены.

Это лучший способ проверить правильность применения Cubemap.
Производительность
env_cubemap позволяет пользователю выбирать размер отображаемой текстуры. С одной стороны увеличение текстуры делает результаты работы Cubemap более лучшими, чем обычно, но с другой — увеличивает требования к текстурной памяти видеокарты.

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

Следует также отметить, что использование большого числа Cubemap на маленьких пространствах может привести к визуальному несоответствию отражений.

Для пространств с большим числом зеркальных поверхностей обычно рекомендуется ставить по одному Cubemap на центр фейса и всё. Это поможет избежать возникновения различных несостыковок и трещин во время движения в игре.

Чтобы определить, насколько загружают систему Cubemap, посмотрите в графу: World Rendering, набрав в консоли команду: +showbudget. Если эта категория расходует на себя слишком много системных ресурсов, возможно, виной этому большое количество Cubemap на карте.

Чтобы быть точно уверенным в этом, уберите в Хаммере все Cubemap и откомпилируйте карту заново, если производительность в игре заметно увеличится, то вам следует уменьшить количество Cubemap или их разрешение.
Вернуться в каталог уроков