/* * When calling makeShader, pass * radius_scale 0.5 * center x, y * color0 r, g, b, a * color1 r, g, b, a */ function MakeSpiralShaderEffect(CanvasKit) { const _spiralSkSL = ` uniform float rad_scale; uniform float2 in_center; uniform float4 in_colors0; uniform float4 in_colors1; half4 main(float2 p) { float2 pp = p - in_center; float radius = sqrt(dot(pp, pp)); radius = sqrt(radius); float angle = atan(pp.y / pp.x); float t = (angle + 3.1415926/2) / (3.1415926); t += radius * rad_scale; t = fract(t); return half4(mix(in_colors0, in_colors1, t)); }`; return CanvasKit.RuntimeEffect.Make(_spiralSkSL); }