UNPKG

@ludicon/spark.js

Version:

Real-Time GPU Texture Codecs for the Web

5 lines (4 loc) 8.3 kB
const _ = "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_781:vec3u;var<private>x_787:vec3u;@binding(2) @group(0) var<storage,read_write>x_879:_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_781;let _u=x_781.xy;let _v=x_781.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));let _1o=select(_1n,127.0h,((_1n==128.0h)|(_1n==126.0h)));let _1p=select(_1m,127.0h,((_1m==128.0h)|(_1m==126.0h)));switch(0u){default:{if((_1p==_1o)){_i=vec2u();break;}let _1q=(1.0h/(_1o-_1p));let _1r=(_1p*-(_1q));let _1s=(_1q*255.0h);let _1t=(0u|(u32(((clamp(((_1a*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(0i)));_h=vec2u(((((((((0u|(u32(((clamp(((_12*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(0i)))|(u32(((clamp(((_13*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(3i)))|(u32(((clamp(((_14*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(6i)))|(u32(((clamp(((_15*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(9i)))|(u32(((clamp(((_16*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(12i)))|(u32(((clamp(((_17*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(15i)))|(u32(((clamp(((_18*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(18i)))|(u32(((clamp(((_19*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(21i))),_1t);_h.y=(((((((_1t|(u32(((clamp(((_1b*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(3i)))|(u32(((clamp(((_1c*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(6i)))|(u32(((clamp(((_1d*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(9i)))|(u32(((clamp(((_1e*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(12i)))|(u32(((clamp(((_1f*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(15i)))|(u32(((clamp(((_1g*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(18i)))|(u32(((clamp(((_1h*_1s)+_1r),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(21i)));_i=_h;}}switch(0u){default:{let _1u=_i.x;_7=_5;let _1v=_7[((_1u>>bitcast<u32>(0i))&7u)];let _1w=(1.0f-_1v);let _1x=f32(_12);_7=_5;let _1y=_7[((_1u>>bitcast<u32>(3i))&7u)];let _1z=(1.0f-_1y);let _20=f32(_13);_7=_5;let _21=_7[((_1u>>bitcast<u32>(6i))&7u)];let _22=(1.0f-_21);let _23=f32(_14);_7=_5;let _24=_7[((_1u>>bitcast<u32>(9i))&7u)];let _25=(1.0f-_24);let _26=f32(_15);_7=_5;let _27=_7[((_1u>>bitcast<u32>(12i))&7u)];let _28=(1.0f-_27);let _29=f32(_16);_7=_5;let _2a=_7[((_1u>>bitcast<u32>(15i))&7u)];let _2b=(1.0f-_2a);let _2c=f32(_17);_7=_5;let _2d=_7[((_1u>>bitcast<u32>(18i))&7u)];let _2e=(1.0f-_2d);let _2f=f32(_18);_7=_5;let _2g=_7[((_1u>>bitcast<u32>(21i))&7u)];let _2h=(1.0f-_2g);let _2i=f32(_19);let _2j=_i.y;_8=_5;let _2k=_8[((_2j>>bitcast<u32>(0i))&7u)];let _2l=(1.0f-_2k);let _2m=f32(_1a);_8=_5;let _2n=_8[((_2j>>bitcast<u32>(3i))&7u)];let _2o=(1.0f-_2n);let _2p=f32(_1b);_8=_5;let _2q=_8[((_2j>>bitcast<u32>(6i))&7u)];let _2r=(1.0f-_2q);let _2s=f32(_1c);_8=_5;let _2t=_8[((_2j>>bitcast<u32>(9i))&7u)];let _2u=(1.0f-_2t);let _2v=f32(_1d);_8=_5;let _2w=_8[((_2j>>bitcast<u32>(12i))&7u)];let _2x=(1.0f-_2w);let _2y=f32(_1e);_8=_5;let _2z=_8[((_2j>>bitcast<u32>(15i))&7u)];let _30=(1.0f-_2z);let _31=f32(_1f);_8=_5;let _32=_8[((_2j>>bitcast<u32>(18i))&7u)];let _33=(1.0f-_32);let _34=f32(_1g);_8=_5;let _35=_8[((_2j>>bitcast<u32>(21i))&7u)];let _36=(1.0f-_35);let _37=((((((((((((((((_1w*_1w)+(_1z*_1z))+(_22*_22))+(_25*_25))+(_28*_28))+(_2b*_2b))+(_2e*_2e))+(_2h*_2h))+(_2l*_2l))+(_2o*_2o))+(_2r*_2r))+(_2u*_2u))+(_2x*_2x))+(_30*_30))+(_33*_33))+(_36*_36));let _38=((((((((((((((((_1v*_1v)+(_1y*_1y))+(_21*_21))+(_24*_24))+(_27*_27))+(_2a*_2a))+(_2d*_2d))+(_2g*_2g))+(_2k*_2k))+(_2n*_2n))+(_2q*_2q))+(_2t*_2t))+(_2w*_2w))+(_2z*_2z))+(_32*_32))+(_35*_35));let _39=((((((((((((((((_1w*_1v)+(_1z*_1y))+(_22*_21))+(_25*_24))+(_28*_27))+(_2b*_2a))+(_2e*_2d))+(_2h*_2g))+(_2l*_2k))+(_2o*_2n))+(_2r*_2q))+(_2u*_2t))+(_2x*_2w))+(_30*_2z))+(_33*_32))+(_36*_35));let _3a=f32(_1h);let _3b=((((((((((((((((_1w*_1x)+(_1z*_20))+(_22*_23))+(_25*_26))+(_28*_29))+(_2b*_2c))+(_2e*_2f))+(_2h*_2i))+(_2l*_2m))+(_2o*_2p))+(_2r*_2s))+(_2u*_2v))+(_2x*_2y))+(_30*_31))+(_33*_34))+(_36*_3a));let _3c=((((((((((((((((_1v*_1x)+(_1y*_20))+(_21*_23))+(_24*_26))+(_27*_29))+(_2a*_2c))+(_2d*_2f))+(_2g*_2i))+(_2k*_2m))+(_2n*_2p))+(_2q*_2s))+(_2t*_2v))+(_2w*_2y))+(_2z*_31))+(_32*_34))+(_35*_3a));let _3d=((_37*_38)-(_39*_39));if((abs(_3d)<0.00009999999747378752f)){_m=_1o;_n=_1p;_o=false;break;}let _3e=(1.0f/_3d);let _3f=trunc(((f16(clamp((((_3b*_38)-(_3c*_39))*_3e),0.0f,1.0f))*255.0h)+0.5h));let _3g=trunc(((f16(clamp((((_3c*_37)-(_3b*_39))*_3e),0.0f,1.0f))*255.0h)+0.5h));_j=select(_3g,127.0h,((_3g==128.0h)|(_3g==126.0h)));_k=select(_3f,127.0h,((_3f==128.0h)|(_3f==126.0h)));_l=(!((_k==_1p))|!((_j==_1o)));_m=_j;_n=_k;_o=_l;}}var _3h:vec2u;_q=_i;if(_o){switch(0u){default:{if((_n==_m)){_p=vec2u();break;}let _3i=(1.0h/(_m-_n));let _3j=(_n*-(_3i));let _3k=(_3i*255.0h);let _3l=(0u|(u32(((clamp(((_1a*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(0i)));_3h=vec2u(((((((((0u|(u32(((clamp(((_12*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(0i)))|(u32(((clamp(((_13*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(3i)))|(u32(((clamp(((_14*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(6i)))|(u32(((clamp(((_15*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(9i)))|(u32(((clamp(((_16*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(12i)))|(u32(((clamp(((_17*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(15i)))|(u32(((clamp(((_18*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(18i)))|(u32(((clamp(((_19*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(21i))),_3l);_3h.y=(((((((_3l|(u32(((clamp(((_1b*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(3i)))|(u32(((clamp(((_1c*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(6i)))|(u32(((clamp(((_1d*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(9i)))|(u32(((clamp(((_1e*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(12i)))|(u32(((clamp(((_1f*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(15i)))|(u32(((clamp(((_1g*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(18i)))|(u32(((clamp(((_1h*_3k)+_3j),0.0h,1.0h)*7.0h)+0.5h))<<bitcast<u32>(21i)));_p=_3h;}}_q=_p;}let _3m=_q.x;let _3n=(((_3m&7190235u)+2396745u)^(_3m&9586980u));let _3o=(_3n^(((19173960u-(_3n&14380470u))&19173960u)>>bitcast<u32>(3i)));let _3p=_q.y;let _3q=(((_3p&7190235u)+2396745u)^(_3p&9586980u));let _3r=(_3o>>bitcast<u32>(16i));var _3s=vec2u(((u32(_n)|(u32(_m)<<bitcast<u32>(8i)))|(_3o<<bitcast<u32>(16i))),_3r);_3s.y=(_3r|((_3q^(((19173960u-(_3q&14380470u))&19173960u)>>bitcast<u32>(3i)))<<bitcast<u32>(8i)));x_879._0[((_t.y*((_s+31u)&4294967264u))+_v)]=_3s;}}return;}@compute @workgroup_size(16i, 16i, 1i) fn main(@builtin(global_invocation_id) _3t:vec3u,@builtin(local_invocation_id) _3u:vec3u,@builtin(workgroup_id) _3v:vec3u){x_781=_3t;x_787=_3u;_6();}"; export { _ as default };