Skip to content

Commit d3e41e2

Browse files
authored
Fix deferred lighting pass values not all working on M1 in WebGL2 (#10304)
# Objective - On MacOS M1 WebGL2 the deferred lighting ID depth comparison is failing for some values (including 1, the default) Note: this issue is just with WebGL2, native on MacOS M1 is working with current bevy main. ## Solution - Use Depth16Unorm for lighting pass id format. This format is aliasing to the same value consistently (in [copy_deferred_lighting_id](https://github.com/bevyengine/bevy/blob/main/crates/bevy_core_pipeline/src/deferred/copy_deferred_lighting_id.wgsl#L15) and [deferred_lighting](https://github.com/bevyengine/bevy/blob/main/crates/bevy_pbr/src/deferred/deferred_lighting.wgsl#L39)) on MacOS M1 WebGL, and appears to be supported across WebGL2, WebGPU, DX12, OpenGL 3.3, Vulkan. Successfully tested all 256 ids on: - MacOS M1 native and WebGL2 - Window RTX3060 Vulkan/DX12/WebGL2 - Windows Intel UHD Graphics 630 IGP DX12/WebGL2 (bevy w/ Vulkan doesn't work on this IGP in general #8037)
1 parent e9a0d6c commit d3e41e2

File tree

1 file changed

+1
-1
lines changed
  • crates/bevy_core_pipeline/src/deferred

1 file changed

+1
-1
lines changed

crates/bevy_core_pipeline/src/deferred/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use bevy_utils::{nonmax::NonMaxU32, FloatOrd};
1212

1313
pub const DEFERRED_PREPASS_FORMAT: TextureFormat = TextureFormat::Rgba32Uint;
1414
pub const DEFERRED_LIGHTING_PASS_ID_FORMAT: TextureFormat = TextureFormat::R8Uint;
15-
pub const DEFERRED_LIGHTING_PASS_ID_DEPTH_FORMAT: TextureFormat = TextureFormat::Depth32Float;
15+
pub const DEFERRED_LIGHTING_PASS_ID_DEPTH_FORMAT: TextureFormat = TextureFormat::Depth16Unorm;
1616

1717
/// Opaque phase of the 3D Deferred pass.
1818
///

0 commit comments

Comments
 (0)