1#define_import_path bevy_pbr::fog 4 mesh_view_bindings::fog, 13fn scattering_adjusted_fog_color( 15 scattering: vec3<f32>, 17 if (fog_params.directional_light_color.a > 0.0) { 19 fog_params.base_color.rgb 20 + scattering * fog_params.directional_light_color.rgb * fog_params.directional_light_color.a, 21 fog_params.base_color.a, 24 return fog_params.base_color; 30 input_color: vec4<f32>, 32 scattering: vec3<f32>, 34 var fog_color = scattering_adjusted_fog_color(fog_params, scattering); 35 let start = fog_params.be.x; 36 let end = fog_params.be.y; 37 fog_color.a *= 1.0 - clamp((end - distance) / (end - start), 0.0, 1.0); 38 return vec4<f32>(mix(input_color.rgb, fog_color.rgb, fog_color.a), input_color.a); 43 input_color: vec4<f32>, 45 scattering: vec3<f32>, 47 var fog_color = scattering_adjusted_fog_color(fog_params, scattering); 48 let density = fog_params.be.x; 49 fog_color.a *= 1.0 - 1.0 / exp(distance * density); 50 return vec4<f32>(mix(input_color.rgb, fog_color.rgb, fog_color.a), input_color.a); 53fn exponential_squared_fog( 55 input_color: vec4<f32>, 57 scattering: vec3<f32>, 59 var fog_color = scattering_adjusted_fog_color(fog_params, scattering); 60 let distance_times_density = distance * fog_params.be.x; 61 fog_color.a *= 1.0 - 1.0 / exp(distance_times_density * distance_times_density); 62 return vec4<f32>(mix(input_color.rgb, fog_color.rgb, fog_color.a), input_color.a); 67 input_color: vec4<f32>, 69 scattering: vec3<f32>, 71 var fog_color = scattering_adjusted_fog_color(fog_params, scattering); 72 let extinction_factor = 1.0 - 1.0 / exp(distance * fog_params.be); 73 let inscattering_factor = 1.0 - 1.0 / exp(distance * fog_params.bi); 75 input_color.rgb * (1.0 - extinction_factor * fog_color.a) 76 + fog_color.rgb * inscattering_factor * fog_color.a,