| static constexpr char SKSL_MINIFIED_sksl_shared[] = |
| "$pure $genType radians($genType degrees);$pure $genHType radians($genHType degrees" |
| ");$pure $genType degrees($genType radians);$pure $genHType degrees($genHType" |
| " radians);$pure $genType sin($genType angle);$pure $genHType sin($genHType angle" |
| ");$pure $genType cos($genType angle);$pure $genHType cos($genHType angle);$pure" |
| " $genType tan($genType angle);$pure $genHType tan($genHType angle);$pure $genType" |
| " asin($genType x);$pure $genHType asin($genHType x);$pure $genType acos($genType" |
| " x);$pure $genHType acos($genHType x);$pure $genType atan($genType y,$genType" |
| " x);$pure $genHType atan($genHType y,$genHType x);$pure $genType atan($genType" |
| " y_over_x);$pure $genHType atan($genHType y_over_x);$es3 $pure $genType sinh" |
| "($genType x);$es3 $pure $genHType sinh($genHType x);$es3 $pure $genType cosh" |
| "($genType x);$es3 $pure $genHType cosh($genHType x);$es3 $pure $genType tanh" |
| "($genType x);$es3 $pure $genHType tanh($genHType x);$es3 $pure $genType asinh" |
| "($genType x);$es3 $pure $genHType asinh($genHType x);$es3 $pure $genType acosh" |
| "($genType x);$es3 $pure $genHType acosh($genHType x);$es3 $pure $genType atanh" |
| "($genType x);$es3 $pure $genHType atanh($genHType x);$pure $genType pow($genType" |
| " x,$genType y);$pure $genHType pow($genHType x,$genHType y);$pure $genType exp" |
| "($genType x);$pure $genHType exp($genHType x);$pure $genType log($genType x" |
| ");$pure $genHType log($genHType x);$pure $genType exp2($genType x);$pure $genHType" |
| " exp2($genHType x);$pure $genType log2($genType x);$pure $genHType log2($genHType" |
| " x);$pure $genType sqrt($genType x);$pure $genHType sqrt($genHType x);$pure" |
| " $genType inversesqrt($genType x);$pure $genHType inversesqrt($genHType x);" |
| "$pure $genType abs($genType x);$pure $genHType abs($genHType x);$pure $genType" |
| " sign($genType x);$pure $genHType sign($genHType x);$pure $genType floor($genType" |
| " x);$pure $genHType floor($genHType x);$pure $genType ceil($genType x);$pure" |
| " $genHType ceil($genHType x);$pure $genType fract($genType x);$pure $genHType" |
| " fract($genHType x);$pure $genType mod($genType x,float y);$pure $genType mod" |
| "($genType x,$genType y);$pure $genHType mod($genHType x,half y);$pure $genHType" |
| " mod($genHType x,$genHType y);$pure $genType min($genType x,$genType y);$pure" |
| " $genType min($genType x,float y);$pure $genHType min($genHType x,$genHType" |
| " y);$pure $genHType min($genHType x,half y);$pure $genType max($genType x,$genType" |
| " y);$pure $genType max($genType x,float y);$pure $genHType max($genHType x," |
| "$genHType y);$pure $genHType max($genHType x,half y);$pure $genType clamp($genType" |
| " x,$genType minVal,$genType maxVal);$pure $genType clamp($genType x,float minVal" |
| ",float maxVal);$pure $genHType clamp($genHType x,$genHType minVal,$genHType" |
| " maxVal);$pure $genHType clamp($genHType x,half minVal,half maxVal);$pure $genType" |
| " saturate($genType x);$pure $genHType saturate($genHType x);$pure $genType mix" |
| "($genType x,$genType y,$genType a);$pure $genType mix($genType x,$genType y" |
| ",float a);$pure $genHType mix($genHType x,$genHType y,$genHType a);$pure $genHType" |
| " mix($genHType x,$genHType y,half a);$pure $genType step($genType edge,$genType" |
| " x);$pure $genType step(float edge,$genType x);$pure $genHType step($genHType" |
| " edge,$genHType x);$pure $genHType step(half edge,$genHType x);$pure $genType" |
| " smoothstep($genType edge0,$genType edge1,$genType x);$pure $genType smoothstep" |
| "(float edge0,float edge1,$genType x);$pure $genHType smoothstep($genHType edge0" |
| ",$genHType edge1,$genHType x);$pure $genHType smoothstep(half edge0,half edge1" |
| ",$genHType x);$es3 $pure $genIType abs($genIType x);$es3 $pure $genIType sign" |
| "($genIType x);$es3 $pure $genIType floatBitsToInt($genType value);$es3 $pure" |
| " $genUType floatBitsToUint($genType value);$es3 $pure $genType intBitsToFloat" |
| "($genIType value);$es3 $pure $genType uintBitsToFloat($genUType value);$es3" |
| " $pure $genType trunc($genType x);$es3 $pure $genHType trunc($genHType x);$es3" |
| " $pure $genType round($genType x);$es3 $pure $genHType round($genHType x);$es3" |
| " $pure $genType roundEven($genType x);$es3 $pure $genHType roundEven($genHType" |
| " x);$es3 $pure $genIType min($genIType x,$genIType y);$es3 $pure $genIType min" |
| "($genIType x,int y);$es3 $pure $genUType min($genUType x,$genUType y);$es3 $pure" |
| " $genUType min($genUType x,uint y);$es3 $pure $genIType max($genIType x,$genIType" |
| " y);$es3 $pure $genIType max($genIType x,int y);$es3 $pure $genUType max($genUType" |
| " x,$genUType y);$es3 $pure $genUType max($genUType x,uint y);$es3 $pure $genIType" |
| " clamp($genIType x,$genIType minVal,$genIType maxVal);$es3 $pure $genIType clamp" |
| "($genIType x,int minVal,int maxVal);$es3 $pure $genUType clamp($genUType x," |
| "$genUType minVal,$genUType maxVal);$es3 $pure $genUType clamp($genUType x,uint" |
| " minVal,uint maxVal);$es3 $pure $genType mix($genType x,$genType y,$genBType" |
| " a);$es3 $pure $genHType mix($genHType x,$genHType y,$genBType a);$es3 $pure" |
| " $genBType isnan($genType x);$es3 $pure $genBType isnan($genHType x);$es3 $pure" |
| " $genBType isinf($genType x);$es3 $pure $genBType isinf($genHType x);$es3 $pure" |
| " $genType modf($genType x,out $genType i);$es3 $pure $genHType modf($genHType" |
| " x,out $genHType i);$es3 $pure uint packUnorm2x16(float2 v);$es3 $pure float2" |
| " unpackUnorm2x16(uint p);$pure float length($genType x);$pure half length($genHType" |
| " x);$pure float distance($genType p0,$genType p1);$pure half distance($genHType" |
| " p0,$genHType p1);$pure float dot($genType x,$genType y);$pure half dot($genHType" |
| " x,$genHType y);$pure float3 cross(float3 x,float3 y);$pure half3 cross(half3" |
| " x,half3 y);$pure $genType normalize($genType x);$pure $genHType normalize(" |
| "$genHType x);$pure $genType faceforward($genType N,$genType I,$genType Nref" |
| ");$pure $genHType faceforward($genHType N,$genHType I,$genHType Nref);$pure" |
| " $genType reflect($genType I,$genType N);$pure $genHType reflect($genHType I" |
| ",$genHType N);$pure $genType refract($genType I,$genType N,float eta);$pure" |
| " $genHType refract($genHType I,$genHType N,half eta);$pure $squareMat matrixCompMult" |
| "($squareMat x,$squareMat y);$pure $squareHMat matrixCompMult($squareHMat x," |
| "$squareHMat y);$es3 $pure $mat matrixCompMult($mat x,$mat y);$es3 $pure $hmat" |
| " matrixCompMult($hmat x,$hmat y);$pure $squareMat inverse($squareMat m);$pure" |
| " $squareHMat inverse($squareHMat m);$es3 $pure float determinant($squareMat" |
| " m);$es3 $pure half determinant($squareHMat m);$es3 $pure $squareMat transpose" |
| "($squareMat m);$es3 $pure $squareHMat transpose($squareHMat m);$es3 $pure float2x3" |
| " transpose(float3x2 m);$es3 $pure half2x3 transpose(half3x2 m);$es3 $pure float2x4" |
| " transpose(float4x2 m);$es3 $pure half2x4 transpose(half4x2 m);$es3 $pure float3x2" |
| " transpose(float2x3 m);$es3 $pure half3x2 transpose(half2x3 m);$es3 $pure float3x4" |
| " transpose(float4x3 m);$es3 $pure half3x4 transpose(half4x3 m);$es3 $pure float4x2" |
| " transpose(float2x4 m);$es3 $pure half4x2 transpose(half2x4 m);$es3 $pure float4x3" |
| " transpose(float3x4 m);$es3 $pure half4x3 transpose(half3x4 m);$es3 $pure $squareMat" |
| " outerProduct($vec c,$vec r);$es3 $pure $squareHMat outerProduct($hvec c,$hvec" |
| " r);$es3 $pure float2x3 outerProduct(float3 c,float2 r);$es3 $pure half2x3 outerProduct" |
| "(half3 c,half2 r);$es3 $pure float3x2 outerProduct(float2 c,float3 r);$es3 $pure" |
| " half3x2 outerProduct(half2 c,half3 r);$es3 $pure float2x4 outerProduct(float4" |
| " c,float2 r);$es3 $pure half2x4 outerProduct(half4 c,half2 r);$es3 $pure float4x2" |
| " outerProduct(float2 c,float4 r);$es3 $pure half4x2 outerProduct(half2 c,half4" |
| " r);$es3 $pure float3x4 outerProduct(float4 c,float3 r);$es3 $pure half3x4 outerProduct" |
| "(half4 c,half3 r);$es3 $pure float4x3 outerProduct(float3 c,float4 r);$es3 $pure" |
| " half4x3 outerProduct(half3 c,half4 r);$pure $bvec lessThan($vec x,$vec y);" |
| "$pure $bvec lessThan($hvec x,$hvec y);$pure $bvec lessThan($ivec x,$ivec y)" |
| ";$pure $bvec lessThan($svec x,$svec y);$pure $bvec lessThanEqual($vec x,$vec" |
| " y);$pure $bvec lessThanEqual($hvec x,$hvec y);$pure $bvec lessThanEqual($ivec" |
| " x,$ivec y);$pure $bvec lessThanEqual($svec x,$svec y);$pure $bvec greaterThan" |
| "($vec x,$vec y);$pure $bvec greaterThan($hvec x,$hvec y);$pure $bvec greaterThan" |
| "($ivec x,$ivec y);$pure $bvec greaterThan($svec x,$svec y);$pure $bvec greaterThanEqual" |
| "($vec x,$vec y);$pure $bvec greaterThanEqual($hvec x,$hvec y);$pure $bvec greaterThanEqual" |
| "($ivec x,$ivec y);$pure $bvec greaterThanEqual($svec x,$svec y);$pure $bvec" |
| " equal($vec x,$vec y);$pure $bvec equal($hvec x,$hvec y);$pure $bvec equal(" |
| "$ivec x,$ivec y);$pure $bvec equal($svec x,$svec y);$pure $bvec equal($bvec" |
| " x,$bvec y);$pure $bvec notEqual($vec x,$vec y);$pure $bvec notEqual($hvec x" |
| ",$hvec y);$pure $bvec notEqual($ivec x,$ivec y);$pure $bvec notEqual($svec x" |
| ",$svec y);$pure $bvec notEqual($bvec x,$bvec y);$es3 $pure $bvec lessThan($usvec" |
| " x,$usvec y);$es3 $pure $bvec lessThan($uvec x,$uvec y);$es3 $pure $bvec lessThanEqual" |
| "($uvec x,$uvec y);$es3 $pure $bvec lessThanEqual($usvec x,$usvec y);$es3 $pure" |
| " $bvec greaterThan($uvec x,$uvec y);$es3 $pure $bvec greaterThan($usvec x,$usvec" |
| " y);$es3 $pure $bvec greaterThanEqual($uvec x,$uvec y);$es3 $pure $bvec greaterThanEqual" |
| "($usvec x,$usvec y);$es3 $pure $bvec equal($uvec x,$uvec y);$es3 $pure $bvec" |
| " equal($usvec x,$usvec y);$es3 $pure $bvec notEqual($uvec x,$uvec y);$es3 $pure" |
| " $bvec notEqual($usvec x,$usvec y);$pure bool any($bvec x);$pure bool all($bvec" |
| " x);$pure $bvec not($bvec x);$es3 $pure $genType dFdx($genType p);$es3 $pure" |
| " $genType dFdy($genType p);$es3 $pure $genHType dFdx($genHType p);$es3 $pure" |
| " $genHType dFdy($genHType p);$es3 $pure $genType fwidth($genType p);$es3 $pure" |
| " $genHType fwidth($genHType p);$pure half4 unpremul(half4 color){return half4" |
| "(color.xyz/max(color.w,.0001),color.w);}$pure float4 unpremul(float4 color)" |
| "{return float4(color.xyz/max(color.w,.0001),color.w);}$export $pure half4 $unpremul_polar" |
| "(half4 color){return half4(color.x,color.yz/max(color.w,.0001),color.w);}$export" |
| " $pure half4 $rgb_to_hsl(half3 c,half a){half4 p=c.y<c.z?half4(c.zy,-1.,.6666667" |
| "):half4(c.yz,0.,-.333333343);half4 q=c.x<p.x?half4(p.x,c.x,p.yw):half4(c.x," |
| "p.x,p.yz);const half kEps=.0001;half pmV=q.x;half pmC=pmV-min(q.y,q.z);half" |
| " pmL=pmV-pmC*.5;half H=abs(q.w+(q.y-q.z)/(pmC*6.+kEps));half S=pmC/((a+kEps" |
| ")-abs(pmL*2.-a));half L=pmL/(a+kEps);return half4(H,S,L,a);}$export $pure half3" |
| " $hsl_to_rgb(half3 hsl){half C=(1.-abs(2.*hsl.z-1.))*hsl.y;half3 p=hsl.xxx+" |
| "half3(0.,.6666667,.333333343);half3 q=saturate(abs(fract(p)*6.-3.)-1.);return" |
| "(q-.5)*C+hsl.z;}$export $pure half4 $hsl_to_rgb(half3 hsl,half a){return saturate" |
| "(half4($hsl_to_rgb(hsl)*a,a));}$export $pure half3 $css_lab_to_xyz(half3 lab" |
| "){const half k=903.2963;const half e=.008856452;half3 f;f.y=(lab.x+16.)/116." |
| ";f.x=lab.y/500.+f.y;f.z=f.y-lab.z/200.;half3 f_cubed=pow(f,half3(3.));half3" |
| " xyz=half3(f_cubed.x>e?f_cubed.x:(116.*f.x-16.)/k,lab.x>8.000001?f_cubed.y:" |
| "lab.x/k,f_cubed.z>e?f_cubed.z:(116.*f.z-16.)/k);const half3 D50=half3(.9642956" |
| ",1.,.825104535);return xyz*D50;}$pure half3 $css_hcl_to_lab(half3 hcl){return" |
| " half3(hcl.z,hcl.y*cos(radians(hcl.x)),hcl.y*sin(radians(hcl.x)));}$export $pure" |
| " half3 $css_hcl_to_xyz(half3 hcl){return $css_lab_to_xyz($css_hcl_to_lab(hcl" |
| "));}$export $pure half3 $css_oklab_to_linear_srgb(half3 oklab){half l_=(oklab" |
| ".x+.396337777*oklab.y)+.215803757*oklab.z;half m_=(oklab.x-.105561346*oklab" |
| ".y)-.06385417*oklab.z;half s_=(oklab.x-.08948418*oklab.y)-1.29148555*oklab." |
| "z;half l=(l_*l_)*l_;half m=(m_*m_)*m_;half s=(s_*s_)*s_;return half3((4.0767417" |
| "*l-3.3077116*m)+.230969936*s,(-1.268438*l+2.60975742*m)-.341319382*s,(-.00419608643" |
| "*l-.7034186*m)+1.70761466*s);}$export $pure half3 $css_okhcl_to_linear_srgb" |
| "(half3 okhcl){return $css_oklab_to_linear_srgb($css_hcl_to_lab(okhcl));}$export" |
| " $pure half3 $css_hsl_to_srgb(half3 hsl){hsl.x=mod(hsl.x,360.);if(hsl.x<0.)" |
| "{hsl.x+=360.;}hsl.yz/=100.;half3 k=mod(half3(0.,8.,4.)+hsl.x/30.,12.);half a" |
| "=hsl.y*min(hsl.z,1.-hsl.z);return hsl.z-a*clamp(min(k-3.,9.-k),-1.,1.);}$export" |
| " $pure half3 $css_hwb_to_srgb(half3 hwb){hwb.yz/=100.;if(hwb.y+hwb.z>=1.){half" |
| " gray=hwb.y/(hwb.y+hwb.z);return half3(gray);}half3 rgb=$css_hsl_to_srgb(half3" |
| "(hwb.x,100.,50.));rgb*=(1.-hwb.y)-hwb.z;rgb+=hwb.y;return rgb;}"; |