From 569d5fce47de2298f161cf41f74b21009b461f13 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Sat, 8 Feb 2025 12:03:33 -0800 Subject: [PATCH] Upload bundle for mobile testing. --- main.min.js | 2 +- src/shaders/compute.wgsl | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/main.min.js b/main.min.js index 1a5b14e..fa33133 100644 --- a/main.min.js +++ b/main.min.js @@ -1,5 +1,5 @@ // src/shaders/compute.wgsl -var compute_default = "struct UBO{blockhash:array,2>,random:vec2,threshold:u32};@group(0)@binding(0)var ubo:UBO;struct WORK{nonce:vec2,found:atomic};@group(0)@binding(1)varwork:WORK;const BLAKE2B_IV_0=vec2(0xF2BDC900u,0x6A09E667u);const ROTATE_1=vec2(1u);const ROTATE_8=vec2(8u);const ROTATE_16=vec2(16u);const ROTATE_24=vec2(24u);const ROTATE_31=vec2(31u);var found:bool;@compute @workgroup_size(32)fn search(@builtin(global_invocation_id)global_id:vec3,@builtin(local_invocation_id)local_id:vec3){found = (local_id.x == 0u && atomicLoad(&work.found)!=0u);workgroupBarrier();if(found)return;main(global_id);}@compute @workgroup_size(1)fn validate(@builtin(global_invocation_id)global_id:vec3){main(global_id);}fn main(id:vec3){let m0:vec2=ubo.random ^ id.xy;let m1:vec2=ubo.blockhash[0u].xy;let m2:vec2=ubo.blockhash[0u].zw;let m3:vec2=ubo.blockhash[1u].xy;let m4:vec2=ubo.blockhash[1u].zw;var v0:vec2=BLAKE2B_IV_0;var v1:vec2=vec2(0x84CAA73Bu,0xBB67AE85u);var v2:vec2=vec2(0xFE94F82Bu,0x3C6EF372u);var v3:vec2=vec2(0x5F1D36F1u,0xA54FF53Au);var v4:vec2=vec2(0xADE682D1u,0x510E527Fu);var v5:vec2=vec2(0x2B3E6C1Fu,0x9B05688Cu);var v6:vec2=vec2(0xFB41BD6Bu,0x1F83D9ABu);var v7:vec2=vec2(0x137E2179u,0x5BE0CD19u);var v8:vec2=vec2(0xF3BCC908u,0x6A09E667u);var v9:vec2=vec2(0x84CAA73Bu,0xBB67AE85u);var v10:vec2=vec2(0xFE94F82Bu,0x3C6EF372u);var v11:vec2=vec2(0x5F1D36F1u,0xA54FF53Au);var v12:vec2=vec2(0xADE682F9u,0x510E527Fu);var v13:vec2=vec2(0x2B3E6C1Fu,0x9B05688Cu);var v14:vec2=vec2(0x04BE4294u,0xE07C2654u);var v15:vec2=vec2(0x137E2179u,0x5BE0CD19u);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((v12 ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((v13 ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ v10).yx<>ROTATE_16)|((v14 ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ v11).yx<>ROTATE_16)|((v15 ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ v10).yx<>ROTATE_16)|((v15 ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ v11).yx<>ROTATE_16)|((v12 ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((v13 ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((v14 ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((v12 ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((v13 ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ v10).yx<>ROTATE_16)|((v14 ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ v11).yx<>ROTATE_16)|((v15 ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ v10).yx<>ROTATE_16)|((v15 ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ v11).yx<>ROTATE_16)|((v12 ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((v13 ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((v14 ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((v12 ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((v13 ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ v10).yx<>ROTATE_16)|((v14 ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ v11).yx<>ROTATE_16)|((v15 ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ v10).yx<>ROTATE_16)|((v15 ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ v11).yx<>ROTATE_16)|((v12 ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((v13 ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((v14 ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((v12 ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((v13 ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ v10).yx<>ROTATE_16)|((v14 ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ v11).yx<>ROTATE_16)|((v15 ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ v10).yx<>ROTATE_16)|((v15 ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ v11).yx<>ROTATE_16)|((v12 ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((v13 ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((v14 ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((v12 ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((v13 ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ v10).yx<>ROTATE_16)|((v14 ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ v11).yx<>ROTATE_16)|((v15 ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ v10).yx<>ROTATE_16)|((v15 ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ v11).yx<>ROTATE_16)|((v12 ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((v13 ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((v14 ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((v12 ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((v13 ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ v10).yx<>ROTATE_16)|((v14 ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ v11).yx<>ROTATE_16)|((v15 ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ v10).yx<>ROTATE_16)|((v15 ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ v11).yx<>ROTATE_16)|((v12 ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((v13 ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((v14 ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((v12 ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((v13 ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ v10).yx<>ROTATE_16)|((v14 ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ v11).yx<>ROTATE_16)|((v15 ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ v10).yx<>ROTATE_16)|((v15 ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ v11).yx<>ROTATE_16)|((v12 ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((v13 ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((v14 ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((v12 ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((v13 ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ v10).yx<>ROTATE_16)|((v14 ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ v11).yx<>ROTATE_16)|((v15 ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ v10).yx<>ROTATE_16)|((v15 ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ v11).yx<>ROTATE_16)|((v12 ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((v13 ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((v14 ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((v12 ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((v13 ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ v10).yx<>ROTATE_16)|((v14 ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ v11).yx<>ROTATE_16)|((v15 ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ v10).yx<>ROTATE_16)|((v15 ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ v11).yx<>ROTATE_16)|((v12 ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((v13 ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((v14 ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((v12 ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((v13 ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ v10).yx<>ROTATE_16)|((v14 ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ v11).yx<>ROTATE_16)|((v15 ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ v10).yx<>ROTATE_16)|((v15 ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ v11).yx<>ROTATE_16)|((v12 ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((v13 ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((v14 ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((v12 ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((v13 ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ v10).yx<>ROTATE_16)|((v14 ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ v11).yx<>ROTATE_16)|((v15 ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ v10).yx<>ROTATE_16)|((v15 ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ v11).yx<>ROTATE_16)|((v12 ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((v13 ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((v14 ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((v12 ^ v0).yx<>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((v13 ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ v10).yx<>ROTATE_16)|((v14 ^ v2).yx<>ROTATE_24)|((v7 ^ v11).yx<>ROTATE_16)|((v15 ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ v10).yx<>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((v13 ^ v2).yx<ubo.threshold&&atomicLoad(&work.found)==0u){atomicStore(&work.found,1u);work.nonce=m0;}return;}"; +var compute_default = "struct UBO{blockhash:array,2>,random:vec2,threshold:u32};@group(0)@binding(0)var ubo:UBO;struct WORK{nonce:vec2,found:atomic};@group(0)@binding(1)varwork:WORK;const BLAKE2B_IV_0=vec2(0xF2BDC900u,0x6A09E667u);const ROTATE_1=vec2(1u);const ROTATE_8=vec2(8u);const ROTATE_16=vec2(16u);const ROTATE_24=vec2(24u);const ROTATE_31=vec2(31u);var found:bool;@compute @workgroup_size(32)fn search(@builtin(global_invocation_id)global_id:vec3,@builtin(local_invocation_id)local_id:vec3){found=(local_id.x==0u&&atomicLoad(&work.found)!=0u);workgroupBarrier();if(found){return;}main(global_id);}@compute @workgroup_size(1)fn validate(@builtin(global_invocation_id)global_id:vec3){main(global_id);}fn main(id:vec3){let m0:vec2=ubo.random ^ id.xy;let m1:vec2=ubo.blockhash[0u].xy;let m2:vec2=ubo.blockhash[0u].zw;let m3:vec2=ubo.blockhash[1u].xy;let m4:vec2=ubo.blockhash[1u].zw;var v0:vec2=BLAKE2B_IV_0;var v1:vec2=vec2(0x84CAA73Bu,0xBB67AE85u);var v2:vec2=vec2(0xFE94F82Bu,0x3C6EF372u);var v3:vec2=vec2(0x5F1D36F1u,0xA54FF53Au);var v4:vec2=vec2(0xADE682D1u,0x510E527Fu);var v5:vec2=vec2(0x2B3E6C1Fu,0x9B05688Cu);var v6:vec2=vec2(0xFB41BD6Bu,0x1F83D9ABu);var v7:vec2=vec2(0x137E2179u,0x5BE0CD19u);var v8:vec2=vec2(0xF3BCC908u,0x6A09E667u);var v9:vec2=vec2(0x84CAA73Bu,0xBB67AE85u);var vA:vec2=vec2(0xFE94F82Bu,0x3C6EF372u);var vB:vec2=vec2(0x5F1D36F1u,0xA54FF53Au);var vC:vec2=vec2(0xADE682F9u,0x510E527Fu);var vD:vec2=vec2(0x2B3E6C1Fu,0x9B05688Cu);var vE:vec2=vec2(0x04BE4294u,0xE07C2654u);var vF:vec2=vec2(0x137E2179u,0x5BE0CD19u);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((vC ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((vD ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ vA).yx<>ROTATE_16)|((vE ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ vB).yx<>ROTATE_16)|((vF ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ vA).yx<>ROTATE_16)|((vF ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ vB).yx<>ROTATE_16)|((vC ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((vD ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((vE ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((vC ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((vD ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ vA).yx<>ROTATE_16)|((vE ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ vB).yx<>ROTATE_16)|((vF ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ vA).yx<>ROTATE_16)|((vF ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ vB).yx<>ROTATE_16)|((vC ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((vD ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((vE ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((vC ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((vD ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ vA).yx<>ROTATE_16)|((vE ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ vB).yx<>ROTATE_16)|((vF ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ vA).yx<>ROTATE_16)|((vF ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ vB).yx<>ROTATE_16)|((vC ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((vD ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((vE ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((vC ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((vD ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ vA).yx<>ROTATE_16)|((vE ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ vB).yx<>ROTATE_16)|((vF ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ vA).yx<>ROTATE_16)|((vF ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ vB).yx<>ROTATE_16)|((vC ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((vD ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((vE ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((vC ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((vD ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ vA).yx<>ROTATE_16)|((vE ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ vB).yx<>ROTATE_16)|((vF ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ vA).yx<>ROTATE_16)|((vF ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ vB).yx<>ROTATE_16)|((vC ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((vD ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((vE ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((vC ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((vD ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ vA).yx<>ROTATE_16)|((vE ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ vB).yx<>ROTATE_16)|((vF ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ vA).yx<>ROTATE_16)|((vF ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ vB).yx<>ROTATE_16)|((vC ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((vD ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((vE ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((vC ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((vD ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ vA).yx<>ROTATE_16)|((vE ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ vB).yx<>ROTATE_16)|((vF ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ vA).yx<>ROTATE_16)|((vF ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ vB).yx<>ROTATE_16)|((vC ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((vD ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((vE ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((vC ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((vD ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ vA).yx<>ROTATE_16)|((vE ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ vB).yx<>ROTATE_16)|((vF ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ vA).yx<>ROTATE_16)|((vF ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ vB).yx<>ROTATE_16)|((vC ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((vD ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((vE ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((vC ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((vD ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ vA).yx<>ROTATE_16)|((vE ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ vB).yx<>ROTATE_16)|((vF ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ vA).yx<>ROTATE_16)|((vF ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ vB).yx<>ROTATE_16)|((vC ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((vD ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((vE ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((vC ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((vD ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ vA).yx<>ROTATE_16)|((vE ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ vB).yx<>ROTATE_16)|((vF ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ vA).yx<>ROTATE_16)|((vF ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ vB).yx<>ROTATE_16)|((vC ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((vD ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((vE ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((vC ^ v0).yx<>ROTATE_31);v1=v1+v5+vec2(0u,u32(v1.x+v5.x>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((vD ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ vA).yx<>ROTATE_16)|((vE ^ v2).yx<>ROTATE_31);v3=v3+v7+vec2(0u,u32(v3.x+v7.x>ROTATE_24)|((v7 ^ vB).yx<>ROTATE_16)|((vF ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ vA).yx<>ROTATE_16)|((vF ^ v0).yx<>ROTATE_31);v1=v1+v6+vec2(0u,u32(v1.x+v6.x>ROTATE_24)|((v6 ^ vB).yx<>ROTATE_16)|((vC ^ v1).yx<>ROTATE_31);v2=v2+v7+vec2(0u,u32(v2.x+v7.x>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((vD ^ v2).yx<>ROTATE_31);v3=v3+v4+vec2(0u,u32(v3.x+v4.x>ROTATE_24)|((v4 ^ v9).yx<>ROTATE_16)|((vE ^ v3).yx<>ROTATE_31);v0=v0+v4+vec2(0u,u32(v0.x+v4.x>ROTATE_24)|((v4 ^ v8).yx<>ROTATE_16)|((vC ^ v0).yx<>ROTATE_24)|((v5 ^ v9).yx<>ROTATE_16)|((vD ^ v1).yx<>ROTATE_31);v2=v2+v6+vec2(0u,u32(v2.x+v6.x>ROTATE_24)|((v6 ^ vA).yx<>ROTATE_16)|((vE ^ v2).yx<>ROTATE_24)|((v7 ^ vB).yx<>ROTATE_16)|((vF ^ v3).yx<>ROTATE_31);v0=v0+v5+vec2(0u,u32(v0.x+v5.x>ROTATE_24)|((v5 ^ vA).yx<>ROTATE_24)|((v7 ^ v8).yx<>ROTATE_16)|((vD ^ v2).yx<ubo.threshold&&atomicLoad(&work.found)==0u){atomicStore(&work.found,1u);work.nonce=m0;}return;}"; // src/shaders/gl-fragment.ts var NanoPowGlFragmentShader = `#version 300 es diff --git a/src/shaders/compute.wgsl b/src/shaders/compute.wgsl index 3d7aab9..2c178bd 100644 --- a/src/shaders/compute.wgsl +++ b/src/shaders/compute.wgsl @@ -51,9 +51,9 @@ var found: bool; */ @compute @workgroup_size(32) fn search(@builtin(global_invocation_id) global_id: vec3, @builtin(local_invocation_id) local_id: vec3) { - // found = (local_id.x == 0u && atomicLoad(&work.found) != 0u); - // workgroupBarrier(); - // if (found) { return; } + found = (local_id.x == 0u && atomicLoad(&work.found) != 0u); + workgroupBarrier(); + if (found) { return; } main(global_id); } -- 2.34.1