diff options
Diffstat (limited to 'flowy/src/shader.wgsl')
-rw-r--r-- | flowy/src/shader.wgsl | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/flowy/src/shader.wgsl b/flowy/src/shader.wgsl deleted file mode 100644 index bfa4176..0000000 --- a/flowy/src/shader.wgsl +++ /dev/null @@ -1,50 +0,0 @@ - -@group(0) @binding(0) var output: texture_storage_2d<bgra8unorm, write>; -@group(0) @binding(1) var texa: texture_2d<f32>; -@group(0) @binding(2) var texb: texture_2d<f32>; - -const SDIST: i32 = 4; - -const NN: vec2<i32> = vec2(-1,-1); -const NP: vec2<i32> = vec2(-1,1); -const PN: vec2<i32> = vec2(1,-1); -const PP: vec2<i32> = vec2(1,1); - -@compute @workgroup_size(1) fn main(@builtin(global_invocation_id) global_id: vec3<u32>) { - let uv = vec2<i32>(global_id.xy); - let orig = textureLoad(texa, uv, 0); - let orignn = textureLoad(texa, uv+NN, 0); - let orignp = textureLoad(texa, uv+NP, 0); - let origpn = textureLoad(texa, uv+PN, 0); - let origpp = textureLoad(texa, uv+PP, 0); - - var best_sim = 1000.; - var best_coord = vec2(0,0); - for (var x = -SDIST; x <= SDIST; x++) { - for (var y = -SDIST; y <= SDIST; y++) { - let ov = uv + vec2(x,y); - let samp = textureLoad(texb, ov, 0); - let sampnn = textureLoad(texb, ov+NN, 0); - let sampnp = textureLoad(texb, ov+NP, 0); - let samppn = textureLoad(texb, ov+PN, 0); - let samppp = textureLoad(texb, ov+PP, 0); - let d = distance(samp.rgb, orig.rgb) - + distance(sampnn.rgb, orignn.rgb) - + distance(sampnp.rgb, orignp.rgb) - + distance(samppn.rgb, origpn.rgb) - + distance(samppp.rgb, origpp.rgb); - if d < best_sim { - best_sim = d; - best_coord = vec2(x,y); - } - }} - - let col = vec4(colormap_vec(vec2<f32>(best_coord) / f32(SDIST)), 1.); - - textureStore(output, global_id.xy, col); -} - -fn colormap_vec(v: vec2<f32>) -> vec3<f32> { - return vec3(v.y, v.x - 0.5 * v.y, -v.x - 0.5 * v.y); -} - |