xref: /aosp_15_r20/external/skia/demos.skia.org/demos/textedit/spiralshader.js (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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