Skip to content

Commit 83d2b64

Browse files
committed
use a shader def for MAX_DIRECTIONAL_LIGHTS to be sure to always have the correct value in shader
1 parent bb06a08 commit 83d2b64

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-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: 7 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};
@@ -560,6 +560,12 @@ impl SpecializedMeshPipeline for MeshPipeline {
560560
];
561561

562562
let mut shader_defs = Vec::new();
563+
564+
shader_defs.push(ShaderDefVal::Int(
565+
"MAX_DIRECTIONAL_LIGHTS".to_string(),
566+
MAX_DIRECTIONAL_LIGHTS as i32,
567+
));
568+
563569
if layout.contains(Mesh::ATTRIBUTE_UV_0) {
564570
shader_defs.push(String::from("VERTEX_UVS").into());
565571
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 bevy_pbr2/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)