Окружающая среда и постобработка

Godot 4 предоставляет переработанный ресурс Environment, а также новую систему постобработки со множеством готовых эффектов "из коробки".

Примечание

Начиная с Godot 4, настройки производительности/качества Environment определяются в настройках проекта, а не в ресурсе Environment. Это упрощает глобальную настройку, так как больше не требуется индивидуально изменять ресурсы Environment под различные конфигурации оборудования.

Обратите внимание, что большинство настроек производительности/качества Environment видны только после включения переключателя Advanced в настройках проекта.

Окружение

Ресурс Environment хранит всю информацию для управления окружением рендеринга в 2D и 3D. Сюда входят небо, окружающее освещение, тональное отображение, эффекты и коррекции. Сам по себе он не работает, но вы можете активировать его, используя в одном из следующих мест (в порядке приоритета):

Узел Camera3D (высший приоритет)

Enviroment может быть установлен для узла Camera3D. Он будет иметь приоритет над любыми другими настройками.

../../_images/environment_camera.webp

В основном это полезно, когда вы хотите переопределить существующий environment, но в целом лучше использовать опцию ниже.

Предварительный просмотр окружения и солнца (низкий приоритет)

Примечание

Начиная с Godot 4, система предпросмотра окружения и солнца заменяет файл default_env.tres из Godot 3.

Без узлов WorldEnvironment или DirectionalLight3D в сцене редактор отображает окружение и солнце предпросмотра. Отключить это можно через кнопки вверху 3D-редактора:

../../_images/environment_preview_sun_sky_toggle.webp

Клик по трём точкам справа открывает настройки внешнего вида окружения предпросмотра:

../../_images/environment_preview_sun_sky_dialog.webp

Солнце и небо предпросмотра видны только в редакторе. Кнопки внизу диалога добавляют их в сцену как узлы.

Совет

Удерживая Shift при клике на Добавить солнце в сцену или Добавить окружение в сцену, вы добавите оба элемента сразу. Используйте это для ускорения настройки проекта и прототипирования.

Атрибуты камеры (Camera Attributes)

Примечание

В Godot 4 параметры экспозиции (exposure) и глубины резкости (depth of field) были вынесены из ресурса Environment в отдельный ресурс CameraAttributes. Это упрощает независимую настройку этих свойств.

Ресурс CameraAttributes хранит параметры экспозиции и глубины резкости. Он также включает автоматическую экспозицию (automatic exposure), адаптирующуюся к яркости сцены.

Доступны два типа ресурсов CameraAttributes:

  • CameraAttributesPractical: Использует произвольные единицы измерения, более удобные для типичных игровых задач.

  • CameraAttributesPhysical: Использует реальные физические единицы (например, фокусное расстояние в миллиметрах). Рекомендуется для фотореалистичной визуализации.

Оба типа предоставляют одинаковые возможности, но с разными единицами измерения. Для большинства проектов выбирайте CameraAttributesPractical.

Примечание

Использование CameraAttributesPhysical на узле Camera3D блокирует настройки FOV и соотношения сторон в самой камере. При использовании в WorldEnvironment он не переопределяет параметры Camera3D.

Ресурс CameraAttributes можно добавить к узлам Camera3D или WorldEnvironment. Настройки Camera3D имеют приоритет над WorldEnvironment.

Рекомендуется назначать CameraAttributes узлу Camera3D, а не WorldEnvironment. Это предотвращает отображение глубины резкости в 3D-редакторе (кроме режима предпросмотра камеры).

Параметры окружения

Ниже представлено подробное описание всех параметров окружения и их назначения.

Фон

Раздел Background содержит настройки заполнения фона (области экрана, где объекты не отрисованы). Фон не только служит для отображения изображения или цвета. По умолчанию он также влияет на окружающее и отражённое освещение объектов. Это называется освещением на основе изображений (IBL).

В результате фоновое небо может значительно влиять на общий вид сцены, даже если небо никогда не видно напрямую. Это следует учитывать при настройке освещения сцены.

../../_images/environment_background1.webp

Доступны несколько режимов фона:

  • Clear Color использует цвет очистки по умолчанию из настроек проекта. Фон будет постоянного цвета.

  • Custom Color подобен Clear Color, но с пользовательским значением цвета.

  • Sky позволяет определить материал фонового неба (см. ниже). По умолчанию объекты в сцене будут отражать этот материал неба и поглощать из него окружающий свет.

  • Canvas отображает 2D-сцену как фон 3D-сцены. Это можно использовать для отображения эффектов окружения в 2D-рендеринге, таких как свечение в 2D.

  • Keep does not draw any sky, keeping what was present on previous frames instead. This improves performance in purely indoor scenes, but creates a "hall of mirrors" visual glitch if the sky is visible at any time. - Camera Feed displays a CameraFeed from a physical camera as the background, useful for AR games on mobile devices.

Материалы неба

При использовании режима фона Sky (или когда режим окружающего/отражённого света установлен в Sky) в ресурсе Environment становится доступен подресурс Sky. Его редактирование позволяет создать ресурс SkyMaterial внутри Sky.

