From 43ef256ce1ca163cc4a57ca01f95a0a6e509c1c3 Mon Sep 17 00:00:00 2001
From: Louis Capitanchik <contact@louiscap.co>
Date: Fri, 19 Aug 2022 01:02:34 +0100
Subject: [PATCH] Pad shader structs to 16 byte layout

---
 bevy_kayak_renderer/src/render/unified/pipeline.rs | 10 +++++++---
 bevy_kayak_renderer/src/render/unified/shader.wgsl |  6 ++++++
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/bevy_kayak_renderer/src/render/unified/pipeline.rs b/bevy_kayak_renderer/src/render/unified/pipeline.rs
index 58e01bf..b8215ce 100644
--- a/bevy_kayak_renderer/src/render/unified/pipeline.rs
+++ b/bevy_kayak_renderer/src/render/unified/pipeline.rs
@@ -337,6 +337,9 @@ struct QuadVertex {
 #[derive(Copy, Clone, ShaderType)]
 struct QuadType {
     pub t: i32,
+    pub _unused_1: i32,
+    pub _unused_2: i32,
+    pub _unused_3: i32,
 }
 
 pub struct QuadMeta {
@@ -376,9 +379,10 @@ pub fn prepare_quads(
 
     sprite_meta.types_buffer.clear();
     // sprite_meta.types_buffer.reserve(2, &render_device);
-    let quad_type_offset = sprite_meta.types_buffer.push(QuadType { t: 0 });
-    let text_type_offset = sprite_meta.types_buffer.push(QuadType { t: 1 });
-    let image_type_offset = sprite_meta.types_buffer.push(QuadType { t: 2 });
+    let quad_type_offset = sprite_meta.types_buffer.push(QuadType { t: 0, _unused_1: 0, _unused_2: 0, _unused_3: 0, });
+    let text_type_offset = sprite_meta.types_buffer.push(QuadType { t: 1, _unused_1: 0, _unused_2: 0, _unused_3: 0, });
+    let image_type_offset = sprite_meta.types_buffer.push(QuadType { t: 2, _unused_1: 0, _unused_2: 0, _unused_3: 0, });
+
     sprite_meta
         .types_buffer
         .write_buffer(&render_device, &render_queue);
diff --git a/bevy_kayak_renderer/src/render/unified/shader.wgsl b/bevy_kayak_renderer/src/render/unified/shader.wgsl
index 293d4f9..14cbffd 100644
--- a/bevy_kayak_renderer/src/render/unified/shader.wgsl
+++ b/bevy_kayak_renderer/src/render/unified/shader.wgsl
@@ -7,7 +7,11 @@ var<uniform> view: View;
 
 struct QuadType {
     t: i32,
+    _unused_1: i32,
+    _unused_2: i32,
+    _unused_3: i32,
 };
+
 @group(2) @binding(0)
 var<uniform> quad_type: QuadType;
 
@@ -19,6 +23,7 @@ struct VertexOutput {
     @location(3) size: vec2<f32>,
     @location(4) border_radius: f32,
     @location(5) pixel_position: vec2<f32>,
+    @location(6) _unused: f32,
 };
 
 @vertex
@@ -36,6 +41,7 @@ fn vertex(
     out.uv = vertex_uv.xyz;
     out.size = vertex_pos_size.zw;
     out.border_radius = vertex_uv.w;
+    out._unused = 0.0;
     return out;
 }
 
-- 
GitLab