From 635e44032ed47714b41d67da98e0262bf2219f7d Mon Sep 17 00:00:00 2001 From: unknown <10060956+JeroenHoogers@users.noreply.github.com> Date: Fri, 3 Oct 2025 23:40:02 +0200 Subject: [PATCH] fixed fog contribution for point and spotlights --- crates/bevy_pbr/src/volumetric_fog/volumetric_fog.wgsl | 10 +++++----- examples/3d/volumetric_fog.rs | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/crates/bevy_pbr/src/volumetric_fog/volumetric_fog.wgsl b/crates/bevy_pbr/src/volumetric_fog/volumetric_fog.wgsl index 43e3fc9278b81..27be451fa82f8 100644 --- a/crates/bevy_pbr/src/volumetric_fog/volumetric_fog.wgsl +++ b/crates/bevy_pbr/src/volumetric_fog/volumetric_fog.wgsl @@ -17,14 +17,14 @@ #import bevy_pbr::mesh_functions::{get_world_from_local, mesh_position_local_to_clip} #import bevy_pbr::mesh_view_bindings::{globals, lights, view, clusterable_objects} #import bevy_pbr::mesh_view_types::{ - DIRECTIONAL_LIGHT_FLAGS_VOLUMETRIC_BIT, - POINT_LIGHT_FLAGS_SHADOWS_ENABLED_BIT, + DIRECTIONAL_LIGHT_FLAGS_VOLUMETRIC_BIT, + POINT_LIGHT_FLAGS_SHADOWS_ENABLED_BIT, POINT_LIGHT_FLAGS_VOLUMETRIC_BIT, POINT_LIGHT_FLAGS_SPOT_LIGHT_Y_NEGATIVE, ClusterableObject } #import bevy_pbr::shadow_sampling::{ - sample_shadow_map_hardware, + sample_shadow_map_hardware, sample_shadow_cubemap, sample_shadow_map, SPOT_SHADOW_TEXEL_SIZE @@ -371,7 +371,7 @@ fn fragment(@builtin(position) position: vec4) -> @location(0) vec4 { } local_light_attenuation *= spot_attenuation * shadow; } - + // Calculate absorption (amount of light absorbed by the fog) and // out-scattering (amount of light the fog scattered away). let sample_attenuation = exp(-step_size_world * density * (absorption + scattering)); @@ -381,7 +381,7 @@ fn fragment(@builtin(position) position: vec4) -> @location(0) vec4 { let light_attenuation = exp(-density * bounding_radius * (absorption + scattering)); let light_factors_per_step = fog_color * light_tint * light_attenuation * - scattering * density * step_size_world * light_intensity * 0.1; + scattering * density * step_size_world * light_intensity * exposure; // Modulate the factor we calculated above by the phase, fog color, // light color, light tint. diff --git a/examples/3d/volumetric_fog.rs b/examples/3d/volumetric_fog.rs index 4e5f94b37e829..c8c47ef73338d 100644 --- a/examples/3d/volumetric_fog.rs +++ b/examples/3d/volumetric_fog.rs @@ -89,7 +89,7 @@ fn setup(mut commands: Commands, asset_server: Res, app_settings: R shadows_enabled: true, range: 150.0, color: RED.into(), - intensity: 1000.0, + intensity: 10_000.0, ..default() }, VolumetricLight, @@ -104,7 +104,7 @@ fn setup(mut commands: Commands, asset_server: Res, app_settings: R commands.spawn(( Transform::from_xyz(-1.8, 3.9, -2.7).looking_at(Vec3::ZERO, Vec3::Y), SpotLight { - intensity: 5000.0, // lumens + intensity: 50_000.0, // lumens color: Color::WHITE, shadows_enabled: true, inner_angle: 0.76,