From 58f237eaf5b3191a0a7bcba19687aeef1ecc450c Mon Sep 17 00:00:00 2001 From: Imbris Date: Thu, 24 Jun 2021 00:39:55 -0400 Subject: [PATCH] Ensure bind groups are ordered with the most frequently changed ones in later slots --- assets/voxygen/shaders/figure-frag.glsl | 8 ++++---- assets/voxygen/shaders/figure-vert.glsl | 4 ++-- assets/voxygen/shaders/sprite-frag.glsl | 4 ++-- assets/voxygen/shaders/sprite-vert.glsl | 2 +- assets/voxygen/shaders/terrain-frag.glsl | 6 +++--- assets/voxygen/shaders/terrain-vert.glsl | 2 +- voxygen/src/render/pipelines/figure.rs | 2 +- voxygen/src/render/pipelines/sprite.rs | 2 +- voxygen/src/render/pipelines/terrain.rs | 2 +- voxygen/src/render/renderer/drawer.rs | 12 ++++++------ 10 files changed, 22 insertions(+), 22 deletions(-) diff --git a/assets/voxygen/shaders/figure-frag.glsl b/assets/voxygen/shaders/figure-frag.glsl index 2685fb61a6..3b084366da 100644 --- a/assets/voxygen/shaders/figure-frag.glsl +++ b/assets/voxygen/shaders/figure-frag.glsl @@ -38,9 +38,9 @@ layout(location = 1) flat in vec3 f_norm; // const vec4 sun_pos = vec4(0.0); // #endif -layout(set = 3, binding = 0) +layout(set = 2, binding = 0) uniform texture2D t_col_light; -layout(set = 3, binding = 1) +layout(set = 2, binding = 1) uniform sampler s_col_light; //struct ShadowLocals { @@ -53,7 +53,7 @@ uniform sampler s_col_light; // ShadowLocals shadowMats[/*MAX_LAYER_FACES*/192]; //}; -layout (std140, set = 2, binding = 0) +layout (std140, set = 3, binding = 0) uniform u_locals { mat4 model_mat; vec4 highlight_col; @@ -71,7 +71,7 @@ struct BoneData { mat4 normals_mat; }; -layout (std140, set = 2, binding = 1) +layout (std140, set = 3, binding = 1) uniform u_bones { BoneData bones[16]; }; diff --git a/assets/voxygen/shaders/figure-vert.glsl b/assets/voxygen/shaders/figure-vert.glsl index 931cb09984..489c439d4b 100644 --- a/assets/voxygen/shaders/figure-vert.glsl +++ b/assets/voxygen/shaders/figure-vert.glsl @@ -25,7 +25,7 @@ layout(location = 1) in uint v_atlas_pos; // out vec3 light_pos[2]; in uint v_ao_bone; */ -layout (std140, set = 2, binding = 0) +layout (std140, set = 3, binding = 0) uniform u_locals { mat4 model_mat; vec4 highlight_col; @@ -49,7 +49,7 @@ struct BoneData { mat4 normals_mat; }; -layout (std140, set = 2, binding = 1) +layout (std140, set = 3, binding = 1) uniform u_bones { // Warning: might not actually be 16 elements long. Don't index out of bounds! BoneData bones[16]; diff --git a/assets/voxygen/shaders/sprite-frag.glsl b/assets/voxygen/shaders/sprite-frag.glsl index 6a9c97b0f2..119bf61e59 100644 --- a/assets/voxygen/shaders/sprite-frag.glsl +++ b/assets/voxygen/shaders/sprite-frag.glsl @@ -22,9 +22,9 @@ layout(location = 2) flat in float f_select; layout(location = 3) in vec2 f_uv_pos; layout(location = 4) in vec2 f_inst_light; -layout(set = 3, binding = 0) +layout(set = 2, binding = 0) uniform texture2D t_col_light; -layout(set = 3, binding = 1) +layout(set = 2, binding = 1) uniform sampler s_col_light; layout(location = 0) out vec4 tgt_color; diff --git a/assets/voxygen/shaders/sprite-vert.glsl b/assets/voxygen/shaders/sprite-vert.glsl index e7cfd44fc8..097e5e25f2 100644 --- a/assets/voxygen/shaders/sprite-vert.glsl +++ b/assets/voxygen/shaders/sprite-vert.glsl @@ -34,7 +34,7 @@ layout(set = 0, binding = 12) restrict readonly buffer sprite_verts { uvec2 verts[]; }; -layout (std140, set = 2, binding = 0) +layout (std140, set = 3, binding = 0) uniform u_terrain_locals { vec3 model_offs; float load_time; diff --git a/assets/voxygen/shaders/terrain-frag.glsl b/assets/voxygen/shaders/terrain-frag.glsl index d59bfa7964..6aff7daaf3 100644 --- a/assets/voxygen/shaders/terrain-frag.glsl +++ b/assets/voxygen/shaders/terrain-frag.glsl @@ -45,12 +45,12 @@ in vec4 sun_pos; const vec4 sun_pos = vec4(0.0); #endif */ -layout(set = 3, binding = 0) +layout(set = 2, binding = 0) uniform texture2D t_col_light; -layout(set = 3, binding = 1) +layout(set = 2, binding = 1) uniform sampler s_col_light; -layout (std140, set = 2, binding = 0) +layout (std140, set = 3, binding = 0) uniform u_locals { vec3 model_offs; float load_time; diff --git a/assets/voxygen/shaders/terrain-vert.glsl b/assets/voxygen/shaders/terrain-vert.glsl index 7fac4a0d2e..36be96776d 100644 --- a/assets/voxygen/shaders/terrain-vert.glsl +++ b/assets/voxygen/shaders/terrain-vert.glsl @@ -28,7 +28,7 @@ layout(location = 0) in uint v_pos_norm; // in uint v_col_light; layout(location = 1) in uint v_atlas_pos; -layout (std140, set = 2, binding = 0) +layout (std140, set = 3, binding = 0) uniform u_locals { vec3 model_offs; float load_time; diff --git a/voxygen/src/render/pipelines/figure.rs b/voxygen/src/render/pipelines/figure.rs index 5502b4babd..0ab2799b75 100644 --- a/voxygen/src/render/pipelines/figure.rs +++ b/voxygen/src/render/pipelines/figure.rs @@ -185,8 +185,8 @@ impl FigurePipeline { bind_group_layouts: &[ &global_layout.globals, &global_layout.shadow_textures, - &layout.locals, &global_layout.col_light, + &layout.locals, ], }); diff --git a/voxygen/src/render/pipelines/sprite.rs b/voxygen/src/render/pipelines/sprite.rs index 6a98efcd96..97043720f3 100644 --- a/voxygen/src/render/pipelines/sprite.rs +++ b/voxygen/src/render/pipelines/sprite.rs @@ -263,9 +263,9 @@ impl SpritePipeline { bind_group_layouts: &[ &layout.globals, &global_layout.shadow_textures, - &terrain_layout.locals, // Note: mergable with globals &global_layout.col_light, + &terrain_layout.locals, ], }); diff --git a/voxygen/src/render/pipelines/terrain.rs b/voxygen/src/render/pipelines/terrain.rs index 8a379f589d..082abdbaad 100644 --- a/voxygen/src/render/pipelines/terrain.rs +++ b/voxygen/src/render/pipelines/terrain.rs @@ -230,8 +230,8 @@ impl TerrainPipeline { bind_group_layouts: &[ &global_layout.globals, &global_layout.shadow_textures, - &layout.locals, &global_layout.col_light, + &layout.locals, ], }); diff --git a/voxygen/src/render/renderer/drawer.rs b/voxygen/src/render/renderer/drawer.rs index a41a1df1a7..4b9c891c2f 100644 --- a/voxygen/src/render/renderer/drawer.rs +++ b/voxygen/src/render/renderer/drawer.rs @@ -598,7 +598,7 @@ impl<'pass> FirstPassDrawer<'pass> { render_pass.set_pipeline(&self.pipelines.sprite.pipeline); set_quad_index_buffer::(&mut render_pass, &self.borrow); render_pass.set_bind_group(0, &globals.bind_group, &[]); - render_pass.set_bind_group(3, &col_lights.bind_group, &[]); + render_pass.set_bind_group(2, &col_lights.bind_group, &[]); SpriteDrawer { render_pass, @@ -653,9 +653,9 @@ impl<'pass_ref, 'pass: 'pass_ref> FigureDrawer<'pass_ref, 'pass> { // TODO: don't rebind this every time once they are shared between figures col_lights: &'data ColLights, ) { - self.render_pass.set_bind_group(2, &locals.bind_group, &[]); self.render_pass - .set_bind_group(3, &col_lights.bind_group, &[]); + .set_bind_group(2, &col_lights.bind_group, &[]); + self.render_pass.set_bind_group(3, &locals.bind_group, &[]); self.render_pass.set_vertex_buffer(0, model.buf()); self.render_pass .draw_indexed(0..model.len() as u32 / 4 * 6, 0, 0..1); @@ -681,11 +681,11 @@ impl<'pass_ref, 'pass: 'pass_ref> TerrainDrawer<'pass_ref, 'pass> { .is_none() { self.render_pass - .set_bind_group(3, &col_lights.bind_group, &[]); // TODO: put this in slot 2 + .set_bind_group(2, &col_lights.bind_group, &[]); self.col_lights = Some(col_lights); }; - self.render_pass.set_bind_group(2, &locals.bind_group, &[]); // TODO: put this in slot 3 + self.render_pass.set_bind_group(3, &locals.bind_group, &[]); self.render_pass.set_vertex_buffer(0, model.buf().slice(..)); self.render_pass .draw_indexed(0..model.len() as u32 / 4 * 6, 0, 0..1); @@ -725,7 +725,7 @@ impl<'pass_ref, 'pass: 'pass_ref> SpriteDrawer<'pass_ref, 'pass> { instances: &'data Instances, ) { self.render_pass - .set_bind_group(2, &terrain_locals.bind_group, &[]); + .set_bind_group(3, &terrain_locals.bind_group, &[]); self.render_pass .set_vertex_buffer(0, instances.buf().slice(..));