diff --git a/kubi/shaders/world.wgsl b/kubi/shaders/world.wgsl new file mode 100644 index 0000000..6587883 --- /dev/null +++ b/kubi/shaders/world.wgsl @@ -0,0 +1,42 @@ +// struct Uniforms { +// transform: mat4x4; +// }; + +// @group(1) @binding(0) +// var uniforms: Uniforms; + +struct VertexInput { + @location(0) position: vec3, + @location(1) normal: vec3, + @location(2) uv: vec2, + @location(3) @interpolate(flat) tex_index: u32, +} + +struct VertexOutput { + @builtin(position) clip_position: vec4, + @location(0) uv: vec2, + @location(1) normal: vec3, + @location(2) color: vec4, + @location(3) @interpolate(flat) tex_index: u32, +}; + +@vertex +fn vs_main( + in: VertexInput, +) -> VertexOutput { + var out: VertexOutput; + out.uv = in.uv; + out.clip_position = vec4(in.position, 1.0); + return out; +} + +@group(0) @binding(0) +var t_diffuse: texture_2d_array; + +@group(0) @binding(1) +var s_diffuse: sampler; + +@fragment +fn fs_main(in: VertexOutput) -> @location(0) vec4 { + return textureSample(t_diffuse, s_diffuse, in.uv, in.tex_index); +}