diff options
Diffstat (limited to 'client/src/ui.wgsl')
-rw-r--r-- | client/src/ui.wgsl | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/client/src/ui.wgsl b/client/src/ui.wgsl index 174f20c..3dd9b62 100644 --- a/client/src/ui.wgsl +++ b/client/src/ui.wgsl @@ -16,28 +16,36 @@ struct VertexIn { @location(0) pos: vec2<f32>, @location(1) uv: vec2<f32>, - @location(2) color: vec3<f32>, + @location(2) color: u32, } struct VertexOut { @builtin(position) clip: vec4<f32>, @location(0) uv: vec2<f32>, - @location(1) color: vec3<f32>, + @location(1) color: vec4<f32>, } @group(0) @binding(0) var texture: texture_2d<f32>; @group(0) @binding(1) var texture_sampler: sampler; var<push_constant> project: mat4x4<f32>; +fn unpack_color(color: u32) -> vec4<f32> { + return vec4<f32>( + f32(color & 255u), + f32((color >> 8u) & 255u), + f32((color >> 16u) & 255u), + f32((color >> 24u) & 255u), + ) / 255.0; +} + @vertex fn vs_main(vi: VertexIn) -> VertexOut { - var clip = project * vec4(vi.pos, 0., -1.); - clip /= clip.w; - clip.x *= -1.; - clip.y *= -1.; - let vo = VertexOut(clip, vi.uv, vi.color); + // var clip = project * vec4(vi.pos, 0., 1.); + var clip = vec4(vi.pos / 200., 0., 1.); + let vo = VertexOut(clip, vi.uv, unpack_color(vi.color)); return vo; } @fragment fn fs_main(vo: VertexOut) -> @location(0) vec4<f32> { - return textureSample(texture, texture_sampler, vo.uv) * vec4(vo.color, 1.); + return vec4(1., 0., 1., 1.); + // return textureSample(texture, texture_sampler, vo.uv) * vec4(vo.color, 1.); } |