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