struct VertexOutput { @location(0) test: vec2, @builtin(position) position: vec4, }; struct Uniforms { transform: mat4x4, dem_texture_size: vec2, dembvh_texture_size: vec2 } @group(0) @binding(0) var uniforms: Uniforms; @group(0) @binding(1) var dem_texture: texture_2d; @group(0) @binding(2) var dembvh_texture: texture_2d; @vertex fn vs_main( @location(0) position: vec4, ) -> VertexOutput { var result: VertexOutput; result.position = uniforms.transform * position; result.test = position.xy; return result; } @fragment fn fs_solid(vertex: VertexOutput) -> @location(0) vec4 { let texture_index = vec2(fract(abs(vertex.test)/500.0)*vec2(uniforms.dem_texture_size)); let v_i = vec3(textureLoad(dem_texture, texture_index, 0).r, textureLoad(dembvh_texture, texture_index, 0).rg); let v = vec3(v_i) / 65535.0; return vec4(v, 1.0); }