static constexpr char SKSL_MINIFIED_sksl_gpu[] =
"$pure $genIType mix($genIType x,$genIType y,$genBType a);$pure $genBType mix"
"($genBType x,$genBType y,$genBType a);$pure $genType fma($genType a,$genType"
" b,$genType c);$pure $genHType fma($genHType a,$genHType b,$genHType c);$genType"
" frexp($genType x,out $genIType exp);$genHType frexp($genHType x,out $genIType"
" exp);$pure $genType ldexp($genType x,$genIType exp);$pure $genHType ldexp("
"$genHType x,$genIType exp);$pure uint packSnorm2x16(float2 v);$pure uint packUnorm4x8"
"(float4 v);$pure uint packSnorm4x8(float4 v);$pure float2 unpackSnorm2x16(uint"
" p);$pure float4 unpackUnorm4x8(uint p);$pure float4 unpackSnorm4x8(uint p)"
";$pure uint packHalf2x16(float2 v);$pure float2 unpackHalf2x16(uint v);$pure"
" $genIType bitCount($genIType value);$pure $genIType bitCount($genUType value"
");$pure $genIType findLSB($genIType value);$pure $genIType findLSB($genUType"
" value);$pure $genIType findMSB($genIType value);$pure $genIType findMSB($genUType"
" value);$pure sampler2D makeSampler2D(texture2D texture,sampler s);$pure half4"
" sample(sampler2D s,float2 P);$pure half4 sample(sampler2D s,float3 P);$pure"
" half4 sample(sampler2D s,float3 P,float bias);$pure half4 sample(samplerExternalOES"
" s,float2 P);$pure half4 sample(samplerExternalOES s,float2 P,float bias);$pure"
" half4 sample(sampler2DRect s,float2 P);$pure half4 sample(sampler2DRect s,"
"float3 P);$pure half4 sampleLod(sampler2D s,float2 P,float lod);$pure half4"
" sampleLod(sampler2D s,float3 P,float lod);$pure half4 sampleGrad(sampler2D"
" s,float2,float2 dPdx,float2 dPdy);$pure half4 subpassLoad(subpassInput subpass"
");$pure half4 subpassLoad(subpassInputMS subpass,int sample);$pure uint atomicLoad"
"(atomicUint a);void atomicStore(atomicUint a,uint value);uint atomicAdd(atomicUint"
" a,uint value);$pure half4 blend_clear(half4 src,half4 dst){return half4(0."
");}$pure half4 blend_src(half4 src,half4 dst){return src;}$pure half4 blend_dst"
"(half4 src,half4 dst){return dst;}$pure half4 blend_src_over(half4 src,half4"
" dst){return src+(1.-src.w)*dst;}$pure half4 blend_dst_over(half4 src,half4"
" dst){return(1.-dst.w)*src+dst;}$pure half4 blend_src_in(half4 src,half4 dst"
"){return src*dst.w;}$pure half4 blend_dst_in(half4 src,half4 dst){return dst"
"*src.w;}$pure half4 blend_src_out(half4 src,half4 dst){return(1.-dst.w)*src"
";}$pure half4 blend_dst_out(half4 src,half4 dst){return(1.-src.w)*dst;}$pure"
" half4 blend_src_atop(half4 src,half4 dst){return dst.w*src+(1.-src.w)*dst;"
"}$pure half4 blend_dst_atop(half4 src,half4 dst){return(1.-dst.w)*src+src.w"
"*dst;}$pure half4 blend_xor(half4 src,half4 dst){return(1.-dst.w)*src+(1.-src"
".w)*dst;}$pure half4 blend_plus(half4 src,half4 dst){return min(src+dst,1.)"
";}$pure half4 blend_porter_duff(half4 blendOp,half4 src,half4 dst){half2 coeff"
"=blendOp.xy+blendOp.zw*(half2(dst.w,src.w)+min(blendOp.zw,0.));return min(half4"
"(1.),src*coeff.x+dst*coeff.y);}$pure half4 blend_modulate(half4 src,half4 dst"
"){return src*dst;}$pure half4 blend_screen(half4 src,half4 dst){return src+"
"(1.-src)*dst;}$pure half $blend_overlay_component(half2 s,half2 d){return 2."
"*d.x<=d.y?(2.*s.x)*d.x:s.y*d.y-(2.*(d.y-d.x))*(s.y-s.x);}$pure half4 blend_overlay"
"(half4 src,half4 dst){half4 result=half4($blend_overlay_component(src.xw,dst"
".xw),$blend_overlay_component(src.yw,dst.yw),$blend_overlay_component(src.zw"
",dst.zw),src.w+(1.-src.w)*dst.w);result.xyz+=dst.xyz*(1.-src.w)+src.xyz*(1."
"-dst.w);return result;}$pure half4 blend_overlay(half flip,half4 a,half4 b)"
"{return blend_overlay(bool(flip)?b:a,bool(flip)?a:b);}$pure half4 blend_lighten"
"(half4 src,half4 dst){half4 result=blend_src_over(src,dst);result.xyz=max(result"
".xyz,(1.-dst.w)*src.xyz+dst.xyz);return result;}$pure half4 blend_darken(half"
" mode,half4 src,half4 dst){half4 a=blend_src_over(src,dst);half3 b=(1.-dst."
"w)*src.xyz+dst.xyz;a.xyz=mode*min(a.xyz*mode,b*mode);return a;}$pure half4 blend_darken"
"(half4 src,half4 dst){return blend_darken(1.,src,dst);}const half $kGuardedDivideEpsilon"
"=half(sk_Caps.mustGuardDivisionEvenAfterExplicitZeroCheck?1e-08:0.);$pure inline"
" half $guarded_divide(half n,half d){return n/(d+$kGuardedDivideEpsilon);}$pure"
" inline half3 $guarded_divide(half3 n,half d){return n/(d+$kGuardedDivideEpsilon"
");}$pure half $color_dodge_component(half2 s,half2 d){if(d.x==0.){return s."
"x*(1.-d.y);}else{half delta=s.y-s.x;if(delta==0.){return(s.y*d.y+s.x*(1.-d."
"y))+d.x*(1.-s.y);}else{delta=min(d.y,$guarded_divide(d.x*s.y,delta));return"
"(delta*s.y+s.x*(1.-d.y))+d.x*(1.-s.y);}}}$pure half4 blend_color_dodge(half4"
" src,half4 dst){return half4($color_dodge_component(src.xw,dst.xw),$color_dodge_component"
"(src.yw,dst.yw),$color_dodge_component(src.zw,dst.zw),src.w+(1.-src.w)*dst."
"w);}$pure half $color_burn_component(half2 s,half2 d){if(d.y==d.x){return(s"
".y*d.y+s.x*(1.-d.y))+d.x*(1.-s.y);}else if(s.x==0.){return d.x*(1.-s.y);}else"
"{half delta=max(0.,d.y-$guarded_divide((d.y-d.x)*s.y,s.x));return(delta*s.y"
"+s.x*(1.-d.y))+d.x*(1.-s.y);}}$pure half4 blend_color_burn(half4 src,half4 dst"
"){return half4($color_burn_component(src.xw,dst.xw),$color_burn_component(src"
".yw,dst.yw),$color_burn_component(src.zw,dst.zw),src.w+(1.-src.w)*dst.w);}$pure"
" half4 blend_hard_light(half4 src,half4 dst){return blend_overlay(dst,src);"
"}$pure half $soft_light_component(half2 s,half2 d){if(2.*s.x<=s.y){return($guarded_divide"
"((d.x*d.x)*(s.y-2.*s.x),d.y)+(1.-d.y)*s.x)+d.x*((-s.y+2.*s.x)+1.);}else if("
"4.*d.x<=d.y){half DSqd=d.x*d.x;half DCub=DSqd*d.x;half DaSqd=d.y*d.y;half DaCub"
"=DaSqd*d.y;return $guarded_divide(((DaSqd*(s.x-d.x*((3.*s.y-6.*s.x)-1.))+(("
"12.*d.y)*DSqd)*(s.y-2.*s.x))-(16.*DCub)*(s.y-2.*s.x))-DaCub*s.x,DaSqd);}else"
"{return((d.x*((s.y-2.*s.x)+1.)+s.x)-sqrt(d.y*d.x)*(s.y-2.*s.x))-d.y*s.x;}}$pure"
" half4 blend_soft_light(half4 src,half4 dst){return dst.w==0.?src:half4($soft_light_component"
"(src.xw,dst.xw),$soft_light_component(src.yw,dst.yw),$soft_light_component("
"src.zw,dst.zw),src.w+(1.-src.w)*dst.w);}$pure half4 blend_difference(half4 src"
",half4 dst){return half4((src.xyz+dst.xyz)-2.*min(src.xyz*dst.w,dst.xyz*src"
".w),src.w+(1.-src.w)*dst.w);}$pure half4 blend_exclusion(half4 src,half4 dst"
"){return half4((dst.xyz+src.xyz)-(2.*dst.xyz)*src.xyz,src.w+(1.-src.w)*dst."
"w);}$pure half4 blend_multiply(half4 src,half4 dst){return half4(((1.-src.w"
")*dst.xyz+(1.-dst.w)*src.xyz)+src.xyz*dst.xyz,src.w+(1.-src.w)*dst.w);}$pure"
" half $blend_color_luminance(half3 color){return dot(half3(.3,.59,.11),color"
");}$pure half3 $blend_set_color_luminance(half3 hueSatColor,half alpha,half3"
" lumColor){half lum=$blend_color_luminance(lumColor);half3 result=(lum-$blend_color_luminance"
"(hueSatColor))+hueSatColor;half minComp=min(min(result.x,result.y),result.z"
");half maxComp=max(max(result.x,result.y),result.z);if(minComp<0.&&lum!=minComp"
"){result=lum+(result-lum)*$guarded_divide(lum,lum-minComp);}if(maxComp>alpha"
"&&maxComp!=lum){result=lum+$guarded_divide((result-lum)*(alpha-lum),maxComp"
"-lum);}return result;}$pure half $blend_color_saturation(half3 color){return"
" max(max(color.x,color.y),color.z)-min(min(color.x,color.y),color.z);}$pure"
" half3 $blend_set_color_saturation(half3 color,half3 satColor){half mn=min("
"min(color.x,color.y),color.z);half mx=max(max(color.x,color.y),color.z);return"
" mx>mn?((color-mn)*$blend_color_saturation(satColor))/(mx-mn):half3(0.);}$pure"
" half4 blend_hslc(half2 flipSat,half4 src,half4 dst){half alpha=dst.w*src.w"
";half3 sda=src.xyz*dst.w;half3 dsa=dst.xyz*src.w;half3 l=bool(flipSat.x)?dsa"
":sda;half3 r=bool(flipSat.x)?sda:dsa;if(bool(flipSat.y)){l=$blend_set_color_saturation"
"(l,r);r=dsa;}return half4(((($blend_set_color_luminance(l,alpha,r)+dst.xyz)"
"-dsa)+src.xyz)-sda,(src.w+dst.w)-alpha);}$pure half4 blend_hue(half4 src,half4"
" dst){return blend_hslc(half2(0.,1.),src,dst);}$pure half4 blend_saturation"
"(half4 src,half4 dst){return blend_hslc(half2(1.),src,dst);}$pure half4 blend_color"
"(half4 src,half4 dst){return blend_hslc(half2(0.),src,dst);}$pure half4 blend_luminosity"
"(half4 src,half4 dst){return blend_hslc(half2(1.,0.),src,dst);}$pure float2"
" proj(float3 p){return p.xy/p.z;}$pure float cross_length_2d(float2 a,float2"
" b){return determinant(float2x2(a,b));}$pure half cross_length_2d(half2 a,half2"
" b){return determinant(half2x2(a,b));}";