Доступны 3 встроенных материала неба:

  • PanoramaSkyMaterial: Использует панорамное изображение неба 360° (рекомендуется соотношение 2:1). Для высокого динамического диапазона изображение должно быть в HDR-совместимом формате (.hdr или .exr), а не в стандартном (.png или .jpg).

  • ProceduralSkyMaterial: Использует процедурно генерируемое небо с настраиваемыми цветами земли, солнца, неба и горизонта. Это тип неба, используемый в предпросмотре редактора. Позиция солнца автоматически определяется по первым 4 узлам DirectionalLight3D в сцене. Одновременно может быть до 4 солнц.

  • PhysicalSkyMaterial: Использует физически корректное процедурное небо с настраиваемыми параметрами рассеивания. Позиция солнца автоматически определяется по первому узлу DirectionalLight3D в сцене. PhysicalSkyMaterial требует немного больше ресурсов для рендеринга по сравнению с ProceduralSkyMaterial. Одновременно может быть только 1 солнце.

Панорамные изображения неба иногда называют HDRI (изображения с высоким динамическим диапазоном). Бесплатные лицензированные HDRI можно найти на Poly Haven.

Примечание

Текстуры PanoramaSkyMaterial в HDR с очень яркими участками (например, реальные фотографии с видимым солнцем) могут вызывать видимые блики на окружающем и зеркальном отражениях. Это происходит из-за слишком высокой пиковой экспозиции текстуры.

Чтобы решить эту проблему, выберите панорамную текстуру в панели FileSystem, перейдите в панель Import, включите HDR Clamp Exposure и нажмите Reimport.

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

Окружающий свет

Окружающий свет (как определено здесь) — это тип света, который влияет на каждую геометрическую фигуру с одинаковой интенсивностью. Он глобален и не зависит от источников света, добавленных в сцену. Окружающий свет является одной из двух составляющих освещения на основе изображений. В отличие от отражённого света, окружающий свет не изменяется в зависимости от позиции камеры и угла обзора.

Доступны несколько типов окружающего света:

  • Background: Источник окружающего света из фона, такого как небо, пользовательский цвет или цвет очистки (по умолчанию). Интенсивность окружающего света будет варьироваться в зависимости от содержимого изображения неба, что может дать более визуально привлекательное окружающее освещение. Для видимости этого режима небо должно быть установлено как фон.

  • Disabled: Не использовать окружающий свет. Полезно для полностью закрытых сцен.

  • Color: Использовать постоянный цвет для окружающего света, игнорируя фоновое небо. Интенсивность окружающего света будет одинаковой со всех сторон, что может сделать освещение сцены более плоским. Полезно для закрытых сцен, где абсолютно чёрные тени могут быть слишком тёмными, или для максимизации производительности на слабых устройствах.

  • Sky: Источник окружающего света из указанного неба, даже если фон установлен в режим, отличный от Sky. Если фоновый режим уже Sky, этот режим ведёт себя идентично Background.

Когда режим окружающего света установлен в Sky или Background (и фон установлен в Sky), можно смешивать цвет окружающего света и небо с помощью свойства Sky Contribution. По умолчанию это значение 1.0, что означает использование только окружающего неба. Цвет окружающего света игнорируется, пока Sky Contribution не уменьшится ниже 1.0.

Вот сравнение того, как разный окружающий свет влияет на сцену:

../../_images/environment_ambient2.webp

Наконец, есть настройка Energy, которая является множителем. Она полезна при работе с HDR.

В целом, полагаться только на окружающий свет следует только для простых сцен или больших открытых пространств. Это также можно делать для повышения производительности. Окружающий свет быстро рендерится, но не обеспечивает наилучшего качества освещения. Лучше генерировать окружающий свет из ReflectionProbe, VoxelGI или SDFGI, так как они более точно имитируют распространение непрямого света. Ниже приведено сравнение качества между использованием плоского цвета окружающего света и VoxelGI:

../../_images/environment_ambient_comparison.webp

Использование одного из описанных методов заменяет постоянное окружающее освещение на освещение от проб.

Отражённый свет

Отражённый свет (также называемый зеркальным светом) — вторая составляющая освещения на основе изображений.

Отражённый свет можно установить в один из 3 режимов:

  • Background: Отражение от фона (небо, пользовательский цвет или цвет очистки, по умолчанию).

  • Disabled: Не отражать свет из окружения. Полезно для закрытых сцен или для максимальной производительности на слабых устройствах.

  • Sky: Отражение от фонового неба, даже если фон установлен в режим, отличный от Sky. Если фон уже Sky, этот режим идентичен Background.

Карта тональности

Tonemap выбирает алгоритм тональной компрессии, который будет применяться к сцене, из списка стандартных алгоритмов, используемых в кино- и игровой индустрии. Режимы тональной компрессии, отличные от Linear, используются для того, чтобы сделать светлые и тёмные области более однородными, а также избежать обрезки ярких бликов. Каждый алгоритм имеет свои характеристики производительности, которые следует учитывать при выборе тональной компрессии.

