diff --git a/src/main.cpp b/src/main.cpp index c22a670..dfe347a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -109,13 +109,14 @@ enum Settings_Category { struct Vertex { V3 pos; + V2 uv; }; static Vertex vertices[] = { - {{ -0.5f, 0.5f }}, - {{ -0.5f, -0.5f }}, - {{ 0.5f, -0.5f }}, - {{ 0.5f, 0.5f }}, + {{ -0.5f, 0.5f }, { 0.0f, 0.0f }}, + {{ -0.5f, -0.5f }, { 0.0f, 1.0f }}, + {{ 0.5f, -0.5f }, { 1.0f, 1.0f }}, + {{ 0.5f, 0.5f }, { 1.0f, 0.0f }}, }; static Uint16 indices[] = { @@ -170,11 +171,9 @@ static Uint16 grid_indices[] = { struct Instance { V2 pos; - V4 uv0uv1; - V4 uv2uv3; }; -static Instance player_instance = { { 0.0f, 0.0f }, { 0, 0, 1, 0 }, { 1, 1, 0, 1 }}; +static Instance player_instance = {{ 0.0f, 0.0f }}; struct Map { Sint32 width; @@ -745,24 +744,19 @@ static bool recreate_graphics_pipelines() { .offset = offsetof(Vertex, pos), .shaderLocation = 0, }, + { + .format = WGPUVertexFormat_Float32x2, + .offset = offsetof(Vertex, uv), + .shaderLocation = 1, + }, }; WGPUVertexAttribute instance_buffer_attributes[] = { { .format = WGPUVertexFormat_Float32x2, .offset = offsetof(Instance, pos), - .shaderLocation = 1, - }, - { - .format = WGPUVertexFormat_Float32x4, - .offset = offsetof(Instance, uv0uv1), .shaderLocation = 2, }, - { - .format = WGPUVertexFormat_Float32x4, - .offset = offsetof(Instance, uv2uv3), - .shaderLocation = 3, - }, }; WGPUVertexBufferLayout vertex_buffer_layouts[] = { diff --git a/src/shaders/basic.wgsl b/src/shaders/basic.wgsl index 1b8a56e..376157e 100644 --- a/src/shaders/basic.wgsl +++ b/src/shaders/basic.wgsl @@ -3,11 +3,10 @@ struct VertexShaderInput { @builtin(vertex_index) vertex_index: u32, @location(0) pos: vec3, + @location(1) uv: vec2, // Per Instance - @location(1) pos_size: vec4, - @location(2) uv0uv1: vec4, - @location(3) uv2uv3: vec4, + @location(2) pos_size: vec4, }; struct VertexShaderOutput { @@ -26,14 +25,7 @@ struct FragmentShaderOutput { var output: VertexShaderOutput; output.pos = vec4(input.pos_size.xy + input.pos.xy, 0, 1) * view_projection_matrix; - - switch (input.vertex_index) { - case 0: { output.uv = input.uv0uv1.xy; } - case 1: { output.uv = input.uv2uv3.zw; } - case 2: { output.uv = input.uv2uv3.xy; } - case 3: { output.uv = input.uv0uv1.zw; } - default: {} - } + output.uv = input.uv; return output; }