reckfellENGINE

Объёмный туман и локальные области

Настроить общий туман, локальную дымку и расчистку отрицательной плотностью на готовой сцене Forward+.

На этой странице

Выбрать нужный эффект

Объёмный туман показывает свет в среде: дымку в помещении, лучи и локальные облака. Нужны Forward+, действующий Environment и VolumetricFogEnabled=true. FogEnabled управляет другим, обычным туманом и не включает FogVolume.

Для тумана во всём видимом пространстве задайте Environment.VolumetricFogDensity. Для локальной области добавьте FogVolume с FogMaterial. Глобальная плотность может оставаться нулевой: в этом случае туман появится только внутри объёмов.

Запустить готовую сцену

Скачать галерею с туманом. Нужны Reckfell 1.0.0 с C# SDK и Forward+/Vulkan. Распакуйте проект, откройте project.reckfell, соберите C# и запустите Main.rscene. Геометрия, материалы и источники уже включены в пример; внешние ассеты не нужны.

Корень использует FogGallery3D.cs ниже и базовый CinematicGallery3D.cs из архива. До запуска выберите экспортированное Preview: Clear, Global, Local или Carve. Для переключения из работающего кода вызывайте SetPreview(mode) после _Ready: простое изменение Preview во время игры не применяет настройки.

PreviewОбщая плотностьЛокальный объёмРезультат
Clear0скрытисходный кадр без плотности тумана
Global0.02скрытдымка по глубине галереи
Local0Density=0.08туман вокруг центральной установки
Carve0.02Density=-0.12локальное ослабление общего тумана
FogGallery3D.cs
C#
using Reckfell;

public partial class FogGallery3D : CinematicGallery3D
{
    public enum FogPreview { Clear, Global, Local, Carve }
    [Export] public FogPreview Preview { get; set; } = FogPreview.Local;
    public FogVolume Mist { get; private set; } = null!;
    public FogMaterial MistMaterial { get; private set; } = null!;

    public override void _Ready()
    {
        base._Ready();
        MistMaterial = new FogMaterial
        {
            Density = 0.08f, Albedo = new Color(0.65f, 0.76f, 0.9f),
            Emission = Colors.Black, HeightFalloff = 0, EdgeFade = 0.5f
        };
        Mist = new FogVolume
        {
            Position = new Vector3(0, 2.6f, -10), Size = new Vector3(10, 5, 10),
            Shape = RenderingServer.FogVolumeShape.Box, Material = MistMaterial
        };
        AddChild(Mist);
        SetPreview(Preview);
    }

    // Call after _Ready. Editing Preview during play does not call this method.
    public void SetPreview(FogPreview mode)
    {
        var env = GalleryEnvironment;
        env.FogEnabled = false;
        env.VolumetricFogEnabled = true;
        env.VolumetricFogLength = 60;
        env.VolumetricFogDensity = mode is FogPreview.Global or FogPreview.Carve ? 0.02f : 0;
        env.VolumetricFogAlbedo = new Color(0.62f, 0.69f, 0.78f);
        env.VolumetricFogEmission = Colors.Black;
        env.VolumetricFogAnisotropy = 0.3f;
        env.VolumetricFogTemporalReprojectionEnabled = true;
        env.VolumetricFogTemporalReprojectionAmount = 0.9f;
        Mist.Visible = mode is FogPreview.Local or FogPreview.Carve;
        MistMaterial.Density = mode == FogPreview.Carve ? -0.12f : 0.08f;
    }
}

Общий туман

Галерея без плотности тумана, с сохранёнными материалами, светом и сглаживанием

Та же галерея с общей плотностью объёмного тумана 0.02

Поднимайте плотность постепенно: слишком большая скрывает геометрию и превращает источники в яркие пятна. Albedo задаёт рассеяние света средой; итоговый цвет зависит и от освещения. Emission добавляет собственное свечение тумана, но не создаёт Light3D для соседних мешей.

VolumetricFogLength=60 ограничивает дальность расчёта тумана, а не дальность камеры. Увеличение дальности при том же объёмном буфере распределяет его детализацию на большее пространство. Сначала ограничьте дальность нужной областью, затем подбирайте разрешение тумана под целевую сцену.

Локальная область

FogVolume вокруг установки: глобальная плотность 0, локальная 0.08

В примере FogVolume находится в (0, 2.6, -10), Size=(10, 5, 10), Shape=Box. Size — полный размер по осям, не половина. Position и transform размещают область; HeightFalloff уменьшает плотность вверх по мировой Y относительно позиции объёма. EdgeFade смягчает границу формы. Другие формы доступны через RenderingServer.FogVolumeShape; World действует глобально и не ограничивается Size.

Назначайте FogMaterial или ShaderMaterial с shader_type fog. StandardMaterial3D предназначен для поверхности меша. Если несколько FogVolume используют один FogMaterial, изменение этого ресурса меняет все его применения; для независимых настроек создавайте отдельные материалы.

Нативная проверка подтвердила: Density=0 убирает локальный вклад, перенос объёма за пределы кадра убирает локальную дымку, VolumetricFogEnabled=false отключает и локальный объём. Нулевая общая плотность сама по себе локальный объём не выключает.

Ослабить туман в области

Общая плотность 0.02 с локальным отрицательным вкладом -0.12

Отрицательная FogMaterial.Density уменьшает уже существующую плотность внутри формы. Она не делает геометрию прозрачной и не отключает физику. В режиме Carve тот же Box частично расчищает общий туман. Плотность на остальном пути от камеры до объекта остаётся: локальная расчистка не гарантирует полностью чистый вид сквозь всю сцену.

Убрать артефакты

ПроблемаЧто проверить
FogVolume не виденForward+, действующий Environment, VolumetricFogEnabled, Material, положение, Size и Density
После Density=0 у Environment туман осталсяЛокальные FogVolume продолжают добавлять плотность
Изменение WorldEnvironment не действуетEnvironment активной Camera3D может перекрывать окружение мира
Видны ступени или грубые лучиУменьшить VolumetricFogLength; затем оценить volume_size/volume_depth и стоимость
За движущимся светом остаётся шлейфПроверить temporal reprojection; уменьшить её вклад или сравнить с выключенной
При выключении reprojection появился шумЭто обмен накопления истории на текущий кадр; проверить движение и целевой GPU
Изменение материала затронуло другие областиОбласти используют один ресурс FogMaterial

Для диагностики сначала меняйте один параметр. Temporal reprojection в примере включена с Amount=0.9; статический кадр не доказывает отсутствие шлейфов при движении.

Иллюстрации сняты текущим локальным runtime 1.0.0 в Forward+/Vulkan: 2560×1440, внутренний масштаб 1.5, MSAA 8×, TAA, одинаковые камера и экспозиция. Профиль предназначен для качественных иллюстраций, а не как обязательная настройка игры. Проверены перечисленные изменения плотности и объёма; анимированные 3D-текстуры, пользовательские fog-шейдеры и поведение в движении требуют отдельной проверки.

FogVolume API · FogMaterial API · Окружение и постобработка

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.