Опции тонального отображения (Tone Mapping):

  • Mode: Режим тональной компрессии, который следует использовать.

    • Linear: Не изменяет цветовые данные, что приводит к линейной кривой тональной компрессии, которая неестественно обрезает яркие значения, из-за чего яркие участки выглядят пересвеченными. Самый простой и быстрый инструмент тональной компрессии.

    • Reinhard: Простая кривая тональной компрессии, которая сглаживает яркие значения для предотвращения обрезки. В результате изображение может выглядеть тусклым и малоконтрастным. Работает медленнее, чем «Linear». Если для White оставить значение по умолчанию 1.0, «Reinhard» создаёт изображение, идентичное «Linear».

    • Filmic: Использует кривую тональной компрессии, подобную киноплёночной, чтобы предотвратить обрезку ярких значений и обеспечить лучшую контрастность, чем Reinhard. Немного медленнее, чем Reinhard.

    • ACES: Использует высококонтрастную кривую тональной компрессии, подобную киноплёночной, и уменьшает насыщенность ярких участков для более реалистичного изображения. Немного медленнее, чем Filmic.

    • AgX: Uses a film-like tonemapping curve and desaturates bright values for a more realistic appearance. Better than other tonemappers at maintaining the hue of colors as they become brighter. The slowest tonemapping option.

  • Exposure: Корректирует яркость значений до их передачи в тональный корректор. Более высокие значения Exposure приводят к более яркому изображению. Значения, переданные в тональный корректор, также будут умножены на 2.0 и 1.8 для Filmic и ACES соответственно, чтобы получить такую же видимую яркость, как в линейном корректоре.

  • White: The white reference value for tonemapping, which indicates where bright white is located in the scale of values provided to the tonemapper. For photorealistic lighting, recommended values are between 6.0 and 8.0. Higher values result in less blown out highlights, but may make the scene appear lower contrast. White is not available when using Linear. If you're using AGX, the mobile renderer, and HDR 2D is disabled, then the value set here will be ignored, and a value of 2.0 will be used instead.

  • AGX Contrast: Only available when using AGX. Increasing this makes dark values darker, and bright values brighter. It creates better results than the contrast option in the adjustment section at no additional performance cost.

Эффекты промежуточной и последующей обработки

Ресурс Environment поддерживает множество популярных промежуточных и постобрабатывающих эффектов.

Примечание

Экранные эффекты, такие как SSR, SSAO, SSIL и свечение, не работают с геометрией вне вида камеры или перекрытой другими объектами. Учитывайте это при настройке, чтобы избежать отвлекающих изменений во время игры.

Screen-Space Reflections (SSR) (отражения в экранном пространстве)

Эта функция доступна только в рендерере Forward+, но не в Mobile или Compatibility.

Хотя Godot поддерживает несколько источников данных отражений, таких как Датчики отражения, они могут не обеспечивать достаточной детализации во всех ситуациях. Экранные отражения наиболее эффективны при контакте объектов (объект на полу, на столе, плавающий на воде и т.д.).

../../_images/environment_ssr.webp

Помимо большей детализации, экранные отражения работают в реальном времени (в отличие от предварительно рассчитываемых отражений). Это позволяет персонажам, автомобилям и т.д. отражаться на окружающих поверхностях при движении.

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

Для более точной настройки техники имеется несколько параметров, управляемых пользователем:

  • Max Steps: Determines the maximum length of the reflection. The bigger this number, the more costly it is to compute.

  • Fade In (Появление): Позволяет настроить кривую появления, что полезно для смягчения области контакта.

  • Fade Out (Затухание): Позволяет настроить кривую исчезновения для плавного затухания на пределе шагов.

  • Depth Tolerance (Допуск глубины): Позволяет лучам экранного пространства проходить за объекты. Лучи рассматривают объекты с указанной глубиной при определении возможности прохождения. Более высокие значения уменьшают "разрывы" в отражениях, ценой физически некорректных отражений от некоторых объектов.

Additionally, you can adjust the quality of SSR in the project settings by toggling Rendering > Environment > Screen Space Reflection > Half Size. By default, screen-space reflections are rendered at half resolution for performance reasons. Disabling this setting will make the effect render at full resolution, which improves quality at the cost of increased GPU utilization.

Примечание

Keep in mind that screen-space reflections only work for reflecting opaque geometry. Transparent materials won't be reflected, as they don't write to the depth buffer. This also applies to shaders that use hint_screen_texture or hint_depth_texture uniforms.

Затенение окружающего пространства экрана (SSAO)

This feature is only available when using the Forward+ and Compatibility renderers, not Mobile.

Как упоминалось в разделе Ambient, области, недоступные для света (вне радиуса или в тени), освещаются окружающим светом. Godot имитирует это с помощью VoxelGI, ReflectionProbe, неба или постоянного цвета. Однако эти методы работают на крупном масштабе, а не на уровне мелкой геометрии.

