Skip to content

Commit 9107b79

Browse files
committed
use a shader def for MAX_DIRECTIONAL_LIGHTS to be sure to always have the correct value in shader
1 parent b505eda commit 9107b79

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

crates/bevy_pbr/src/render/light.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,10 @@ impl SpecializedMeshPipeline for ShadowPipeline {
321321

322322
let mut bind_group_layout = vec![self.view_layout.clone()];
323323
let mut shader_defs = Vec::new();
324+
shader_defs.push(ShaderDefVal::Int(
325+
"MAX_DIRECTIONAL_LIGHTS".to_string(),
326+
MAX_DIRECTIONAL_LIGHTS as i32,
327+
));
324328

325329
if layout.contains(Mesh::ATTRIBUTE_JOINT_INDEX)
326330
&& layout.contains(Mesh::ATTRIBUTE_JOINT_WEIGHT)

crates/bevy_pbr/src/render/mesh.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::{
22
GlobalLightMeta, GpuLights, GpuPointLights, LightMeta, NotShadowCaster, NotShadowReceiver,
33
ShadowPipeline, ViewClusterBindings, ViewLightsUniformOffset, ViewShadowBindings,
4-
CLUSTERED_FORWARD_STORAGE_BUFFER_COUNT,
4+
CLUSTERED_FORWARD_STORAGE_BUFFER_COUNT, MAX_DIRECTIONAL_LIGHTS,
55
};
66
use bevy_app::Plugin;
77
use bevy_asset::{load_internal_asset, Assets, Handle, HandleUntyped};
@@ -579,6 +579,11 @@ impl SpecializedMeshPipeline for MeshPipeline {
579579
vertex_attributes.push(Mesh::ATTRIBUTE_NORMAL.at_shader_location(1));
580580
}
581581

582+
shader_defs.push(ShaderDefVal::Int(
583+
"MAX_DIRECTIONAL_LIGHTS".to_string(),
584+
MAX_DIRECTIONAL_LIGHTS as i32,
585+
));
586+
582587
if layout.contains(Mesh::ATTRIBUTE_UV_0) {
583588
shader_defs.push(String::from("VERTEX_UVS").into());
584589
vertex_attributes.push(Mesh::ATTRIBUTE_UV_0.at_shader_location(2));

crates/bevy_pbr/src/render/mesh_view_types.wgsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ let DIRECTIONAL_LIGHT_FLAGS_SHADOWS_ENABLED_BIT: u32 = 1u;
4242

4343
struct Lights {
4444
// NOTE: this array size must be kept in sync with the constants defined in bevy_pbr/src/render/light.rs
45-
directional_lights: array<DirectionalLight, 1u>,
45+
directional_lights: array<DirectionalLight, #{MAX_DIRECTIONAL_LIGHTS}u>,
4646
ambient_color: vec4<f32>,
4747
// x/y/z dimensions and n_clusters in w
4848
cluster_dimensions: vec4<u32>,

0 commit comments

Comments
 (0)