diff options
Diffstat (limited to 'client/src/shaders/texture_copy.wgsl')
-rw-r--r-- | client/src/shaders/texture_copy.wgsl | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/client/src/shaders/texture_copy.wgsl b/client/src/shaders/texture_copy.wgsl new file mode 100644 index 0000000..ff58f87 --- /dev/null +++ b/client/src/shaders/texture_copy.wgsl @@ -0,0 +1,22 @@ +struct VertexOut { + @builtin(position) clip: vec4<f32>, + @location(0) texcoord: vec2<f32>, +}; + +@group(0) @binding(0) var texture: texture_2d<f32>; +@group(0) @binding(1) var texture_sampler: sampler; + +@vertex +fn vs_main(@builtin(vertex_index) vertex_index: u32) -> VertexOut { + let x = i32(vertex_index) / 2; + let y = i32(vertex_index) & 1; + return VertexOut( + vec4<f32>(f32(x) * 4.0 - 1.0, 1.0 - f32(y) * 4.0, 0.0, 1.0), + vec2<f32>(f32(x) * 2.0, f32(y) * 2.0) + ); +} + +@fragment +fn fs_main(vertex: VertexOut) -> @location(0) vec4<f32> { + return textureSample(texture, texture_sampler, vertex.texcoord); +} |