Постоянный цвет окружающей среды и Sky везде одинаковы, в то время как зонды GI и Reflection имеют больше локальных деталей, но недостаточно для моделирования ситуаций, когда свет не может заполнить внутренние полые или вогнутые элементы.

Это можно смоделировать с помощью Screen Space Ambient Occlusion. Как видно на изображении ниже, его цель - сделать вогнутые области темнее, имитируя более узкий путь для проникновения света:

../../_images/environment_ssao.webp

Распространённая ошибка: включить эффект, добавить источник света, но не увидеть разницы. SSAO влияет только на окружающий свет, не на прямой.

Поэтому на изображении выше эффект менее заметен под прямым светом (слева). Если вы хотите включить SSAO для влияния на прямое освещение, используйте параметр Light Affect. Хотя это физически некорректно, некоторым нравится такой вид.

SSAO лучше всего выглядит в сочетании с реальным источником непрямого света, таким как VoxelGI:

../../_images/environment_ssao2.webp

Настройка SSAO возможна через параметры:

../../_images/environment_ssao_parameters.webp
  • Radius (Радиус): Расстояние, на котором объекты могут перекрывать друг друга. Большие значения увеличивают область эффекта ценой производительности и качества.

  • Intensity (Интенсивность): Основная интенсивность эффекта. Более высокие значения дают более тёмное перекрытие. Если SSAO, это экранный эффект, рекомендуется использовать умеренные значения, так как слишком сильный SSAO может отвлекать во время игры.

  • Power (Мощность): Распределение перекрытия. Более высокие значения дают более тёмное перекрытие с резким спадом.

  • Detail (Детализация): Сила дополнительного уровня детализации. Высокие значения подчёркивают детали, но могут вызывать артефакты сглаживания.

  • Horizon: Порог определения перекрытия точки поверхности, представленный как угол от горизонта в диапазоне 0.0-1.0. Значение 1.0 означает отсутствие перекрытия.

  • Sharpness: Степень размытия эффекта SSAO на границах объектов. Слишком высокое значение вызывает ступенчатость на краях, слишком низкое — размытость.

  • Light Affect: Интенсивность SSAO при прямом освещении. В реальности окружающее перекрытие влияет только на непрямой свет. Значения выше 0 делают SSAO видимым при прямом свете. Значения выше 0.0 физически некорректны, но нравятся некоторым художникам.

  • AO Channel Affect: Интенсивность SSAO на материалах с текстурой AO. Значения выше 0.0 делают эффект SSAO видимым в областях, затемнённых текстурами AO.

Additionally, you can adjust the quality of SSAO in the project settings' Rendering > Environment > SSAO section:

  • Quality: Sets the quality of the screen-space ambient occlusion effect. Higher values take more samples and so will result in better quality at the cost of performance. Setting this to Ultra will use the Adaptive Target setting (see below).

  • Half Size: If true, screen-space ambient occlusion will be rendered at half size and then upscaled before being added to the scene. This is significantly faster but may miss small details. If false, screen-space ambient occlusion will be rendered at full size.

  • Adaptive Target: Quality target to use when Quality is set to Ultra. A value of 0.0 provides a quality and speed similar to Medium while a value of 1.0 provides much higher quality than any of the other settings at the cost of performance.

  • Blur Passes: Number of blur passes to use when computing screen-space ambient occlusion. A higher number will result in a smoother look, but will be slower to compute and will have less high-frequency detail.

  • Fadeout From: Distance at which the screen-space ambient occlusion effect starts to fade out. Use this hide ambient occlusion from far away.

  • Fadeout To: Distance at which the screen-space ambient occlusion is fully faded out. Use this hide ambient occlusion from far away.

Примечание

Since Godot 4.6, a simplified version of SSAO is available in the Compatibility renderer. This implementation has a different look, but should perform significantly better on low-end devices compared to SSAO in Forward+.

When using the Compatibility renderer, only the Radius and Intensity parameters can be adjusted.

Screen-Space Indirect Lighting (SSIL) (непрямое освещение в экранном пространстве)

Эта функция доступна только в рендерере Forward+, но не в Mobile или Compatibility.

SSIL обеспечивает непрямое освещение для мелких деталей или динамической геометрии, не охваченной другими техниками глобального освещения. Это касается отражённого рассеянного света и эмиссионных материалов. При самостоятельном использовании SSIL эффект может быть малозаметным, что ожидаемо.

Вместо этого SSIL предназначен как дополнение к другим техникам глобального освещения (VoxelGI, SDFGI, LightmapGI). SSIL также обеспечивает лёгкий эффект окружающего перекрытия, похожий на SSAO, но с меньшей детализацией.

Эта функция обеспечивает только непрямое освещение. Она не является полноценным решением для глобального освещения. Это отличает её от глобального освещения в экранном пространстве (SSGI), предлагаемого другими 3D-движками. SSIL можно комбинировать с SSR и/или SSAO для повышения визуального качества (но в ущерб производительности).

