blob: c778f4d87beddf31844e6d4cd248aee318ab2f12 [file] [log] [blame]
static constexpr char SKSL_MINIFIED_sksl_graphite_frag[] =
"$pure half4 sk_error(){return half4(1.,0.,1.,1.);}$pure half4 sk_passthrough"
"(half4 a){return a;}$pure half4 sk_solid_shader(float4 a){return half4(a);}"
"$pure float $k(int a,float b,float c,float d){switch(a){case 0:return clamp"
"(b,c,d);case 1:{float e=d-c;return mod(b-c,e)+c;}case 2:{float e=d-c;float g"
"=2.*e;float h=mod(b-c,g);return mix(h,g-h,step(e,h))+c;}default:return b;}}"
"$pure half4 $l(float2 a,float2 b,float4 c,int d,int e,int f,sampler2D g){if"
"(d==3&&f==0){float h=floor(a.x)+.5;if(h<c.x||h>c.z){return half4(0.);}}if(e"
"==3&&f==0){float h=floor(a.y)+.5;if(h<c.y||h>c.w){return half4(0.);}}a.x=$k"
"(d,a.x,c.x,c.z);a.y=$k(e,a.y,c.y,c.w);float4 h;if(f==0){h=float4(floor(c.xy"
")+.5,ceil(c.zw)-.5);}else{h=float4(c.xy+.5,c.zw-.5);}float2 i=clamp(a,h.xy,"
"h.zw);half4 j=sample(g,i/b);if(f==1){half2 k=half2(a-i);half2 l=abs(k);bool"
" m=d==1;bool n=e==1;if(m||n){float o;float p;half4 q;half4 r;if(m){o=k.x>0."
"?h.x:h.z;q=sample(g,float2(o,i.y)/b);}if(n){p=k.y>0.?h.y:h.w;r=sample(g,float2"
"(i.x,p)/b);}if(m&&n){half4 t=sample(g,float2(o,p)/b);j=mix(mix(j,q,l.x),mix"
"(r,t,l.x),l.y);}else if(m){j=mix(j,q,l.x);}else if(n){j=mix(j,r,l.y);}}if(d"
"==3){j*=max(1.-l.x,0.);}if(e==3){j*=max(1.-l.y,0.);}}return j;}$pure half4 $m"
"(float2 a,float2 b,float4 c,int d,int e,float4x4 g,sampler2D h){float2 i=fract"
"(a-.5);a-=1.5;a=floor(a)+.5;float4 j=g*float4(1.,i.x,i.x*i.x,(i.x*i.x)*i.x)"
";float4 k=g*float4(1.,i.y,i.y*i.y,(i.y*i.y)*i.y);float4 l=float4(0.);for(int"
" m=0;m<4;++m){float4 n=float4(0.);for(int o=0;o<4;++o){n+=j[o]*float4($l(a+"
"float2(float(o),float(m)),b,c,d,e,0,h));}l+=k[m]*n;}return half4(l);}$pure half4"
" sk_image_shader(float2 a,float2 b,float4 c,int d,int e,int f,int g,float4x4"
" h,sampler2D i){return g!=0?$m(a,b,c,d,e,h,i):$l(a,b,c,d,e,f,i);}$pure float2"
" $n(int a,float2 b){switch(a){case 0:b.x=clamp(b.x,0.,1.);break;case 1:b.x="
"fract(b.x);break;case 2:{float c=b.x-1.;b.x=(c-2.*floor(c*.5))-1.;if(sk_Caps"
".mustDoOpBetweenFloorAndAbs){b.x=clamp(b.x,-1.,1.);}b.x=abs(b.x);break;}case"
" 3:if(b.x<0.||b.x>1.){return float2(0.,-1.);}break;}return b;}$pure half4 $o"
"(float4[4]a,float[4]b,float2 c){if(c.y<0.){return half4(0.);}else if(c.x<=b"
"[0]){return half4(a[0]);}else if(c.x<b[1]){return half4(mix(a[0],a[1],(c.x-"
"b[0])/(b[1]-b[0])));}else if(c.x<b[2]){return half4(mix(a[1],a[2],(c.x-b[1]"
")/(b[2]-b[1])));}else if(c.x<b[3]){return half4(mix(a[2],a[3],(c.x-b[2])/(b"
"[3]-b[2])));}else{return half4(a[3]);}}$pure half4 $p(float4[8]a,float[8]b,"
"float2 c){if(c.y<0.){return half4(0.);}else if(c.x<b[4]){if(c.x<b[2]){if(c."
"x<=b[0]){return half4(a[0]);}else if(c.x<b[1]){return half4(mix(a[0],a[1],("
"c.x-b[0])/(b[1]-b[0])));}else{return half4(mix(a[1],a[2],(c.x-b[1])/(b[2]-b"
"[1])));}}else{if(c.x<b[3]){return half4(mix(a[2],a[3],(c.x-b[2])/(b[3]-b[2]"
")));}else{return half4(mix(a[3],a[4],(c.x-b[3])/(b[4]-b[3])));}}}else{if(c."
"x<b[6]){if(c.x<b[5]){return half4(mix(a[4],a[5],(c.x-b[4])/(b[5]-b[4])));}else"
"{return half4(mix(a[5],a[6],(c.x-b[5])/(b[6]-b[5])));}}else{if(c.x<b[7]){return"
" half4(mix(a[6],a[7],(c.x-b[6])/(b[7]-b[6])));}else{return half4(a[7]);}}}}"
"$pure float2 $q(float2 a,float2 b,float2 c){c-=a;float2 d=b-a;float e=dot(c"
",d)/dot(d,d);return float2(e,1.);}$pure float2 $r(float2 a,float b,float2 c"
"){float d=distance(c,a)/b;return float2(d,1.);}$pure float2 $s(float2 a,float"
" b,float c,float2 d){d-=a;float e=sk_Caps.atan2ImplementedAsAtanYOverX?2.*atan"
"(-d.y,length(d)-d.x):atan(-d.y,-d.x);float f=((e*.159154937+.5)+b)*c;return"
" float2(f,1.);}$pure float3x3 $t(float2 a,float2 b){return float3x3(0.,-1.,"
"0.,1.,0.,0.,0.,0.,1.)*inverse(float3x3(b.y-a.y,a.x-b.x,0.,b.x-a.x,b.y-a.y,0."
",a.x,a.y,1.));}$pure float2 $u(float2 a,float2 b,float c,float d,float2 e){"
"const float f=.000244140625;float g=distance(a,b);float h=d-c;bool i=g<f;bool"
" j=abs(h)<f;if(i){if(j){return float2(0.,-1.);}float k=1./h;float l=sign(h)"
";float m=c/h;float2 n=(e-a)*k;float o=length(n)*l-m;return float2(o,1.);}else"
" if(j){float3x3 k=$t(a,b);float l=c/g;float m=l*l;float2 n=(k*float3(e,1.))"
".xy;float o=m-n.y*n.y;if(o<0.){return float2(0.,-1.);}o=n.x+sqrt(o);return float2"
"(o,1.);}else{float k=c/(c-d);bool l=abs(k-1.)<f;if(l){float2 m=a;a=b;b=m;k="
"0.;}float2 m=a*(1.-k)+b*k;float3x3 n=$t(m,b);float o=abs(1.-k);float p=o;float"
" q=abs(d-c)/g;bool r=abs(q-1.)<f;if(r){o*=.5;p*=.5;}else{o*=q/(q*q-1.);p/=sqrt"
"(abs(q*q-1.));}n=float3x3(o,0.,0.,0.,p,0.,0.,0.,1.)*n;float2 s=(n*float3(e,"
"1.)).xy;float u=1./q;float v=sign(1.-k);bool w=!r&&q>1.;float x=-1.;if(r){x"
"=dot(s,s)/s.x;}else if(w){x=length(s)-s.x*u;}else{float y=s.x*s.x-s.y*s.y;if"
"(y>=0.){if(l||v<0.){x=-sqrt(y)-s.x*u;}else{x=sqrt(y)-s.x*u;}}}if(!w&&x<0.){"
"return float2(0.,-1.);}float y=k+v*x;if(l){y=1.-y;}return float2(y,1.);}}$pure"
" half4 sk_linear_grad_4_shader(float2 a,float4[4]b,float[4]c,float2 d,float2"
" e,int f){float2 g=$q(d,e,a);g=$n(f,g);return $o(b,c,g);}$pure half4 sk_linear_grad_8_shader"
"(float2 a,float4[8]b,float[8]c,float2 d,float2 e,int f){float2 g=$q(d,e,a);"
"g=$n(f,g);return $p(b,c,g);}$pure half4 sk_radial_grad_4_shader(float2 a,float4"
"[4]b,float[4]c,float2 d,float e,int f){float2 g=$r(d,e,a);g=$n(f,g);return $o"
"(b,c,g);}$pure half4 sk_radial_grad_8_shader(float2 a,float4[8]b,float[8]c,"
"float2 d,float e,int f){float2 g=$r(d,e,a);g=$n(f,g);return $p(b,c,g);}$pure"
" half4 sk_sweep_grad_4_shader(float2 a,float4[4]b,float[4]c,float2 d,float e"
",float f,int g){float2 h=$s(d,e,f,a);h=$n(g,h);return $o(b,c,h);}$pure half4"
" sk_sweep_grad_8_shader(float2 a,float4[8]b,float[8]c,float2 d,float e,float"
" f,int g){float2 h=$s(d,e,f,a);h=$n(g,h);return $p(b,c,h);}$pure half4 sk_conical_grad_4_shader"
"(float2 a,float4[4]b,float[4]c,float2 d,float2 e,float f,float g,int h){float2"
" i=$u(d,e,f,g,a);i=$n(h,i);return $o(b,c,i);}$pure half4 sk_conical_grad_8_shader"
"(float2 a,float4[8]b,float[8]c,float2 d,float2 e,float f,float g,int h){float2"
" i=$u(d,e,f,g,a);i=$n(h,i);return $p(b,c,i);}$pure half4 sk_matrix_colorfilter"
"(half4 a,float4x4 b,float4 c,int d){if(bool(d)){a=$rgb_to_hsl(a.xyz,a.w);}else"
"{a=unpremul(a);}half4 e=half4(b*float4(a)+c);if(bool(d)){e=$hsl_to_rgb(e.xyz"
",e.w);}else{e=saturate(e);e.xyz*=e.w;}return e;}$pure half4 sk_blend(int a,"
"half4 b,half4 c){switch(a){case 0:{return blend_clear(b,c);}case 1:{return blend_src"
"(b,c);}case 2:{return blend_dst(b,c);}case 3:{return blend_porter_duff(half4"
"(1.,0.,0.,-1.),b,c);}case 4:{return blend_porter_duff(half4(0.,1.,-1.,0.),b"
",c);}case 5:{return blend_porter_duff(half4(0.,0.,1.,0.),b,c);}case 6:{return"
" blend_porter_duff(half4(0.,0.,0.,1.),b,c);}case 7:{return blend_porter_duff"
"(half4(0.,0.,-1.,0.),b,c);}case 8:{return blend_porter_duff(half4(0.,0.,0.,"
"-1.),b,c);}case 9:{return blend_porter_duff(half4(0.,0.,1.,-1.),b,c);}case 10"
":{return blend_porter_duff(half4(0.,0.,-1.,1.),b,c);}case 11:{return blend_porter_duff"
"(half4(0.,0.,-1.,-1.),b,c);}case 12:{return blend_porter_duff(half4(1.,1.,0."
",0.),b,c);}case 13:{return blend_modulate(b,c);}case 14:{return blend_screen"
"(b,c);}case 15:{return blend_overlay(0.,b,c);}case 16:{return blend_darken("
"1.,b,c);}case 17:{return blend_darken(-1.,b,c);}case 18:{return blend_color_dodge"
"(b,c);}case 19:{return blend_color_burn(b,c);}case 20:{return blend_overlay"
"(1.,b,c);}case 21:{return blend_soft_light(b,c);}case 22:{return blend_difference"
"(b,c);}case 23:{return blend_exclusion(b,c);}case 24:{return blend_multiply"
"(b,c);}case 25:{return blend_hslc(half2(0.,1.),b,c);}case 26:{return blend_hslc"
"(half2(1.),b,c);}case 27:{return blend_hslc(half2(0.),b,c);}case 28:{return"
" blend_hslc(half2(1.,0.),b,c);}default:return half4(0.);}}$pure half4 sk_blend_shader"
"(int a,half4 b,half4 c){return sk_blend(a,b,c);}$pure half4 sk_blend_colorfilter"
"(half4 a,int b,float4 c){return sk_blend(b,half4(c),a);}$pure half4 sk_table_colorfilter"
"(half4 a,sampler2D b){half4 c=(unpremul(a)*255.)/256.+.001953125;half4 d=half4"
"(sample(b,float2(half2(c.x,.375))).x,sample(b,float2(half2(c.y,.625))).x,sample"
"(b,float2(half2(c.z,.875))).x,1.);return d*sample(b,float2(half2(c.w,.125))"
").x;}$pure half4 sk_gaussian_colorfilter(half4 a){half b=1.-a.w;b=exp((-b*b"
")*4.)-.018;return half4(b);}$pure half $v(int a,half b,half[7]c){half d=c[0"
"];half e=c[1];half f=c[2];half g=c[3];half h=c[4];half i=c[5];half j=c[6];half"
" k=sign(b);b=abs(b);switch(a){case 1:b=b<h?g*b+j:pow(e*b+f,d)+i;break;case 2"
":b=pow(max(e+f*pow(b,g),0.)/(h+i*pow(b,g)),j);break;case 3:b=b*e<=1.?pow(b*"
"e,f):exp((b-i)*g)+h;b*=j+1.;break;case 4:b/=j+1.;b=b<=1.?e*pow(b,f):g*log(b"
"-h)+i;break;}return k*b;}half4 sk_color_space_transform(half4 a,int b,int c"
",int d,half[7]e,half[7]f,half3x3 g){if(bool(b&1)){a=unpremul(a);}if(bool(b&"
"2)){a.x=$v(c,a.x,e);a.y=$v(c,a.y,e);a.z=$v(c,a.z,e);}if(bool(b&4)){a.xyz=g*"
"a.xyz;}if(bool(b&8)){a.x=$v(d,a.x,f);a.y=$v(d,a.y,f);a.z=$v(d,a.z,f);}if(bool"
"(b&16)){a.xyz*=a.w;}return a;}";