Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b01686d1 authored by Derek Sollenberger's avatar Derek Sollenberger Committed by Android (Google) Code Review
Browse files

Merge "Update RuntimeShader users to new setUniform APIs"

parents d74d239c e26e8c7b
Loading
Loading
Loading
Loading
+0 −30
Original line number Diff line number Diff line
@@ -178,36 +178,6 @@ public class RuntimeShader extends Shader {
        setUniform(uniformName, values, false);
    }

    /**
     * Old method signature used by some callers within the platform code
     * @hide
     * @deprecated use setFloatUniform instead
     */
    @Deprecated
    public void setUniform(@NonNull String uniformName, float[] values) {
        setFloatUniform(uniformName, values);
    }

    /**
     * Old method signature used by some callers within the platform code
     * @hide
     * @deprecated use setFloatUniform instead
     */
    @Deprecated
    public void setUniform(@NonNull String uniformName, float value) {
        setFloatUniform(uniformName, value);
    }

    /**
     * Old method signature used by some callers within the platform code
     * @hide
     * @deprecated use setFloatUniform instead
     */
    @Deprecated
    public void setUniform(@NonNull String uniformName, float value1, float value2) {
        setFloatUniform(uniformName, value1, value2);
    }

    private void setFloatUniform(@NonNull String uniformName, float value1, float value2,
            float value3, float value4, int count) {
        if (uniformName == null) {
+25 −36
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package android.graphics.drawable;

import android.annotation.ColorInt;
import android.graphics.Color;
import android.graphics.RuntimeShader;
import android.graphics.Shader;

@@ -37,8 +36,8 @@ final class RippleShader extends RuntimeShader {
            + "uniform vec2 in_tRotation1;\n"
            + "uniform vec2 in_tRotation2;\n"
            + "uniform vec2 in_tRotation3;\n"
            + "uniform vec4 in_color;\n"
            + "uniform vec4 in_sparkleColor;\n"
            + "layout(color) uniform vec4 in_color;\n"
            + "layout(color) uniform vec4 in_sparkleColor;\n"
            + "uniform shader in_shader;\n";
    private static final String SHADER_LIB =
            "float triangleNoise(vec2 n) {\n"
@@ -134,78 +133,68 @@ final class RippleShader extends RuntimeShader {
        if (shader != null) {
            setInputShader("in_shader", shader);
        }
        setUniform("in_hasMask", shader == null ? 0 : 1);
        setFloatUniform("in_hasMask", shader == null ? 0 : 1);
    }

    public void setRadius(float radius) {
        setUniform("in_maxRadius", radius * 2.3f);
        setFloatUniform("in_maxRadius", radius * 2.3f);
    }

    public void setOrigin(float x, float y) {
        setUniform("in_origin", new float[] {x, y});
        setFloatUniform("in_origin", x, y);
    }

    public void setTouch(float x, float y) {
        setUniform("in_touch", new float[] {x, y});
        setFloatUniform("in_touch", x, y);
    }

    public void setProgress(float progress) {
        setUniform("in_progress", progress);
        setFloatUniform("in_progress", progress);
    }

    /**
     * Continuous offset used as noise phase.
     */
    public void setNoisePhase(float phase) {
        setUniform("in_noisePhase", phase * 0.001f);
        setFloatUniform("in_noisePhase", phase * 0.001f);

        //
        // Keep in sync with: frameworks/base/libs/hwui/pipeline/skia/AnimatedDrawables.h
        //
        final float turbulencePhase = phase;
        setUniform("in_turbulencePhase", turbulencePhase);
        setFloatUniform("in_turbulencePhase", turbulencePhase);
        final float scale = 1.5f;
        setUniform("in_tCircle1", new float[]{
        setFloatUniform("in_tCircle1",
                (float) (scale * 0.5 + (turbulencePhase * 0.01 * Math.cos(scale * 0.55))),
                (float) (scale * 0.5 + (turbulencePhase * 0.01 * Math.sin(scale * 0.55)))
        });
        setUniform("in_tCircle2", new float[]{
                (float) (scale * 0.5 + (turbulencePhase * 0.01 * Math.sin(scale * 0.55))));
        setFloatUniform("in_tCircle2",
                (float) (scale * 0.2 + (turbulencePhase * -0.0066 * Math.cos(scale * 0.45))),
                (float) (scale * 0.2 + (turbulencePhase * -0.0066 * Math.sin(scale * 0.45)))
        });
        setUniform("in_tCircle3", new float[]{
                (float) (scale * 0.2 + (turbulencePhase * -0.0066 * Math.sin(scale * 0.45))));
        setFloatUniform("in_tCircle3",
                (float) (scale + (turbulencePhase * -0.0066 * Math.cos(scale * 0.35))),
                (float) (scale + (turbulencePhase * -0.0066 * Math.sin(scale * 0.35)))
        });
                (float) (scale + (turbulencePhase * -0.0066 * Math.sin(scale * 0.35))));
        final double rotation1 = turbulencePhase * PI_ROTATE_RIGHT + 1.7 * Math.PI;
        setUniform("in_tRotation1", new float[]{
                (float) Math.cos(rotation1), (float) Math.sin(rotation1)
        });
        setFloatUniform("in_tRotation1",
                (float) Math.cos(rotation1), (float) Math.sin(rotation1));
        final double rotation2 = turbulencePhase * PI_ROTATE_LEFT + 2 * Math.PI;
        setUniform("in_tRotation2", new float[]{
                (float) Math.cos(rotation2), (float) Math.sin(rotation2)
        });
        setFloatUniform("in_tRotation2",
                (float) Math.cos(rotation2), (float) Math.sin(rotation2));
        final double rotation3 = turbulencePhase * PI_ROTATE_RIGHT + 2.75 * Math.PI;
        setUniform("in_tRotation3", new float[]{
                (float) Math.cos(rotation3), (float) Math.sin(rotation3)
        });
        setFloatUniform("in_tRotation3",
                (float) Math.cos(rotation3), (float) Math.sin(rotation3));
    }

    /**
     * Color of the circle that's under the sparkles. Sparkles will always be white.
     */
    public void setColor(@ColorInt int colorInt, @ColorInt int sparkleColorInt) {
        Color color = Color.valueOf(colorInt);
        Color sparkleColor = Color.valueOf(sparkleColorInt);
        setUniform("in_color", new float[] {color.red(),
                color.green(), color.blue(), color.alpha()});
        setUniform("in_sparkleColor", new float[] {sparkleColor.red(),
                sparkleColor.green(), sparkleColor.blue(), sparkleColor.alpha()});
        setColorUniform("in_color", colorInt);
        setColorUniform("in_sparkleColor", sparkleColorInt);
    }

    public void setResolution(float w, float h) {
        final float densityScale = 2.1f;
        setUniform("in_resolutionScale", new float[] {1f / w, 1f / h});
        setUniform("in_noiseScale", new float[] {densityScale / w, densityScale / h});
        setFloatUniform("in_resolutionScale", 1f / w, 1f / h);
        setFloatUniform("in_noiseScale", densityScale / w, densityScale / h);
    }
}
+9 −12
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.systemui.statusbar.charging

import android.graphics.Color
import android.graphics.PointF
import android.graphics.RuntimeShader
import android.util.MathUtils
@@ -40,7 +39,7 @@ class DwellRippleShader internal constructor() : RuntimeShader(SHADER, false) {
                uniform float in_time;
                uniform float in_radius;
                uniform float in_blur;
                uniform vec4 in_color;
                layout(color) uniform vec4 in_color;
                uniform float in_phase1;
                uniform float in_phase2;
                uniform float in_distortion_strength;"""
@@ -98,7 +97,7 @@ class DwellRippleShader internal constructor() : RuntimeShader(SHADER, false) {
    var origin: PointF = PointF()
        set(value) {
            field = value
            setUniform("in_origin", floatArrayOf(value.x, value.y))
            setFloatUniform("in_origin", value.x, value.y)
        }

    /**
@@ -107,9 +106,9 @@ class DwellRippleShader internal constructor() : RuntimeShader(SHADER, false) {
    var progress: Float = 0.0f
        set(value) {
            field = value
            setUniform("in_radius",
            setFloatUniform("in_radius",
                    (1 - (1 - value) * (1 - value) * (1 - value))* maxRadius)
            setUniform("in_blur", MathUtils.lerp(1f, 0.7f, value))
            setFloatUniform("in_blur", MathUtils.lerp(1f, 0.7f, value))
        }

    /**
@@ -118,7 +117,7 @@ class DwellRippleShader internal constructor() : RuntimeShader(SHADER, false) {
    var distortionStrength: Float = 0.0f
        set(value) {
            field = value
            setUniform("in_distortion_strength", value)
            setFloatUniform("in_distortion_strength", value)
        }

    /**
@@ -127,9 +126,9 @@ class DwellRippleShader internal constructor() : RuntimeShader(SHADER, false) {
    var time: Float = 0.0f
        set(value) {
            field = value * 0.001f
            setUniform("in_time", field)
            setUniform("in_phase1", field * 3f + 0.367f)
            setUniform("in_phase2", field * 7.2f * 1.531f)
            setFloatUniform("in_time", field)
            setFloatUniform("in_phase1", field * 3f + 0.367f)
            setFloatUniform("in_phase2", field * 7.2f * 1.531f)
        }

    /**
@@ -138,8 +137,6 @@ class DwellRippleShader internal constructor() : RuntimeShader(SHADER, false) {
    var color: Int = 0xffffff.toInt()
        set(value) {
            field = value
            val color = Color.valueOf(value)
            setUniform("in_color", floatArrayOf(color.red(),
                    color.green(), color.blue(), color.alpha()))
            setColorUniform("in_color", value)
        }
}
+15 −18
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@
 */
package com.android.systemui.statusbar.charging

import android.graphics.Color
import android.graphics.PointF
import android.graphics.RuntimeShader
import android.util.MathUtils
@@ -43,7 +42,7 @@ class RippleShader internal constructor() : RuntimeShader(SHADER, false) {
                uniform float in_fadeRing;
                uniform float in_blur;
                uniform float in_pixelDensity;
                uniform vec4 in_color;
                layout(color) uniform vec4 in_color;
                uniform float in_sparkle_strength;"""
        private const val SHADER_LIB = """float triangleNoise(vec2 n) {
                    n  = fract(n * vec2(5.3987, 5.4421));
@@ -122,7 +121,7 @@ class RippleShader internal constructor() : RuntimeShader(SHADER, false) {
    var radius: Float = 0.0f
        set(value) {
            field = value
            setUniform("in_maxRadius", value)
            setFloatUniform("in_maxRadius", value)
        }

    /**
@@ -131,7 +130,7 @@ class RippleShader internal constructor() : RuntimeShader(SHADER, false) {
    var origin: PointF = PointF()
        set(value) {
            field = value
            setUniform("in_origin", floatArrayOf(value.x, value.y))
            setFloatUniform("in_origin", value.x, value.y)
        }

    /**
@@ -140,10 +139,10 @@ class RippleShader internal constructor() : RuntimeShader(SHADER, false) {
    var progress: Float = 0.0f
        set(value) {
            field = value
            setUniform("in_progress", value)
            setUniform("in_radius",
            setFloatUniform("in_progress", value)
            setFloatUniform("in_radius",
                    (1 - (1 - value) * (1 - value) * (1 - value))* radius)
            setUniform("in_blur", MathUtils.lerp(1.25f, 0.5f, value))
            setFloatUniform("in_blur", MathUtils.lerp(1.25f, 0.5f, value))

            val fadeIn = subProgress(0f, 0.1f, value)
            val fadeOutNoise = subProgress(0.4f, 1f, value)
@@ -153,9 +152,9 @@ class RippleShader internal constructor() : RuntimeShader(SHADER, false) {
                fadeCircle = subProgress(0f, 0.2f, value)
                fadeOutRipple = subProgress(0.3f, 1f, value)
            }
            setUniform("in_fadeSparkle", Math.min(fadeIn, 1 - fadeOutNoise))
            setUniform("in_fadeCircle", 1 - fadeCircle)
            setUniform("in_fadeRing", Math.min(fadeIn, 1 - fadeOutRipple))
            setFloatUniform("in_fadeSparkle", Math.min(fadeIn, 1 - fadeOutNoise))
            setFloatUniform("in_fadeCircle", 1 - fadeCircle)
            setFloatUniform("in_fadeRing", Math.min(fadeIn, 1 - fadeOutRipple))
        }

    /**
@@ -164,7 +163,7 @@ class RippleShader internal constructor() : RuntimeShader(SHADER, false) {
    var time: Float = 0.0f
        set(value) {
            field = value
            setUniform("in_time", value)
            setFloatUniform("in_time", value)
        }

    /**
@@ -173,9 +172,7 @@ class RippleShader internal constructor() : RuntimeShader(SHADER, false) {
    var color: Int = 0xffffff.toInt()
        set(value) {
            field = value
            val color = Color.valueOf(value)
            setUniform("in_color", floatArrayOf(color.red(),
                    color.green(), color.blue(), color.alpha()))
            setColorUniform("in_color", value)
        }

    /**
@@ -186,7 +183,7 @@ class RippleShader internal constructor() : RuntimeShader(SHADER, false) {
    var sparkleStrength: Float = 0.0f
        set(value) {
            field = value
            setUniform("in_sparkle_strength", value)
            setFloatUniform("in_sparkle_strength", value)
        }

    /**
@@ -195,14 +192,14 @@ class RippleShader internal constructor() : RuntimeShader(SHADER, false) {
    var distortionStrength: Float = 0.0f
        set(value) {
            field = value
            setUniform("in_distort_radial", 75 * progress * value)
            setUniform("in_distort_xy", 75 * value)
            setFloatUniform("in_distort_radial", 75 * progress * value)
            setFloatUniform("in_distort_xy", 75 * value)
        }

    var pixelDensity: Float = 1.0f
        set(value) {
            field = value
            setUniform("in_pixelDensity", value)
            setFloatUniform("in_pixelDensity", value)
        }

    var shouldFadeOutRipple: Boolean = true
+2 −2
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ public class ColorFiltersMutateActivity extends Activity {
            mBlendPaint.setColorFilter(new PorterDuffColorFilter(0, PorterDuff.Mode.SRC_OVER));

            mRuntimeShader = new RuntimeShader(sSkSL, false);
            mRuntimeShader.setUniform("param1", mShaderParam1);
            mRuntimeShader.setFloatUniform("param1", mShaderParam1);
            mRuntimeShader.setInputShader("bitmapShader", new BitmapShader(mBitmap1,
                                                                           Shader.TileMode.CLAMP,
                                                                           Shader.TileMode.CLAMP));
@@ -177,7 +177,7 @@ public class ColorFiltersMutateActivity extends Activity {

        public void setShaderParam1(float value) {
            mShaderParam1 = value;
            mRuntimeShader.setUniform("param1", mShaderParam1);
            mRuntimeShader.setFloatUniform("param1", mShaderParam1);
            invalidate();
        }

Loading