Настройка SSIL возможна через параметры:

  • Radius: Расстояние распространения отражённого света. Большие значения увеличивают дальность, но могут вызывать артефакты недодискретизации (длинные лучи вокруг источников света).

  • Intensity: Множитель яркости непрямого освещения. Более высокие значения дают более яркий свет.

  • Sharpness: Степень размытия эффекта на границах объектов. Слишком высокое значение вызывает ступенчатость, слишком низкое — размытость краёв.

  • Normal Rejection: Степень отбраковки по нормалям. Использует нормаль точки для отбраковки выборок, направленных от текущего пикселя. Необходима для предотвращения "утечки света" при освещении одной стороны объекта. Можно отключить для эмиссионных объектов, излучающих свет с невидимых сторон.

Additionally, you can adjust the quality of SSIL in the project settings' Rendering > Environment > SSIL section:

  • Quality: Sets the quality of the screen-space ambient occlusion effect. Higher values take more samples and so will result in better quality, at the cost of performance. Setting to Ultra will use the Adaptive Target setting (see below).

  • Half Size: If true, screen-space ambient occlusion will be rendered at half size and then upscaled before being added to the scene. This is significantly faster but may miss small details. If false, screen-space ambient occlusion will be rendered at full size.

  • Adaptive Target: Quality target to use when Quality is set to Ultra. A value of 0.0 provides a quality and speed similar to Medium while a value of 1.0 provides much higher quality than any of the other settings at the cost of performance. When using the adaptive target, the performance cost scales with the complexity of the scene.

  • Blur Passes: Number of blur passes to use when computing screen-space indirect lighting. A higher number will result in a smoother look, but will be slower to compute and will have less high-frequency detail.

  • Fadeout From: Distance at which the screen-space indirect lighting effect starts to fade out. Use this to hide screen-space indirect lighting from far away.

  • Fadeout To: Distance at which the screen-space indirect lighting is fully faded out. Use this to hide screen-space indirect lighting from far away.

../../_images/environment_ssil.webp

Глобальное освещение на основе полей знаковых расстояний (SDFGI)

Эта функция доступна только в рендерере Forward+, но не в Mobile или Compatibility.

Глобальное освещение на основе полей знаковых расстояний (SDFGI) — это форма глобального освещения в реальном времени. Это не экранный эффект, что означает возможность освещения объектов вне экрана (в отличие от SSIL).

См. также

Инструкции по настройке этой технологии глобального освещения смотрите в Глобальное освещение на основе полей знаковых расстояний (SDFGI).

../../_images/environment_sdfgi.webp

Свечение

Примечание

При использовании метода рендеринга Compatibility реализация эффекта свечения отличается, и некоторые свойства недоступны/скрыты в инспекторе: Levels (Уровни), Normalized (Нормализация), Strength (Сила), Blend Mode (Режим смешивания), Mix (Смешивание), Map (Карта) и Map Strength (Сила карты).

Эта реализация оптимизирована для работы на слабых устройствах и поэтому менее гибкая.

В фотографии и кино, когда количество света превышает максимальную яркость (luminance), поддерживаемую носителем, оно обычно "растекается" на более тёмные области изображения. В Godot это моделируется эффектом Glow (Свечение).

../../_images/environment_glow1.webp

По умолчанию, даже если эффект включен, он будет слабым или невидимым. Чтобы он действительно проявился, должно произойти одно из двух условий:

    1. Свет в пикселе превышает значение HDR Threshold (где 0 - весь свет превышает его, а 1.0 - свет превышает значение tonemapper White ). Обычно ожидается, что это значение будет равно 1.0, но оно может быть снижено, чтобы позволить пропустить больше света. Существует также дополнительный параметр, HDR Scale, который позволяет масштабировать (делать ярче или темнее) свет, превышающий порог.

../../_images/environment_glow_threshold.webp
    1. Свойство Bloom (Свечение) имеет значение больше 0.0. С его ростом весь экран отправляется в процессор свечения в большем количестве.

../../_images/environment_glow_bloom.webp

И то, и другое приведёт к тому, что свет начнет вытекать из более ярких участков.

Когда свечение становится видимым, им можно управлять с помощью нескольких дополнительных параметров:

  • Intensity (Интенсивность) — общий масштаб эффекта. Его можно усилить или ослабить (0.0 полностью отключает эффект).

  • Strength (Сила) определяет интенсивность обработки ядра гауссова фильтра. Большие значения приводят к насыщению фильтра и его расширению наружу. Как правило, изменять этот параметр не требуется, так как размер можно эффективнее настраивать с помощью Levels (Уровней).

Blend Mode (режим смешивания) эффекта также можно изменить:

  • Additive (Аддитивный) — самый сильный режим, так как он просто добавляет эффект свечения поверх изображения без смешивания. Обычно он слишком интенсивен для использования, но может хорошо смотреться с низкой интенсивностью Bloom (создает эффект, похожий на сон).

  • Screen гарантирует, что свечение никогда не будет ярче самого себя, и отлично работает в качестве универсального средства.

  • Softlight - самый слабый режим по умолчанию, создающий лишь едва заметное нарушение цвета вокруг объектов. Этот режим лучше всего работает в тёмных сценах.

  • Replace (Заменить) можно использовать для размытия всего экрана или отладки эффекта. Этот режим показывает только эффект свечения без исходного изображения.

  • Mix (Смешивание) объединяет эффект свечения с основным изображением. Это позволяет добиться большего художественного контроля. Коэффициент смешивания регулируется свойством Mix, которое появляется над режимом смешивания (только когда выбран режим Mix). Высокие значения коэффициента смешивания будут затемнять изображение, если не увеличить значение Bloom.

