Merge "Update RuntimeShader users to new setUniform APIs"
This commit is contained in:
committed by
Android (Google) Code Review
commit
b01686d138
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ public class RippleActivity extends Activity {
|
||||
mPaint = CanvasProperty.createPaint(p);
|
||||
|
||||
mRuntimeShader = new RuntimeShader(sSkSL, false);
|
||||
mRuntimeShader.setUniform("in_maxRadius", MAX_RADIUS);
|
||||
mRuntimeShader.setFloatUniform("in_maxRadius", MAX_RADIUS);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -357,18 +357,18 @@ public class StretchShaderActivity extends Activity {
|
||||
float uScrollX = mScrollX;
|
||||
float uScrollY = mScrollY;
|
||||
|
||||
mRuntimeShader.setUniform("uMaxStretchIntensity", mMaxStretchIntensity);
|
||||
mRuntimeShader.setUniform("uStretchAffectedDist", mStretchAffectedDistance);
|
||||
mRuntimeShader.setUniform("uDistanceStretchedX", distanceStretchedX);
|
||||
mRuntimeShader.setUniform("uDistanceStretchedY", distanceStretchedY);
|
||||
mRuntimeShader.setUniform("uDistDiffX", diffX);
|
||||
mRuntimeShader.setUniform("uDistDiffY", diffY);
|
||||
mRuntimeShader.setUniform("uOverscrollX", normOverScrollDistX);
|
||||
mRuntimeShader.setUniform("uOverscrollY", normOverScrollDistY);
|
||||
mRuntimeShader.setUniform("uScrollX", uScrollX);
|
||||
mRuntimeShader.setUniform("uScrollY", uScrollY);
|
||||
mRuntimeShader.setUniform("viewportWidth", width);
|
||||
mRuntimeShader.setUniform("viewportHeight", height);
|
||||
mRuntimeShader.setFloatUniform("uMaxStretchIntensity", mMaxStretchIntensity);
|
||||
mRuntimeShader.setFloatUniform("uStretchAffectedDist", mStretchAffectedDistance);
|
||||
mRuntimeShader.setFloatUniform("uDistanceStretchedX", distanceStretchedX);
|
||||
mRuntimeShader.setFloatUniform("uDistanceStretchedY", distanceStretchedY);
|
||||
mRuntimeShader.setFloatUniform("uDistDiffX", diffX);
|
||||
mRuntimeShader.setFloatUniform("uDistDiffY", diffY);
|
||||
mRuntimeShader.setFloatUniform("uOverscrollX", normOverScrollDistX);
|
||||
mRuntimeShader.setFloatUniform("uOverscrollY", normOverScrollDistY);
|
||||
mRuntimeShader.setFloatUniform("uScrollX", uScrollX);
|
||||
mRuntimeShader.setFloatUniform("uScrollY", uScrollY);
|
||||
mRuntimeShader.setFloatUniform("viewportWidth", width);
|
||||
mRuntimeShader.setFloatUniform("viewportHeight", height);
|
||||
|
||||
mImageView.setRenderEffect(RenderEffect.createShaderEffect(mRuntimeShader));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user