Skip to content

Commit d659a1f

Browse files
alice-i-cecileAlice Cecile
and
Alice Cecile
authored
Revert "Make FOG_ENABLED a shader_def instead of material flag (#13783)" (#13803)
This reverts commit 3ced49f. Relevant to #13802. This wasn't done quite right and partially broke fog. Co-authored-by: Alice Cecile <[email protected]>
1 parent 2ccdae7 commit d659a1f

File tree

4 files changed

+11
-10
lines changed

4 files changed

+11
-10
lines changed

crates/bevy_pbr/src/deferred/pbr_deferred_types.wgsl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@
22

33
#import bevy_pbr::{
44
mesh_types::MESH_FLAGS_SHADOW_RECEIVER_BIT,
5-
pbr_types::{STANDARD_MATERIAL_FLAGS_UNLIT_BIT},
5+
pbr_types::{STANDARD_MATERIAL_FLAGS_FOG_ENABLED_BIT, STANDARD_MATERIAL_FLAGS_UNLIT_BIT},
66
}
77

88
// Maximum of 8 bits available
99
const DEFERRED_FLAGS_UNLIT_BIT: u32 = 1u;
10-
const DEFERRED_MESH_FLAGS_SHADOW_RECEIVER_BIT: u32 = 2u;
10+
const DEFERRED_FLAGS_FOG_ENABLED_BIT: u32 = 2u;
11+
const DEFERRED_MESH_FLAGS_SHADOW_RECEIVER_BIT: u32 = 4u;
1112

1213
fn deferred_flags_from_mesh_material_flags(mesh_flags: u32, mat_flags: u32) -> u32 {
1314
var flags = 0u;
1415
flags |= u32((mesh_flags & MESH_FLAGS_SHADOW_RECEIVER_BIT) != 0u) * DEFERRED_MESH_FLAGS_SHADOW_RECEIVER_BIT;
16+
flags |= u32((mat_flags & STANDARD_MATERIAL_FLAGS_FOG_ENABLED_BIT) != 0u) * DEFERRED_FLAGS_FOG_ENABLED_BIT;
1517
flags |= u32((mat_flags & STANDARD_MATERIAL_FLAGS_UNLIT_BIT) != 0u) * DEFERRED_FLAGS_UNLIT_BIT;
1618
return flags;
1719
}
@@ -20,6 +22,7 @@ fn mesh_material_flags_from_deferred_flags(deferred_flags: u32) -> vec2<u32> {
2022
var mat_flags = 0u;
2123
var mesh_flags = 0u;
2224
mesh_flags |= u32((deferred_flags & DEFERRED_MESH_FLAGS_SHADOW_RECEIVER_BIT) != 0u) * MESH_FLAGS_SHADOW_RECEIVER_BIT;
25+
mat_flags |= u32((deferred_flags & DEFERRED_FLAGS_FOG_ENABLED_BIT) != 0u) * STANDARD_MATERIAL_FLAGS_FOG_ENABLED_BIT;
2326
mat_flags |= u32((deferred_flags & DEFERRED_FLAGS_UNLIT_BIT) != 0u) * STANDARD_MATERIAL_FLAGS_UNLIT_BIT;
2427
return vec2(mesh_flags, mat_flags);
2528
}