Чтобы изменить размер и форму эффекта свечения, Godot предоставляет Levels. Маленькие уровни - это сильное свечение, которое появляется вокруг объектов, а большие уровни - это туманное свечение, покрывающее весь экран:

../../_images/environment_glow_layers.webp

Однако настоящая сила этой системы заключается в возможности комбинировать уровни для создания более интересных узоров свечения:

../../_images/environment_glow_layers2.webp

Наконец, эффект свечения можно контролировать с помощью карты свечения (glow map) — текстуры, которая определяет яркость свечения для каждой части экрана. Эта текстура может быть окрашена для тонирования эффекта свечения в соответствующий цвет. Текстура растягивается под размер вьюпорта, поэтому рекомендуется использовать соотношение сторон, соответствующее вашему вьюпорту (например, 16:9), чтобы избежать видимых искажений.

Основные варианты использования текстуры карты свечения:

  • Создание эффекта "грязи на объективе" с помощью текстуры с узором грязи.

  • Уменьшение интенсивности свечения на определённых участках экрана с помощью градиентной текстуры.

../../_images/environment_glow_map.webp

По умолчанию Glow (Свечение) использует фильтр бикубического масштабирования на настольных платформах и фильтр билинейного масштабирования на мобильных платформах. Фильтр бикубического масштабирования обеспечивает более высокое качество с менее блочным внешним видом, но он снижает производительность графического процессора, что может быть значительным для интегрированной графики. Режим масштабирования можно контролировать с помощью настроек проекта Rendering > Environment > Glow > Upscale Mode. Этот параметр эффективен только при использовании рендереров Forward+ или Mobile, так как Compatibility использует другую реализацию свечения.

../../_images/environment_and_post_processing_glow_scale_mode.webp

Использование свечения в 2D

Существует два способа использования свечения в 2D:

  • Since Godot 4.2, you can enable HDR for 2D rendering when using the Forward+ and Mobile rendering methods. This has a performance cost, but it allows for a greater dynamic range. This also allows you to control which objects glow using their individual Modulate or Self Modulate properties (use the Intensity slider in the color picker). Enabling HDR can also reduce banding in the 2D rendering output.

    • Чтобы включить HDR в 2D, откройте Настройки проекта, активируйте Rendering > Viewport > HDR 2D и перезапустите редактор.

  • Для максимальной производительности можно оставить HDR отключённым для 2D-рендеринга. Однако это уменьшит контроль над свечением объектов.

    • Включите свечение, установите режим фона окружения на Canvas (Холст), затем уменьшите Glow HDR Threshold (Порог HDR свечения), чтобы свечение распространялось и на не пересвеченные пиксели. Чтобы предотвратить свечение элементов UI, сделайте их дочерними для узла CanvasLayer. Контролировать, какие слои подвержены свечению, можно через свойство Background > Canvas Max Layer (Фон > Макс. слой холста) ресурса Environment.

Пример использования свечения в 2D-сцене

Example of using glow in a 2D scene. HDR 2D is enabled, while coins and the bullet have their Modulate property increased to overbright values using the Intensity slider in the color picker.

Предупреждение

2D-рендерер работает в линейном цветовом пространстве, если включена настройка проекта Rendering > Viewport > HDR 2D, поэтому подсказка source_color также должна использоваться для uniform-семплеров, которые используются как цветовой вход в шейдерах canvas_item. Если этого не сделать, текстуры будут выглядеть выцветшими.

Если 2D HDR отключен, source_color продолжит корректно работать в шейдерах canvas_item, поэтому рекомендуется использовать его в соответствующих случаях в любом случае.

Использование линейного цветового пространства также приводит к изменению альфа-смешивания. Спрайты с низкими значениями непрозрачности, как правило, становятся более заметными, а рендеринг шрифтов становится более жирным, поскольку пикселы с низкой непрозрачностью, полученные в результате сглаживания шрифта, становятся более заметными. Это также влияет на рендеринг в редакторе.

Использование свечения для размытия экрана

Свечение можно использовать для размытия всего вьюпорта, что полезно для размытия фона при открытом меню. Только 3D-рендеринг будет затронут, если режим фона окружения не установлен в Canvas. Чтобы предотвратить размытие элементов UI при использовании режима фона Canvas, сделайте их дочерними для узла CanvasLayer. Вы можете контролировать, какие слои затрагиваются этим эффектом размытия, с помощью свойства Background > Canvas Max Layer ресурса Environment.

