pteropus/src/app/dem_renderer.wgsl

38 lines
974 B
WebGPU Shading Language

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