crates/bevy_pbr/src/pbr_material.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -872,7 +872,7 @@ bitflags::bitflags! {
872872
const UNLIT = 1 << 5;
873873
const TWO_COMPONENT_NORMAL_MAP = 1 << 6;
874874
const FLIP_NORMAL_MAP_Y = 1 << 7;
875-
// const UNUSED = 1 << 8; // USE THIS IF YOU ADD A NEW FLAG
875+
const FOG_ENABLED = 1 << 8;
876876
const DEPTH_MAP = 1 << 9; // Used for parallax mapping
877877
const SPECULAR_TRANSMISSION_TEXTURE = 1 << 10;
878878
const THICKNESS_TEXTURE = 1 << 11;
@@ -980,6 +980,9 @@ impl AsBindGroupShaderType<StandardMaterialUniform> for StandardMaterial {
980980
if self.unlit {
981981
flags |= StandardMaterialFlags::UNLIT;
982982
}
983+
if self.fog_enabled {
984+
flags |= StandardMaterialFlags::FOG_ENABLED;
985+
}
983986
if self.depth_map.is_some() {
984987
flags |= StandardMaterialFlags::DEPTH_MAP;
985988
}
@@ -1117,7 +1120,6 @@ bitflags! {
11171120
const CLEARCOAT_UV = 0x040000;
11181121
const CLEARCOAT_ROUGHNESS_UV = 0x080000;
11191122
const CLEARCOAT_NORMAL_UV = 0x100000;
1120-
const FOG_ENABLED = 0x200000;
11211123
const DEPTH_BIAS = 0xffffffff_00000000;
11221124
}
11231125
}
@@ -1225,7 +1227,6 @@ impl From<&StandardMaterial> for StandardMaterialKey {
12251227
material.clearcoat_normal_channel != UvChannel::Uv0,
12261228
);
12271229
}
1228-
key.set(StandardMaterialKey::FOG_ENABLED, material.fog_enabled);
12291230

12301231
key.insert(StandardMaterialKey::from_bits_retain(
12311232
(material.depth_bias as u64) << STANDARD_MATERIAL_KEY_DEPTH_BIAS_SHIFT,
@@ -1382,7 +1383,6 @@ impl Material for StandardMaterial {
13821383
StandardMaterialKey::ANISOTROPY_UV,
13831384
"STANDARD_MATERIAL_ANISOTROPY_UV",
13841385
),
1385-
(StandardMaterialKey::FOG_ENABLED, "FOG_ENABLED"),
13861386
] {
13871387
if key.bind_group_data.intersects(flags) {
13881388
shader_defs.push(shader_def.into());

crates/bevy_pbr/src/render/pbr_functions.wgsl

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -809,11 +809,9 @@ fn main_pass_post_lighting_processing(
809809
var output_color = input_color;
810810

811811
// fog
812-
#ifdef FOG_ENABLED
813-
if (view_bindings::fog.mode != mesh_view_types::FOG_MODE_OFF) {
812+
if (view_bindings::fog.mode != mesh_view_types::FOG_MODE_OFF && (pbr_input.material.flags & pbr_types::STANDARD_MATERIAL_FLAGS_FOG_ENABLED_BIT) != 0u) {
814813
output_color = apply_fog(view_bindings::fog, output_color, pbr_input.world_position.xyz, view_bindings::view.world_position.xyz);
815814
}
816-
#endif // FOG_ENABLED
817815

818816
#ifdef TONEMAP_IN_SHADER
819817
output_color = tone_mapping(output_color, view_bindings::view.color_grading);

crates/bevy_pbr/src/render/pbr_types.wgsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ const STANDARD_MATERIAL_FLAGS_DOUBLE_SIDED_BIT: u32 = 16u;
4242
const STANDARD_MATERIAL_FLAGS_UNLIT_BIT: u32 = 32u;
4343
const STANDARD_MATERIAL_FLAGS_TWO_COMPONENT_NORMAL_MAP: u32 = 64u;
4444
const STANDARD_MATERIAL_FLAGS_FLIP_NORMAL_MAP_Y: u32 = 128u;
45-
// const STANDARD_MATERIAL_FLAGS_UNUSED_BIT: u32 = 256u;
45+
const STANDARD_MATERIAL_FLAGS_FOG_ENABLED_BIT: u32 = 256u;
4646
const STANDARD_MATERIAL_FLAGS_DEPTH_MAP_BIT: u32 = 512u;
4747
const STANDARD_MATERIAL_FLAGS_SPECULAR_TRANSMISSION_TEXTURE_BIT: u32 = 1024u;
4848
const STANDARD_MATERIAL_FLAGS_THICKNESS_TEXTURE_BIT: u32 = 2048u;

0 commit comments

Comments
 (0)