Чтобы использовать свечение в качестве средства размытия:

  • Включите Normalized (Нормализация) и настройте уровни по своему усмотрению. Увеличение индексов более высоких уровней приведет к более размытому изображению. Рекомендуется оставить один уровень свечения на 1.0, а остальные на 0.0, но это не обязательно. Учтите, что итоговый вид будет зависеть от разрешения вьюпорта.

  • Установите Intensity (Интенсивность) в 1.0 и Bloom (Свечение) в 1.0.

  • Установите режим смешивания в Replace (Заменить) и HDR Luminance Cap (Ограничение яркости HDR) в 1.0.

Пример использования свечения для размытия 2D-рендеринга на фоне меню

Пример использования свечения для размытия 2D-рендеринга на фоне меню

Туман

Примечание

Этот раздел относится только к необъёмному туману. Можно одновременно использовать и необъёмный туман, и объёмный туман.

Туман, как в реальной жизни, заставляет удалённые объекты растворяться в однородном цвете. В Godot есть два вида тумана:

  • Depth Fog: Применяется в зависимости от расстояния до камеры.

  • Height Fog: Применяется к любым объектам ниже (или выше) определённой высоты, независимо от расстояния до камеры.

../../_images/environment_fog_depth_height.webp

Both of these fog types can have their curves tweaked, making their transition more or less sharp.

Чтобы сделать эффект тумана более интересным, можно настроить два свойства:

The first is Sun Scatter, which makes use of the DirectionalLight3D's color and energy in the current scene. When looking toward the directional light (usually a sun), the fog will be tinted according to the light's color to simulate the sunlight passing through the fog.

Второй параметр — Aerial Perspective, который подкрашивает цвет тумана в соответствии с цветом неба, чтобы лучше совместить его с фоном. Более высокие значения приведут к более интенсивному подкрашиванию, а значение 1.0 полностью заменит обычный цвет тумана на воздушную перспективу. Это можно использовать на больших уровнях открытого мира для создания лучшего ощущения глубины или для устранения цветовых разрывов между небом и туманом.

Если и Sun Scatter, и Aerial Perspective больше 0.0, то поверх воздушной перспективы применяется солнечное рассеяние.

Примечание

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

Объемный туман

Объёмный туман обеспечивает реалистичный эффект тумана, при этом цвет тумана изменяется под воздействием проходящего через него света.

См. также

См. документацию по объёмному туману для настройки этого эффекта.

Adjustments (настройки)

В конце обработки Godot предлагает возможность выполнить некоторые стандартные корректировки изображения.

../../_images/environment_adjustments.webp

Базовые настройки ЯКН (Яркость, Контраст, Насыщенность)

Первая настройка позволяет изменять типичные свойства Brightness (Яркость), Contrast (Контраст) и Saturation (Насыщенность):

../../_images/environment_adjustments_bcs.webp

Коррекция цвета с использованием 1D-градиента

Вторая настройка осуществляется с помощью градиента для коррекции цвета. Это можно сделать, назначив ресурс GradientTexture1D в свойство Color Correction или загрузив текстуру с горизонтальным градиентом. Левая часть градиента соответствует чёрному цвету в исходном изображении, а правая часть — белому.

Линейный чёрно-белый градиент, как показанный ниже, не даст никакого эффекта:

../../_images/environment_adjustments_default_gradient.webp

Но создание собственных позволит сопоставить каждый канал с отдельным цветом:

../../_images/environment_adjustments_custom_gradient.webp

Коррекция цвета с использованием 3D LUT

Для коррекции цвета также может использоваться 3D текстура поиска (Look-Up-Texture, LUT). Это специальная текстура, используемая для раздельного изменения цветовых каналов (красного, зелёного, синего). Такая текстура может иметь любое разрешение, но поскольку данные коррекции цвета низкочастотные, для производительности рекомендуется использовать низкие разрешения. Типичные разрешения LUT: 17×17×17, 33×33×33, 51×51×51 или 65×65×65 (нечётный размер обеспечивает лучшую интерполяцию).

Для работы текстуры поиска её режим импорта должен быть установлен на Texture3D в панели Import (вместо обычного Texture2D):

../../_images/environment_adjustments_3d_lut_import.webp

Также обязательно настройте количество горизонтальных и вертикальных срезов при импорте. Без этого LUT текстура не будет правильно влиять на вьюпорт. Вы можете предпросмотреть импортированную 3D текстуру, дважды кликнув по ней в панели FileSystem, а затем в инспекторе пролистывая слои текстуры.

Вы можете использовать этот нейтральный шаблон LUT 33×33×33 как основу (нажмите правой кнопкой мыши и выберите Сохранить как…):

../../_images/environment_adjustments_3d_lut_template.webp

Для приведённого шаблона LUT после смены режима импорта на Texture3D установите количество Horizontal (горизонтальных) срезов на 33 в панели Import и нажмите Reimport. После загрузки этой LUT в свойство Color Correction видимых изменений пока не будет, так как эта текстура предназначена быть нейтральной отправной точкой.

Этот шаблон LUT можно модифицировать в графическом редакторе для придания изображению другого настроения. Типичный рабочий процесс: разместить LUT рядом со скриншотом 3D вьюпорта проекта, затем в графическом редакторе одновременно изменять и LUT, и скриншот. Затем LUT можно сохранить и применить в игровом движке для выполнения той же коррекции цвета в реальном времени.

