1*c8dee2aaSAndroid Build Coastguard Worker 2*c8dee2aaSAndroid Build Coastguard Worker/* 3*c8dee2aaSAndroid Build Coastguard Worker * When calling makeShader, pass 4*c8dee2aaSAndroid Build Coastguard Worker * radius_scale 0.5 5*c8dee2aaSAndroid Build Coastguard Worker * center x, y 6*c8dee2aaSAndroid Build Coastguard Worker * color0 r, g, b, a 7*c8dee2aaSAndroid Build Coastguard Worker * color1 r, g, b, a 8*c8dee2aaSAndroid Build Coastguard Worker */ 9*c8dee2aaSAndroid Build Coastguard Workerfunction MakeSpiralShaderEffect(CanvasKit) { 10*c8dee2aaSAndroid Build Coastguard Worker const _spiralSkSL = ` 11*c8dee2aaSAndroid Build Coastguard Worker uniform float rad_scale; 12*c8dee2aaSAndroid Build Coastguard Worker uniform float2 in_center; 13*c8dee2aaSAndroid Build Coastguard Worker uniform float4 in_colors0; 14*c8dee2aaSAndroid Build Coastguard Worker uniform float4 in_colors1; 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker half4 main(float2 p) { 17*c8dee2aaSAndroid Build Coastguard Worker float2 pp = p - in_center; 18*c8dee2aaSAndroid Build Coastguard Worker float radius = sqrt(dot(pp, pp)); 19*c8dee2aaSAndroid Build Coastguard Worker radius = sqrt(radius); 20*c8dee2aaSAndroid Build Coastguard Worker float angle = atan(pp.y / pp.x); 21*c8dee2aaSAndroid Build Coastguard Worker float t = (angle + 3.1415926/2) / (3.1415926); 22*c8dee2aaSAndroid Build Coastguard Worker t += radius * rad_scale; 23*c8dee2aaSAndroid Build Coastguard Worker t = fract(t); 24*c8dee2aaSAndroid Build Coastguard Worker return half4(mix(in_colors0, in_colors1, t)); 25*c8dee2aaSAndroid Build Coastguard Worker }`; 26*c8dee2aaSAndroid Build Coastguard Worker 27*c8dee2aaSAndroid Build Coastguard Worker return CanvasKit.RuntimeEffect.Make(_spiralSkSL); 28*c8dee2aaSAndroid Build Coastguard Worker} 29