| 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));}"; |