Например, модификация шаблона LUT в графическом редакторе для получения эффекта "сепия" (sepia) даёт результат, показанный справа:

../../_images/environment_adjustments_3d_lut_comparison.webp

Примечание

Коррекции и настройки применяются после тональной коррекции. Это означает, что свойства тональной коррекции, определённые выше, всё ещё влияют на изображение при включённых настройках.

Параметры атрибутов камеры

Godot has two kinds of camera attributes, physical and practical. When using CameraAttributesPhysical instead of CameraAttributesPractical, depth of field is automatically computed from the camera attributes' focus distance, focal length, and aperture. In addition, Frutsum options are available.

Глубина резкости / Дальнее размытие

Этот эффект имитирует фокусное расстояние камер. Он размывает объекты за заданным диапазоном. Имеет начальную Distance (Дистанцию) с областью Transition (Перехода) в мировых единицах:

../../_images/environment_dof_far.webp

Параметр Amount (Интенсивность) управляет степенью размытия. Для сильных размытий может потребоваться настройка качества глубины резкости в расширенных настройках проекта, чтобы избежать артефактов.

Глубина резкости / Близкое размытие

Этот эффект имитирует фокусное расстояние камер. Он размывает объекты вблизи камеры (действует в противоположном направлении, чем размытие вдали). Имеет начальную Distance (Дистанцию) с областью Transition (Перехода) в мировых единицах:

../../_images/environment_dof_near.webp

Параметр Amount управляет степенью размытия. Для больших размытий может потребоваться настройка параметра Quality, чтобы избежать артефактов.

Обычно оба размытия используются вместе, чтобы сфокусировать внимание зрителя на определённом объекте или создать так называемый эффект "tilt shift".

../../_images/environment_mixed_blur.webp

Экспозиция

Этот параметр умножает общую яркость сцены, видимую с камеры. Более высокие значения приводят к визуально более яркой сцене.

Автоматическая экспозиция

Эта функция доступна только в рендерере Forward+, но не в Mobile или Compatibility.

Хотя в большинстве случаев освещение и текстурирование контролируются художником, Godot поддерживает базовую реализацию высокого динамического диапазона с помощью механизма автоматической экспозиции. Обычно это используется для добавления реализма при сочетании затемнённых интерьеров и ярких наружных сцен. Автоматическая экспозиция имитирует поведение камеры (или глаза), адаптируясь к переходам между светлыми и тёмными зонами с разным уровнем освещённости.

Примечание

Автоматическая экспозиция требует оценки яркости сцены каждый кадр, что умеренно влияет на производительность. Поэтому рекомендуется оставлять её отключённой, если она не вносит существенных изменений в вашу сцену.

../../_images/environment_hdr_autoexp.webp

Самый простой способ использовать автоэкспозицию - убедиться, что наружное освещение (или другое сильное освещение) имеет энергию больше 1.0. Это делается путём изменения множителя Energy (на самом светильнике). Для согласованности Sky обычно тоже нужно использовать множитель энергии, чтобы соответствовать направленному свету. Обычно значений от 3.0 до 6.0 достаточно для имитации условий внутри и снаружи помещения.

При сочетании автоматической экспозиции с постобработкой Свечение пиксели, превышающие значение White тональной коррекции, переходят в буфер свечения, создавая характерный для фотографии эффект bloom.

../../_images/environment_hdr_bloom.webp

В разделе "Auto Exposure" пользовательские значения имеют разумные значения по умолчанию, но вы всё равно можете их подстроить:

../../_images/environment_hdr.webp
  • Scale: Множитель для масштабирования освещения. Более высокие значения создают более яркие изображения, более низкие — более тёмные.

  • Min Sensitivity / Min Exposure Value: Минимальная яркость, на которую будет настраиваться автоматическая экспозиция (в ISO при использовании CameraAttributesPractical или в EV100 при использовании CameraAttributesPhysical). Яркость рассчитывается как среднее значение света по всем пикселям экрана.

  • Max Sensitivity / Max Exposure Value: Максимальная яркость, на которую будет настраиваться автоматическая экспозиция (в ISO при использовании CameraAttributesPractical или в EV100 при использовании CameraAttributesPhysical).

  • Speed: Скорость коррекции яркости. Чем выше значение, тем быстрее происходит коррекция. Высокие значения могут быть предпочтительны для динамичных игр, но в некоторых сценариях могут отвлекать.

При использовании CameraAttributesPractical экспозиция задаётся чувствительностью в ISO вместо значения экспозиции в EV100. Типичные значения ISO находятся в диапазоне от 50 до 3200, причём более высокие значения дают более высокую итоговую экспозицию. В реальной фотографии дневные съёмки обычно используют ISO от 100 до 800.

См. также

См. Физические световые и камерные блоки, если вы хотите использовать реальные единицы измерения для настройки экспозиции камеры, поля зрения и глубины резкости.