xref: /aosp_15_r20/external/skia/src/sksl/generated/sksl_graphite_vert.minified.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1static constexpr char SKSL_MINIFIED_sksl_graphite_vert[] =
2"$pure float curve_type_using_inf_support(float4 a){return isinf(a.z)?2.:float"
3"(isinf(a.w));}$pure bool $k(float a){return a!=0.;}$pure bool $l(float a){return"
4" a==2.;}$pure float $m(float2 a,float2 b,float2 c,float2 d,float2x2 e){float2"
5" f=e*(fma(-2..xx,b,c)+a);float2 g=e*(fma(-2..xx,c,d)+b);return max(dot(f,f)"
6",dot(g,g));}$pure float $n(float2 a,float2 b,float2 c,float2 d,float2x2 e){"
7"float f=$m(a,b,c,d,e);return max(ceil(sqrt(3.*sqrt(f))),1.);}$pure float $o"
8"(float2 a,float2 b,float2 c,float2 d,float2x2 e){float f=$m(a,b,c,d,e);return"
9" ceil(log2(max(9.*f,1.))*.25);}$pure float $p(float2 a,float2 b,float2 c,float"
10" d){float2 e=(min(min(a,b),c)+max(max(a,b),c))*.5;a-=e;b-=e;c-=e;float f=sqrt"
11"(max(max(dot(a,a),dot(b,b)),dot(c,c)));float2 g=fma((-2.*d).xx,b,a)+c;float"
12" h=abs(fma(-2.,d,2.));float i=max(0.,fma(f,4.,-1.));float j=length(g)*4.+i*"
13"h;float k=4.*min(d,1.);return j/k;}$pure float $q(float2 a,float2 b,float2 c"
14",float d){float e=$p(a,b,c,d);return max(ceil(sqrt(e)),1.);}$pure float $r("
15"float2 a,float2 b,float2 c,float d){float e=$p(a,b,c,d);return ceil(log2(max"
16"(e,1.))*.5);}$pure float2 $s(float2 c,float2 d){float2 e=c-d;if(e==0..xx)return"
17" 0..xx;else{float f=1./max(abs(e.x),abs(e.y));return normalize(f*e);}}$pure"
18" float $t(float2 c,float2 d){return clamp(dot(c,d),-1.,1.);}$pure float $u("
19"float a,float b){float c=fma(a,.5,.5);return(c*b)*b>=1.?inversesqrt(c):sqrt"
20"(c);}$pure float $v(float a){return.5/acos(max(1.-.25/a,-1.));}$pure float $w"
21"(float c,float d,float e){return fma(d-c,e,c);}$pure float2 $w(float2 c,float2"
22" d,float e){return fma(d-c,e.xx,c);}$pure float4 $w(float4 c,float4 d,float4"
23" e){return fma(d-c,e,c);}$pure float2 tessellate_filled_curve(float2x2 a,float"
24" b,float c,float4 d,float4 e,float f){float2 g;if($l(f))g=b!=0.?d.zw:(c!=0."
25"?e.xy:d.xy);else{float2 h=d.xy;float2 i=d.zw;float2 j=e.xy;float2 k=e.zw;float"
26" l=-1.;float m;if($k(f)){l=k.x;m=$r(a*h,a*i,a*j,l);i*=l;k=j;}else m=$o(h,i,"
27"j,k,a);if(b>m){c=floor(ldexp(c,int(m-b)));b=m;}float n=floor(.5+ldexp(c,int"
28"(5.-b)));if(0.<n&&n<32.){float o=n*.03125;float2 p=mix(h,i,o);float2 q=mix("
29"i,j,o);float2 r=mix(j,k,o);float2 s=mix(p,q,o);float2 t=mix(q,r,o);float2 x"
30"=mix(s,t,o);float y=mix(1.,l,o);float z=(l+1.)-y;float A=mix(y,z,o);g=l<0.?"
31"x:s/A;}else g=n==0.?h:k;}return g;}$pure float4 tessellate_stroked_curve(float"
32" a,float b,float2x2 c,float2 d,float e,float4 f,float4 g,float2 h,float2 i,"
33"float j){float2 k=f.xy;float2 l=f.zw;float2 m=g.xy;float2 n=g.zw;float o=-1."
34";if($k(j)){o=n.x;n=m;}float p;if(o<0.)if(k==l&&m==n)p=1.;else p=$n(k,l,m,n,"
35"c);else p=$q(c*k,c*l,c*m,o);float q=i.x;float r=i.y;bool s=i.x==0.;float t;"
36"if(s){t=$v(1.);q=.5;}else t=$v(e*i.x);if(s){k=c*k;l=c*l;m=c*m;n=c*n;h=c*h;}"
37"float2 u=$s(k==l?(l==m?n:m):l,k);float2 v=$s(n,n==m?(m==l?k:l):m);if(u==0.."
38"xx){u=float2(1.,0.);v=float2(-1.,0.);}float x;if(r>=0.)x=sign(r)+3.;else{float2"
39" y=$s(k,h);float z=acos($t(y,u));float A=max(ceil(z*t),1.);x=A+2.;x=min(x,b"
40"-2.);}float y=cross_length_2d(m-k,n-l);float z=abs(a)-x;if(z<0.){v=u;if(h!="
41"k)u=$s(k,h);y=cross_length_2d(u,v);}float A=$t(u,v);float B=acos(A);if(y<0."
42")B=-B;float C;float D=sign(a);if(z<0.){C=x-2.;p=1.;n=(m=(l=k));z+=C+1.;if(z"
43"<0.)z=0.;else{bool F=abs(y)*inversesqrt(dot(u,u)*dot(v,v))<.01;if(!F||dot(u"
44",v)<0.)D=y<0.?min(D,0.):max(D,0.);}}else{float E=(b-x)-1.;C=max(ceil(abs(B)"
45"*t),1.);C=min(C,E);p=min(p,(E-C)+1.);}float E=B/C;float F=(p+C)-1.;bool G=z"
46">=F;if(z>F)D=0.;if(abs(a)==2.&&r>0.)D*=$u(A,r);float2 H;float2 I;if(z!=0.&&"
47"!G){float2 J;float2 K;float2 L=l-k;float2 M=n-k;if(o>=0.){L*=o;K=.5*M-L;J=("
48"o-1.)*M;l*=o;}else{float2 N=m-l;K=N-L;J=fma(-3..xx,N,M);}float2 N=K*(p*2.);"
49"float2 O=L*(p*p);float P=0.;float Q=min(p-1.,z);float R=-abs(E);float S=(1."
50"+z)*abs(E);for(float U=32.;U>=1.;U*=.5){float V=P+U;if(V<=Q){float2 W=fma(V"
51".xx,J,N);W=fma(V.xx,W,O);float X=dot(normalize(W),u);float Y=fma(V,R,S);Y=min"
52"(Y,3.14159274);if(X>=cos(Y))P=V;}}float U=P/p;float V=z-P;float W=acos(clamp"
53"(u.x,-1.,1.));W=u.y>=0.?W:-W;float X=fma(V,E,W);H=float2(cos(X),sin(X));float2"
54" Y=float2(-H.y,H.x);float Z=dot(Y,J);float aa=dot(Y,K);float ac=dot(Y,L);float"
55" ad=max(aa*aa-Z*ac,0.);float ae=sqrt(ad);if(aa>0.)ae=-ae;ae-=aa;float af=(-"
56".5*ae)*Z;float2 ag=abs(fma(ae,ae,af))<abs(fma(Z,ac,af))?float2(ae,Z):float2"
57"(ac,ae);float ah=V!=0.&&ag.y!=0.?saturate(ag.x/ag.y):0.;float ai=max(U,ah);"
58"float2 aj=$w(k,l,ai);float2 ak=$w(l,m,ai);float2 al=$w(m,n,ai);float2 am=$w"
59"(aj,ak,ai);float2 an=$w(ak,al,ai);float2 ao=$w(am,an,ai);float ap=$w(1.,o,ai"
60");float aq=(o+1.)-ap;float ar=$w(ap,aq,ai);if(ai!=ah)H=o>=0.?$s(ak*ap,aj*aq"
61"):$s(an,am);I=o>=0.?am/ar:ao;}else{H=z==0.?u:v;I=z==0.?k:n;}float2 J=float2"
62"(H.y,-H.x);I+=J*(q*D);if(s)return float4(I+d,inverse(c)*I);else return float4"
63"(c*I+d,I);}float4 analytic_rrect_vertex_fn(float2 a,float2 b,float c,float d"
64",float4 e,float4 f,float4 g,float4 h,float i,float3x3 j,out float4 k,out float4"
65" l,out float4 m,out float4 n,out float2 o,out float2 p,out float2 q){float w"
66"=1.;bool x=h.z<=0.;bool y=false;float4 z;float4 A;float4 B=1..xxxx;bool C=false"
67";if(e.x<-1.){C=e.y>0.;z=C?g.xxzz:g.xzzx;A=g.yyww;if(e.y<0.){m=-e-2.;n=f;o=float2"
68"(0.,1.);}else{m=f;n=m;o=e.zw;w=o.y<0.?.414213568:sign(o.y);}}else if(any(greaterThan"
69"(e,0..xxxx))){z=g.xzzx;A=g.yyww;m=e;n=f;o=float2(0.,-1.);}else{z=f;A=g;B=-e"
70";m=0..xxxx;n=0..xxxx;o=float2(0.,1.);y=true;}uint D=uint(sk_VertexID)/9;float2"
71" E=float2(m[D],n[D]);if(D%2!=0)E=E.yx;float2 F=1..xx;if(all(greaterThan(E,0."
72".xx))){w=.414213568;F=E.yx;}float4 G=z-z.wxyz;float4 H=A-A.wxyz;float4 I=G*"
73"G+H*H;float4 J=sign(I);float4 K=0..xxxx;float2 L=o.x.xx;if(any(equal(J,0..xxxx"
74")))if(all(equal(J,0..xxxx))){G=float4(0.,1.,0.,-1.);H=float4(-1.,0.,1.,0.);"
75"I=1..xxxx;}else{bool M=((J.x+J.y)+J.z)+J.w>2.5;float4 N=M?G.yzwx:H.yzwx;float4"
76" O=M?H.yzwx:-G.yzwx;G=mix(N,G,J);H=mix(O,H,J);I=mix(I.yzwx,I,J);B=mix(B.yzwx"
77",B,J);if(!M&&w==0.){L*=float2(J[D],J.yzwx[D]);K=(J-1.)*o.x;o.y=1.;w=1.;}}float4"
78" M=inversesqrt(I);G*=M;H*=M;float2 N=-float2(G.yzwx[D],H.yzwx[D]);float2 O="
79"float2(G[D],H[D]);float2 P;bool Q=false;if(c<0.)if(h.w<0.||d*h.z!=0.)Q=true"
80";else{float R=h.w;float2 S=E+(x?-L:L);if(w==1.||any(lessThanEqual(S,R.xx)))"
81"P=S-R;else P=S*a-R*b;}else P=(E+L)*(a+w*a.yx);if(Q)P=h.xy;else{P-=E;P=(float2"
82"(z[D],A[D])+N*P.x)+O*P.y;}l=(H*(z-P.x)-G*(A-P.y))+K;float3x3 R=inverse(j);float3"
83" S=j*float3(P,1.);k=float4(R[0].xy-R[0].z*P,R[1].xy-R[1].z*P);if(y){float4 T"
84"=-H*(R[0].x-R[0].z*z)+G*(R[0].y-R[0].z*A);float4 U=-H*(R[1].x-R[1].z*z)+G*("
85"R[1].y-R[1].z*A);l*=inversesqrt(T*T+U*U);l+=(1.-B)*abs(S.z);bool V=B==1..xxxx"
86"&&dot(abs(G*G.yzwx+H*H.yzwx),1..xxxx)<.00024;if(V){float2 W=l.xy+l.zw;p.y=1."
87"+min(min(W.x,W.y),abs(S.z));}else p.y=1.+abs(S.z);}if(c>0.&&S.z>0.){float2x2"
88" T=float2x2(k);float2 U=float2(B[D],B.yzwx[D])*b;float2 V=((F.x*U.x)*perp(-"
89"O))*T;float2 W=((F.y*U.y)*perp(N))*T;bool X=all(notEqual(U,0..xx));if(w==1."
90"&&X){V=normalize(V);W=normalize(W);if(dot(V,W)<-.8){float Y=sign(cross_length_2d"
91"(V,W));V=Y*perp(V);W=-Y*perp(W);}}S.xy+=S.z*normalize(V+W);if(y)l-=S.z;else"
92" p.y=-S.z;}else if(!y)p.y=0.;p.x=float(d!=0.?1.:(x?-1.:0.));if(C)k=float4(float2x2"
93"(H.x,-H.y,-G.x,G.y)*float2x2(k));q=P;return float4(S.xy,S.z*i,S.z);}float4 per_edge_aa_quad_vertex_fn"
94"(float2 a,float4 b,float4 c,float4 d,float e,float3x3 f,out float4 g,out float2"
95" h){float4 k=c-c.wxyz;float4 l=d-d.wxyz;float4 m=k*k+l*l;float4 n=sign(m);if"
96"(any(equal(n,0..xxxx)))if(all(equal(n,0..xxxx))){k=float4(0.,1.,0.,-1.);l=float4"
97"(-1.,0.,1.,0.);m=1..xxxx;}else{bool o=((n.x+n.y)+n.z)+n.w>2.5;float4 p=o?k."
98"yzwx:l.yzwx;float4 q=o?l.yzwx:-k.yzwx;k=mix(p,k,n);l=mix(q,l,n);m=mix(m.yzwx"
99",m,n);b=mix(b.yzwx,b,n);}float4 o=inversesqrt(m);k*=o;l*=o;uint p=uint(sk_VertexID"
100")/4;float2 q=-float2(k.yzwx[p],l.yzwx[p]);float2 r=float2(k[p],l[p]);float2"
101" s=float2(c[p],d[p]);g=l*(c-s.x)-k*(d-s.y);float3x3 t=inverse(f);float3 u=f"
102"*float3(s,1.);float4 v=-l*(t[0].x-t[0].z*c)+k*(t[0].y-t[0].z*d);float4 w=-l"
103"*(t[1].x-t[1].z*c)+k*(t[1].y-t[1].z*d);g*=inversesqrt(v*v+w*w);g+=(1.5-b)*abs"
104"(u.z);if(any(notEqual(a,0..xx))&&u.z>0.){float2x2 x=float2x2(t[0].xy-t[0].z"
105"*s,t[1].xy-t[1].z*s);float2 y=float2(b[p],b.yzwx[p])*a;float2 z=(y.x*perp(-"
106"r))*x;float2 A=(y.y*perp(q))*x;bool B=all(notEqual(y,0..xx));if(B){z=normalize"
107"(z);A=normalize(A);if(dot(z,A)<-.8){float C=sign(cross_length_2d(z,A));z=C*"
108"perp(z);A=-C*perp(A);}}u.xy+=u.z*normalize(z+A);g-=u.z;}h=s;return float4(u"
109".xy,u.z*e,u.z);}float4 circular_arc_vertex_fn(float3 a,float4 b,float3 c,float3"
110" d,float3 e,float3 f,float4 g,float h,float3x3 i,out float4 j,out float3 k,"
111"out float3 l,out float3 m,out float n,out float4 o,out float2 p){float2 q=b"
112".xy;float2 r=q;float s=min(dot(a.xy,d.xy)+d.z,0.);a.xy-=d.xy*s;float t=length"
113"(a.xy);if(a.z>0.)r+=a.xy*b.z;else r+=a.xy*b.w;float3 u=i*float3(r,1.);float3"
114" v=i*float3(q,1.);float2 w=u.xy-v.xy;if(w!=0..xx){w=normalize(w);u.xy+=a.z*"
115"w;if(a.z>0.)w*=t;else w*=t*c.y;}j=float4(w,c.xy);if(c.z>0.){k=e;l=f;m=0..xxx"
116";}else{k=e;l=float3(0.,0.,1.);m=f;}if(abs(c.z)>1.)n=(1.-c.y)*.5;else n=0.;o"
117"=g;p=r;return float4(u.xy,h,1.);}float4 text_vertex_fn(float2 a,float4x4 b,"
118"float4x4 c,float2 d,float2 e,float2 f,float2 g,float h,float i,out float2 j"
119",out float2 k,out float2 l){a*=e;float2 m=h*a+g;float4 n=b*float4(m,0.,1.);"
120"l=(c*n).xy;k=a+f;j=k*d;return float4(n.xy,i*n.w,n.w);}float4 coverage_mask_vertex_fn"
121"(float2 a,float3x3 b,float4 c,float4 d,float2 e,float f,float3x3 g,out float4"
122" h,out float2 i,out half j,out float2 k){i=mix(c.xy,c.zw,a);float3 l=b*float3"
123"(i+e,1.);float3 m=g*l;k=m.xy/m.z;if(all(lessThanEqual(d.xy,d.zw))){h=d;j=0."
124";}else{h=d.zwxy;j=1.;}return float4(l.xy,f*l.z,l.z);}float4 cover_bounds_vertex_fn"
125"(float2 a,float4 b,float c,float3x3 d,out float2 e){if(all(lessThanEqual(b."
126"xy,b.zw))){a=mix(b.xy,b.zw,a);float3 f=d*float3(a,1.);e=a;return float4(f.xy"
127",c*f.z,f.z);}else{a=mix(b.zw,b.xy,a);float3 f=inverse(d)*float3(a,1.);float"
128" g=1./f.z;e=f.xy*g;return float4(a*g,c*g,g);}}";
129