Многие зеркальные и 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`ов и/или их разрешение.

Автор: AndrewDragon.
22 февраля 2006, 16:04