@ludicon/spark.js
Version:
Real-Time GPU Texture Codecs for the Web
5 lines (4 loc) • 8.09 kB
JavaScript
const spark_bc4_r = "enable f16;alias RTArr=array<vec2u>;struct _1{_0:RTArr,}@binding(1) @group(0) var _2:sampler;@binding(0) @group(0) var _3:texture_2d<f32>;var<private>x_746:vec3u;var<private>x_752:vec3u;@binding(2) @group(0) var<storage,read_write>x_844:_1;const _4=vec2f(1.0f);const _5=array<f32,8u>(0.0f,0.140625f,0.28125f,0.421875f,0.578125f,0.71875f,0.859375f,1.0f);fn _6(){var _7:array<f32,8u>;var _8:array<f32,8u>;var _9:bool;var _a:bool;var _b:f16;var _c:f16;var _d:f16;var _e:f16;var _f:f16;var _g:f16;var _h:vec2u;var _i:vec2u;var _j:f16;var _k:f16;var _l:bool;var _m:f16;var _n:f16;var _o:bool;var _p:vec2u;var _q:vec2u;switch(0u){default:{let _r=bitcast<vec2u>(vec2i(textureDimensions(_3,0i)));let _s=((_r.x+3u)/4u);let _t=x_746;let _u=x_746.xy;let _v=x_746.x;let _w=(_v>=_s);_a=_w;if(!(_w)){_9=(_t.y>=((_r.y+3u)/4u));_a=_9;}if(_a){break;}let _x=((vec2f(bitcast<vec2i>((_u*vec2u(4u))))+_4)*(_4/vec2f(vec2i(textureDimensions(_3,0i)))));let _y=vec4h(textureGather(0i,_3,_2,_x,vec2i()));let _z=vec4h(textureGather(0i,_3,_2,_x,vec2i(2i,0i)));let _10=vec4h(textureGather(0i,_3,_2,_x,vec2i(0i,2i)));let _11=vec4h(textureGather(0i,_3,_2,_x,vec2i(2i)));let _12=_y.w;let _13=_y.z;let _14=_z.w;let _15=_z.z;let _16=_y.x;let _17=_y.y;let _18=_z.x;let _19=_z.y;let _1a=_10.w;let _1b=_10.z;let _1c=_11.w;let _1d=_11.z;let _1e=_10.x;let _1f=_10.y;let _1g=_11.x;let _1h=_11.y;let _1i=min(min(min(min(min(min(min(min(min(min(min(min(min(min(min(min(1.0h,_12),_13),_14),_15),_16),_17),_18),_19),_1a),_1b),_1c),_1d),_1e),_1f),_1g),_1h);let _1j=max(max(max(max(max(max(max(max(max(max(max(max(max(max(max(max(0.0h,_12),_13),_14),_15),_16),_17),_18),_19),_1a),_1b),_1c),_1d),_1e),_1f),_1g),_1h);let _1k=(_1j-_1i);let _1l=(_1k*0.03125h);_c=_1l;if((_1k<0.0625h)){_b=max(0.0h,((2.0h*_1l)-0.0625h));_c=_b;}_e=_1i;if((_1i>0.0h)){_d=(_1i+_c);_e=_d;}_g=_1j;if((_e<1.0h)){_f=(_1j-_c);_g=_f;}let _1m=trunc(((_g*255.0h)+0.5h));let _1n=trunc(((_e*255.0h)+0.5h));switch(0u){default:{if((_1m==_1n)){_i=vec2u();break;}let _1o=(1.0h/(_1n-_1m));let _1p=(_1m*-(_1o));let _1q=(_1o*255.0h);let _1r=(0u|(u32(((clamp(((_1a*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(0i)));_h=vec2u(((((((((0u|(u32(((clamp(((_12*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(0i)))|(u32(((clamp(((_13*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(3i)))|(u32(((clamp(((_14*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(6i)))|(u32(((clamp(((_15*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(9i)))|(u32(((clamp(((_16*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(12i)))|(u32(((clamp(((_17*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(15i)))|(u32(((clamp(((_18*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(18i)))|(u32(((clamp(((_19*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(21i))),_1r);_h.y=(((((((_1r|(u32(((clamp(((_1b*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(3i)))|(u32(((clamp(((_1c*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(6i)))|(u32(((clamp(((_1d*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(9i)))|(u32(((clamp(((_1e*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(12i)))|(u32(((clamp(((_1f*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(15i)))|(u32(((clamp(((_1g*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(18i)))|(u32(((clamp(((_1h*_1q)+_1p),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(21i)));_i=_h;}}switch(0u){default:{let _1s=_i.x;_7=_5;let _1t=_7[((_1s>>bitcast<u32>(0i))&7u)];let _1u=(1.0f-_1t);let _1v=f32(_12);_7=_5;let _1w=_7[((_1s>>bitcast<u32>(3i))&7u)];let _1x=(1.0f-_1w);let _1y=f32(_13);_7=_5;let _1z=_7[((_1s>>bitcast<u32>(6i))&7u)];let _20=(1.0f-_1z);let _21=f32(_14);_7=_5;let _22=_7[((_1s>>bitcast<u32>(9i))&7u)];let _23=(1.0f-_22);let _24=f32(_15);_7=_5;let _25=_7[((_1s>>bitcast<u32>(12i))&7u)];let _26=(1.0f-_25);let _27=f32(_16);_7=_5;let _28=_7[((_1s>>bitcast<u32>(15i))&7u)];let _29=(1.0f-_28);let _2a=f32(_17);_7=_5;let _2b=_7[((_1s>>bitcast<u32>(18i))&7u)];let _2c=(1.0f-_2b);let _2d=f32(_18);_7=_5;let _2e=_7[((_1s>>bitcast<u32>(21i))&7u)];let _2f=(1.0f-_2e);let _2g=f32(_19);let _2h=_i.y;_8=_5;let _2i=_8[((_2h>>bitcast<u32>(0i))&7u)];let _2j=(1.0f-_2i);let _2k=f32(_1a);_8=_5;let _2l=_8[((_2h>>bitcast<u32>(3i))&7u)];let _2m=(1.0f-_2l);let _2n=f32(_1b);_8=_5;let _2o=_8[((_2h>>bitcast<u32>(6i))&7u)];let _2p=(1.0f-_2o);let _2q=f32(_1c);_8=_5;let _2r=_8[((_2h>>bitcast<u32>(9i))&7u)];let _2s=(1.0f-_2r);let _2t=f32(_1d);_8=_5;let _2u=_8[((_2h>>bitcast<u32>(12i))&7u)];let _2v=(1.0f-_2u);let _2w=f32(_1e);_8=_5;let _2x=_8[((_2h>>bitcast<u32>(15i))&7u)];let _2y=(1.0f-_2x);let _2z=f32(_1f);_8=_5;let _30=_8[((_2h>>bitcast<u32>(18i))&7u)];let _31=(1.0f-_30);let _32=f32(_1g);_8=_5;let _33=_8[((_2h>>bitcast<u32>(21i))&7u)];let _34=(1.0f-_33);let _35=((((((((((((((((_1u*_1u)+(_1x*_1x))+(_20*_20))+(_23*_23))+(_26*_26))+(_29*_29))+(_2c*_2c))+(_2f*_2f))+(_2j*_2j))+(_2m*_2m))+(_2p*_2p))+(_2s*_2s))+(_2v*_2v))+(_2y*_2y))+(_31*_31))+(_34*_34));let _36=((((((((((((((((_1t*_1t)+(_1w*_1w))+(_1z*_1z))+(_22*_22))+(_25*_25))+(_28*_28))+(_2b*_2b))+(_2e*_2e))+(_2i*_2i))+(_2l*_2l))+(_2o*_2o))+(_2r*_2r))+(_2u*_2u))+(_2x*_2x))+(_30*_30))+(_33*_33));let _37=((((((((((((((((_1u*_1t)+(_1x*_1w))+(_20*_1z))+(_23*_22))+(_26*_25))+(_29*_28))+(_2c*_2b))+(_2f*_2e))+(_2j*_2i))+(_2m*_2l))+(_2p*_2o))+(_2s*_2r))+(_2v*_2u))+(_2y*_2x))+(_31*_30))+(_34*_33));let _38=f32(_1h);let _39=((((((((((((((((_1u*_1v)+(_1x*_1y))+(_20*_21))+(_23*_24))+(_26*_27))+(_29*_2a))+(_2c*_2d))+(_2f*_2g))+(_2j*_2k))+(_2m*_2n))+(_2p*_2q))+(_2s*_2t))+(_2v*_2w))+(_2y*_2z))+(_31*_32))+(_34*_38));let _3a=((((((((((((((((_1t*_1v)+(_1w*_1y))+(_1z*_21))+(_22*_24))+(_25*_27))+(_28*_2a))+(_2b*_2d))+(_2e*_2g))+(_2i*_2k))+(_2l*_2n))+(_2o*_2q))+(_2r*_2t))+(_2u*_2w))+(_2x*_2z))+(_30*_32))+(_33*_38));let _3b=((_35*_36)-(_37*_37));if((abs(_3b)<0.00009999999747378752f)){_m=_1n;_n=_1m;_o=false;break;}let _3c=(1.0f/_3b);_j=trunc(((f16(clamp((((_39*_36)-(_3a*_37))*_3c),0.0f,1.0f))*255.0h)+0.5h));_k=trunc(((f16(clamp((((_3a*_35)-(_39*_37))*_3c),0.0f,1.0f))*255.0h)+0.5h));_l=(!((_j==_1m))|!((_k==_1n)));_m=_k;_n=_j;_o=_l;}}var _3d:vec2u;_q=_i;if(_o){switch(0u){default:{if((_n==_m)){_p=vec2u();break;}let _3e=(1.0h/(_m-_n));let _3f=(_n*-(_3e));let _3g=(_3e*255.0h);let _3h=(0u|(u32(((clamp(((_1a*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(0i)));_3d=vec2u(((((((((0u|(u32(((clamp(((_12*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(0i)))|(u32(((clamp(((_13*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(3i)))|(u32(((clamp(((_14*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(6i)))|(u32(((clamp(((_15*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(9i)))|(u32(((clamp(((_16*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(12i)))|(u32(((clamp(((_17*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(15i)))|(u32(((clamp(((_18*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(18i)))|(u32(((clamp(((_19*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(21i))),_3h);_3d.y=(((((((_3h|(u32(((clamp(((_1b*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(3i)))|(u32(((clamp(((_1c*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(6i)))|(u32(((clamp(((_1d*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(9i)))|(u32(((clamp(((_1e*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(12i)))|(u32(((clamp(((_1f*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(15i)))|(u32(((clamp(((_1g*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(18i)))|(u32(((clamp(((_1h*_3g)+_3f),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(21i)));_p=_3d;}}_q=_p;}let _3i=_q.x;let _3j=(((_3i&7190235u)+2396745u)^(_3i&9586980u));let _3k=(_3j^(((19173960u-(_3j&14380470u))&19173960u)>>bitcast<u32>(3i)));let _3l=_q.y;let _3m=(((_3l&7190235u)+2396745u)^(_3l&9586980u));let _3n=(_3k>>bitcast<u32>(16i));var _3o=vec2u(((u32(_n)|(u32(_m)<<bitcast<u32>(8i)))|(_3k<<bitcast<u32>(16i))),_3n);_3o.y=(_3n|((_3m^(((19173960u-(_3m&14380470u))&19173960u)>>bitcast<u32>(3i)))<<bitcast<u32>(8i)));x_844._0[((_t.y*((_s+31u)&4294967264u))+_v)]=_3o;}}return;}@compute @workgroup_size(16i, 16i, 1i) fn main(@builtin(global_invocation_id) _3p:vec3u,@builtin(local_invocation_id) _3q:vec3u,@builtin(workgroup_id) _3r:vec3u){x_746=_3p;x_752=_3q;_6();}";
export {
spark_bc4_r as default
};