@ludicon/spark.js
Version:
Real-Time GPU Texture Codecs for the Web
5 lines (4 loc) • 8.82 kB
JavaScript
const spark_eac_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_1216:vec3u;var<private>x_1223:vec3u;@binding(2) @group(0) var<storage,read_write>x_1313:_1;const _4=vec2f(1.0f);fn _5(){var _6:array<f16,16u>;var _7:array<f16,16u>;var _8:bool;var _9:bool;var _a:f16;var _b:f16;var _c:f16;var _d:i32;var _e:u32;var _f:u32;var _g:f16;var _h:f16;var _i:u32;var _j:u32;var _k:f16;var _l:f16;var _m:u32;var _n:u32;var _o:f16;var _p:f16;var _q:u32;var _r:u32;var _s:f16;var _t:f16;var _u:u32;var _v:u32;var _w:f16;var _x:f16;var _y:u32;var _z:u32;var _10:f16;var _11:f16;var _12:u32;var _13:u32;var _14:f16;var _15:f16;var _16:u32;var _17:u32;var _18:f16;var _19:f16;var _1a:u32;var _1b:u32;var _1c:f16;var _1d:f16;var _1e:u32;var _1f:u32;var _1g:f16;var _1h:f16;var _1i:u32;var _1j:u32;var _1k:f16;var _1l:f16;var _1m:u32;var _1n:u32;var _1o:f16;var _1p:f16;var _1q:u32;var _1r:u32;var _1s:f16;var _1t:f16;var _1u:u32;var _1v:u32;var _1w:f16;var _1x:f16;var _1y:u32;var _1z:u32;var _20:f16;var _21:f16;var _22:u32;var _23:u32;var _24:f16;var _25:f16;switch(0u){default:{let _26=bitcast<vec2u>(vec2i(textureDimensions(_3,0i)));let _27=((_26.x+3u)/4u);let _28=x_1216;let _29=x_1216.xy;let _2a=x_1216.x;let _2b=(_2a>=_27);_9=_2b;if(!(_2b)){_8=(_28.y>=((_26.y+3u)/4u));_9=_8;}if(_9){break;}let _2c=((vec2f(bitcast<vec2i>((_29*vec2u(4u))))+_4)*(_4/vec2f(vec2i(textureDimensions(_3,0i)))));let _2d=vec4h(textureGather(0i,_3,_2,_2c,vec2i()));let _2e=vec4h(textureGather(0i,_3,_2,_2c,vec2i(2i,0i)));let _2f=vec4h(textureGather(0i,_3,_2,_2c,vec2i(0i,2i)));let _2g=vec4h(textureGather(0i,_3,_2,_2c,vec2i(2i)));let _2h=array<f16,16u>(_2d.w,_2d.z,_2e.w,_2e.z,_2d.x,_2d.y,_2e.x,_2e.y,_2f.w,_2f.z,_2g.w,_2g.z,_2f.x,_2f.y,_2g.x,_2g.y);_7=_2h;_6=_2h;let _2i=_6[0i];_a=_2i;_b=_2i;_c=_2i;_d=1i;loop{var _2j:f16;var _2k:f16;var _2l:f16;var _2m:i32;if((_d<16i)){}else{break;}continuing{let _2n=_6[_d];_2j=min(_c,_2n);_2k=max(_b,_2n);_2l=(_a+_2n);_2m=(_d+1i);_a=_2l;_b=_2k;_c=_2j;_d=_2m;}}let _2o=(_c*255.0h);let _2p=(_b*255.0h);let _2q=(_2p-_2o);let _2r=(_a*15.9375h);let _2s=(_2q>8.0h);let _2t=clamp(trunc((_2q*select(0.0543212890625h,0.041259765625h,_2s))),1.0h,15.0h);let _2u=(2.0h/_2t);let _2v=(255.0h*_2u);let _2w=(30.0h-(trunc((0.5h*(_2t+(_2o+_2p))))*_2u));let _2x=select(4289374800u,2857717760u,_2s);let _2y=select(1073741823u,1073741738u,_2s);let _2z=~(select(14526u,28143u,(select(0i,1i,_2s)==0i)));let _30=clamp(u32(((_7[0i]*_2v)+_2w)),0u,59u);let _31=select(0u,1u,(_30>28u));let _32=(_30-29u);let _33=(_31==0u);if(_33){_e=~(_32);_f=_e;}else{_f=_32;}let _34=((select(_2x,_2y,(_f>15u))>>((2u*_f)&31u))&3u);let _35=f16(((_2z>>(4u*_34))&15u));if(_33){_g=(-1.0h-_35);_h=_g;}else{_h=_35;}let _36=(0u|((_34|(_31<<2u))<<bitcast<u32>(21i)));let _37=clamp(u32(((_7[4i]*_2v)+_2w)),0u,59u);let _38=select(0u,1u,(_37>28u));let _39=(_37-29u);let _3a=(_38==0u);if(_3a){_i=~(_39);_j=_i;}else{_j=_39;}let _3b=((select(_2x,_2y,(_j>15u))>>((2u*_j)&31u))&3u);let _3c=f16(((_2z>>(4u*_3b))&15u));if(_3a){_k=(-1.0h-_3c);_l=_k;}else{_l=_3c;}let _3d=(_h+_l);let _3e=(_36|((_3b|(_38<<2u))<<bitcast<u32>(18i)));let _3f=clamp(u32(((_7[8i]*_2v)+_2w)),0u,59u);let _3g=select(0u,1u,(_3f>28u));let _3h=(_3f-29u);let _3i=(_3g==0u);if(_3i){_m=~(_3h);_n=_m;}else{_n=_3h;}let _3j=((select(_2x,_2y,(_n>15u))>>((2u*_n)&31u))&3u);let _3k=f16(((_2z>>(4u*_3j))&15u));if(_3i){_o=(-1.0h-_3k);_p=_o;}else{_p=_3k;}let _3l=(_3d+_p);let _3m=(_3e|((_3j|(_3g<<2u))<<bitcast<u32>(15i)));let _3n=clamp(u32(((_7[12i]*_2v)+_2w)),0u,59u);let _3o=select(0u,1u,(_3n>28u));let _3p=(_3n-29u);let _3q=(_3o==0u);if(_3q){_q=~(_3p);_r=_q;}else{_r=_3p;}let _3r=((select(_2x,_2y,(_r>15u))>>((2u*_r)&31u))&3u);let _3s=f16(((_2z>>(4u*_3r))&15u));if(_3q){_s=(-1.0h-_3s);_t=_s;}else{_t=_3s;}let _3t=(_3l+_t);let _3u=(_3m|((_3r|(_3o<<2u))<<bitcast<u32>(12i)));let _3v=clamp(u32(((_7[1i]*_2v)+_2w)),0u,59u);let _3w=select(0u,1u,(_3v>28u));let _3x=(_3v-29u);let _3y=(_3w==0u);if(_3y){_u=~(_3x);_v=_u;}else{_v=_3x;}let _3z=((select(_2x,_2y,(_v>15u))>>((2u*_v)&31u))&3u);let _40=f16(((_2z>>(4u*_3z))&15u));if(_3y){_w=(-1.0h-_40);_x=_w;}else{_x=_40;}let _41=(_3t+_x);let _42=(_3u|((_3z|(_3w<<2u))<<bitcast<u32>(9i)));let _43=clamp(u32(((_7[5i]*_2v)+_2w)),0u,59u);let _44=select(0u,1u,(_43>28u));let _45=(_43-29u);let _46=(_44==0u);if(_46){_y=~(_45);_z=_y;}else{_z=_45;}let _47=((select(_2x,_2y,(_z>15u))>>((2u*_z)&31u))&3u);let _48=f16(((_2z>>(4u*_47))&15u));if(_46){_10=(-1.0h-_48);_11=_10;}else{_11=_48;}let _49=(_41+_11);let _4a=(_42|((_47|(_44<<2u))<<bitcast<u32>(6i)));let _4b=clamp(u32(((_7[9i]*_2v)+_2w)),0u,59u);let _4c=select(0u,1u,(_4b>28u));let _4d=(_4b-29u);let _4e=(_4c==0u);if(_4e){_12=~(_4d);_13=_12;}else{_13=_4d;}let _4f=((select(_2x,_2y,(_13>15u))>>((2u*_13)&31u))&3u);let _4g=f16(((_2z>>(4u*_4f))&15u));if(_4e){_14=(-1.0h-_4g);_15=_14;}else{_15=_4g;}let _4h=(_49+_15);let _4i=(_4a|((_4f|(_4c<<2u))<<bitcast<u32>(3i)));let _4j=clamp(u32(((_7[13i]*_2v)+_2w)),0u,59u);let _4k=select(0u,1u,(_4j>28u));let _4l=(_4j-29u);let _4m=(_4k==0u);if(_4m){_16=~(_4l);_17=_16;}else{_17=_4l;}let _4n=((select(_2x,_2y,(_17>15u))>>((2u*_17)&31u))&3u);let _4o=f16(((_2z>>(4u*_4n))&15u));if(_4m){_18=(-1.0h-_4o);_19=_18;}else{_19=_4o;}let _4p=(_4h+_19);let _4q=(_4i|((_4n|(_4k<<2u))<<bitcast<u32>(0i)));let _4r=clamp(u32(((_7[2i]*_2v)+_2w)),0u,59u);let _4s=select(0u,1u,(_4r>28u));let _4t=(_4r-29u);let _4u=(_4s==0u);if(_4u){_1a=~(_4t);_1b=_1a;}else{_1b=_4t;}let _4v=((select(_2x,_2y,(_1b>15u))>>((2u*_1b)&31u))&3u);let _4w=f16(((_2z>>(4u*_4v))&15u));_1d=_4w;if(_4u){_1c=(-1.0h-_4w);_1d=_1c;}let _4x=(_4p+_1d);let _4y=(0u|((_4v|(_4s<<2u))<<bitcast<u32>(21i)));let _4z=clamp(u32(((_7[6i]*_2v)+_2w)),0u,59u);let _50=select(0u,1u,(_4z>28u));let _51=(_4z-29u);let _52=(_50==0u);if(_52){_1e=~(_51);_1f=_1e;}else{_1f=_51;}let _53=((select(_2x,_2y,(_1f>15u))>>((2u*_1f)&31u))&3u);let _54=f16(((_2z>>(4u*_53))&15u));_1h=_54;if(_52){_1g=(-1.0h-_54);_1h=_1g;}let _55=(_4x+_1h);let _56=(_4y|((_53|(_50<<2u))<<bitcast<u32>(18i)));let _57=clamp(u32(((_7[10i]*_2v)+_2w)),0u,59u);let _58=select(0u,1u,(_57>28u));let _59=(_57-29u);let _5a=(_58==0u);if(_5a){_1i=~(_59);_1j=_1i;}else{_1j=_59;}let _5b=((select(_2x,_2y,(_1j>15u))>>((2u*_1j)&31u))&3u);let _5c=f16(((_2z>>(4u*_5b))&15u));_1l=_5c;if(_5a){_1k=(-1.0h-_5c);_1l=_1k;}let _5d=(_55+_1l);let _5e=(_56|((_5b|(_58<<2u))<<bitcast<u32>(15i)));let _5f=clamp(u32(((_7[14i]*_2v)+_2w)),0u,59u);let _5g=select(0u,1u,(_5f>28u));let _5h=(_5f-29u);let _5i=(_5g==0u);if(_5i){_1m=~(_5h);_1n=_1m;}else{_1n=_5h;}let _5j=((select(_2x,_2y,(_1n>15u))>>((2u*_1n)&31u))&3u);let _5k=f16(((_2z>>(4u*_5j))&15u));_1p=_5k;if(_5i){_1o=(-1.0h-_5k);_1p=_1o;}let _5l=(_5d+_1p);let _5m=(_5e|((_5j|(_5g<<2u))<<bitcast<u32>(12i)));let _5n=clamp(u32(((_7[3i]*_2v)+_2w)),0u,59u);let _5o=select(0u,1u,(_5n>28u));let _5p=(_5n-29u);let _5q=(_5o==0u);if(_5q){_1q=~(_5p);_1r=_1q;}else{_1r=_5p;}let _5r=((select(_2x,_2y,(_1r>15u))>>((2u*_1r)&31u))&3u);let _5s=f16(((_2z>>(4u*_5r))&15u));_1t=_5s;if(_5q){_1s=(-1.0h-_5s);_1t=_1s;}let _5t=(_5l+_1t);let _5u=(_5m|((_5r|(_5o<<2u))<<bitcast<u32>(9i)));let _5v=clamp(u32(((_7[7i]*_2v)+_2w)),0u,59u);let _5w=select(0u,1u,(_5v>28u));let _5x=(_5v-29u);let _5y=(_5w==0u);if(_5y){_1u=~(_5x);_1v=_1u;}else{_1v=_5x;}let _5z=((select(_2x,_2y,(_1v>15u))>>((2u*_1v)&31u))&3u);let _60=f16(((_2z>>(4u*_5z))&15u));_1x=_60;if(_5y){_1w=(-1.0h-_60);_1x=_1w;}let _61=(_5t+_1x);let _62=(_5u|((_5z|(_5w<<2u))<<bitcast<u32>(6i)));let _63=clamp(u32(((_7[11i]*_2v)+_2w)),0u,59u);let _64=select(0u,1u,(_63>28u));let _65=(_63-29u);let _66=(_64==0u);if(_66){_1y=~(_65);_1z=_1y;}else{_1z=_65;}let _67=((select(_2x,_2y,(_1z>15u))>>((2u*_1z)&31u))&3u);let _68=f16(((_2z>>(4u*_67))&15u));_21=_68;if(_66){_20=(-1.0h-_68);_21=_20;}let _69=(_61+_21);let _6a=(_62|((_67|(_64<<2u))<<bitcast<u32>(3i)));let _6b=clamp(u32(((_7[15i]*_2v)+_2w)),0u,59u);let _6c=select(0u,1u,(_6b>28u));let _6d=(_6b-29u);let _6e=(_6c==0u);if(_6e){_22=~(_6d);_23=_22;}else{_23=_6d;}let _6f=((select(_2x,_2y,(_23>15u))>>((2u*_23)&31u))&3u);let _6g=f16(((_2z>>(4u*_6f))&15u));_25=_6g;if(_6e){_24=(-1.0h-_6g);_25=_24;}let _6h=(_6a|((_6f|(_6c<<2u))<<bitcast<u32>(0i)));let _6i=(_4q&255u);var _6j=vec2u((((u32(clamp(((f32(_2r)-((f32((_69+_25))*f32(_2t))*0.0625f))+0.5f),0.0f,255.0f))|((u32(_2t)<<bitcast<u32>(12i))|(select(13u,2u,_2s)<<bitcast<u32>(8i))))|(_4q&16711680u))|((_4q&65280u)<<bitcast<u32>(16i))),_6i);_6j.y=(((_6i|((_6h&16711680u)>>bitcast<u32>(8i)))|((_6h&65280u)<<bitcast<u32>(8i)))|((_6h&255u)<<bitcast<u32>(24i)));x_1313._0[((_28.y*((_27+31u)&4294967264u))+_2a)]=_6j;}}return;}@compute @workgroup_size(16i, 16i, 1i) fn main(@builtin(global_invocation_id) _6k:vec3u,@builtin(local_invocation_id) _6l:vec3u,@builtin(workgroup_id) _6m:vec3u){x_1216=_6k;x_1223=_6l;_5();}";
export {
spark_eac_r as default
};