38 lines
974 B
WebGPU Shading Language
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);
|
|
} |