Icon-Important.pngВажно:Moderator elections are being held. See Valve Developer Community:Moderator elections for more details.

Adding Water/ru

From Valve Developer Community
Jump to: navigation, search

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

"Дорогая" вода

В таком виде выглядит лучше всего, но эта вода является наиболее ресурсозатратным решением в отличие от "дешёвой" воды. Этот шейдер будет отражать мир вокруг, преломлять и туманить мир под ним (на основе линейного интеграла через объем воды) и анимировать текстуру с бамп-картой на поверхности.

Note.pngПримечание:Дорогая вода будет работать правильно только при условии соблюдения всех требований (смотрите ниже).

"Дешевая" вода

Для случаев, когда требуется более простое решение с водой (обычно из-за производительности), можно использовать "дешевую" воду. Эта версия воды не отражает мир вокруг неё, что делает её менее реалистичной, но и более дешевой. Дорогая вода вернется к дешевой воде на видеокартах, которые не способны поддерживать необходимые функции для её корректного отображения. В настройках игры во вкладке Видео можно настроить качество визуального отображения воды.

Требования

Чтобы сделать более эффективно, вода также обладает набором правил относительно ее размещения и использования на карте.

  • В одном PVS может быть только один уровень высоты воды, если вода дорогая.
  • "Дорогая" и "Дешевая" вода не могут быть использованы одновременно в одном PVS.
Note.pngПримечание:Так как 3D Skybox не считается частью PVS, дорогая вода в PVS не мешает использовать дешевую воду в Skybox. Комбинирование дорогой и дешевой воды внутри Skybox тоже кажется возможным, хотя для этого требуется экспериментировать.
Note.pngПримечание:Поскольку 3D Skybox не считается частью PVS, то увидеть дорогую воду в skybox без дорогой воды в PVS приведет к тому, что отражения на воде будут отображаться неточно.
  • Поверхность воды никогда не должна наклоняться по оси Z; она всегда должна быть параллельна линии горизонта на карте.
  • Вода создается путем применения текстуры воды только к верхней поверхности браши, при этом боковые и нижняя часть браша покрываются текстурой tools\toolsnodraw.
  • Сущность water_lod_control управляет дистанцией, на которой дорогая вода переходит в дешевую.
  • Чтобы поверхность воды правильно отображалась на аппаратных средствах ниже DX9, необходим наличие сущности env_cubemap.
  • Ареапорталы и Визкластеры никогда не должны пересекать поверхность воды.
  • Браш воды не закрывает seal (лики) вашей карты.

Вода не работает с браш-объектами и не должна быть привязана к объекту. Брашевые объекты с водой включенной в них не будут правильно отображаться. Единственные исключения это — func_water_analog и func_water.

Note.pngПримечание:Дорогая вода не отражает 3D Skybox, даже если она находится в 3D skybox. Дорогая вода в skybox будет отражать мир. (Однако отражения не будут правильно отображаться, если нет дорогой воды в PVS.)

Создание

Чтобы добавить воду на вашу карту, выполните следующие шаги:

  1. Создайте браш размером с объем воды с помощью инструмента блоков (Block Tool).
  2. Откройте Texture Browser нажав кнопку Browse на панели текстур.
  3. Дважды щелкните по материалу tools\toolsnodraw в Браузере текстур (Texture Browser).
  4. Выберите браш с водой и нажмите кнопку Apply Current Texture, чтобы нанести текстуру tool textures|tools\toolsnodraw.
  5. Выберите инструмент Texture Application, который открывает режим Face Edit.
  6. Щелкните левой кнопкой мыши на верхней грани браша с водой в виде 3D, чтобы выбрать ее.
  7. Нажмите Browse чтобы снова открыть Texture Browser.
  8. Введите water в поле filter. Это покажет вам все текстуры с ключевым словом water в их названии.
  9. Выберите текстуру воды для применения, дважды щелкнув по ней. Одна из текстур воды для тестов nature/water_canals_water2.
  10. Нажмите кнопку Apply на панели Face Edit.
  11. Браш должен быть правильно окрашен водой со всех нужных сторон. Скомпилируйте, запусти и протестируйте свою карту (с включенным VVIS и VRAD).

Чтобы корректно отображались поверхности воды, на карте должен быть skybox (небо), а браш воды должен быть прямоугольной формы. Браш может пересекаться с другими брашами, чтобы скрыть ненужные области. Если вода не отображается правильно (её не видно), значит где-то есть утечка (дыра в карте).

Особенности игры

  • Left 4 Dead 2 Карты L4D2 также требуют наличия env_fog_controller.
  • Alien Swarm Все водные браши в Alien Swarm должны быть прикреплены к func_brush с названием "structure_seal".
  • Portal Чтобы создать радиоактивную воду в Portal, необходимо использовать текстуру nature/hazard_liquid.

Cubemaps и Вода

Cubemaps важно использовать с водными поверхностями. На видеокартах ниже уровня DX9 невозможно отрисовать рефлективный шейдер воды в реальном времени. Для таких карт используется сущность env_cubemap, которая предоставляет предварительно рассчитанную карту окружения для отрисовки воды на картках ниже уровня DX9.

Добавление env_cubemap к водным поверхностям:

  1. Добавьте env_cubemap с помощью инструмента Entity Tool.
  2. Разместите env_cubemap над поверхностью воды, близко к центру.
  3. Дважды щелкните на env_cubemap в 3D виде, чтобы открытьокно Свойства объекта (Properties).
  4. Нажмите на Brush faces в свойствах объекта Object Properties.
  5. Нажмите кнопку Pick... Курсор мыши изменится на иконку пипетки.
  6. С помощью курсора-пипетки кликните на верхнюю поверхность воды, чтобы выбрать её. Поверхность подсветится красным, чтобы показать, что она связана с сущностью env_cubemap.
  7. Закройте окно Object properties (Свойства объекта).
  8. Скомпилируйте и запустите свою карту. После загрузки карты откройте консоль разработчика и введите в консоль команду buildcubemaps. Движок рассчитает карту окружения для каждой сущности env_cubemap и сохранит данные в файл BSP.

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

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