Merge "Apply ComposeShader's local matrix to children" into jb-mr2-dev
This commit is contained in:
@@ -411,8 +411,14 @@ void SkiaComposeShader::describe(ProgramDescription& description, const Extensio
|
|||||||
|
|
||||||
void SkiaComposeShader::setupProgram(Program* program, const mat4& modelView,
|
void SkiaComposeShader::setupProgram(Program* program, const mat4& modelView,
|
||||||
const Snapshot& snapshot, GLuint* textureUnit) {
|
const Snapshot& snapshot, GLuint* textureUnit) {
|
||||||
mFirst->setupProgram(program, modelView, snapshot, textureUnit);
|
// Apply this compose shader's local transform and pass it down to
|
||||||
mSecond->setupProgram(program, modelView, snapshot, textureUnit);
|
// the child shaders. They will in turn apply their local transform
|
||||||
|
// to this matrix.
|
||||||
|
mat4 transform;
|
||||||
|
computeScreenSpaceMatrix(transform, modelView);
|
||||||
|
|
||||||
|
mFirst->setupProgram(program, transform, snapshot, textureUnit);
|
||||||
|
mSecond->setupProgram(program, transform, snapshot, textureUnit);
|
||||||
}
|
}
|
||||||
|
|
||||||
}; // namespace uirenderer
|
}; // namespace uirenderer
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ public class MoreShadersActivity extends Activity {
|
|||||||
private Paint mLargePaint;
|
private Paint mLargePaint;
|
||||||
private BitmapShader mScaled2Shader;
|
private BitmapShader mScaled2Shader;
|
||||||
private ColorFilter mColorFilter;
|
private ColorFilter mColorFilter;
|
||||||
|
private final Matrix mMtx1;
|
||||||
|
|
||||||
ShadersView(Context c) {
|
ShadersView(Context c) {
|
||||||
super(c);
|
super(c);
|
||||||
@@ -70,7 +71,7 @@ public class MoreShadersActivity extends Activity {
|
|||||||
mScaledShader = new BitmapShader(texture, Shader.TileMode.MIRROR,
|
mScaledShader = new BitmapShader(texture, Shader.TileMode.MIRROR,
|
||||||
Shader.TileMode.MIRROR);
|
Shader.TileMode.MIRROR);
|
||||||
Matrix m2 = new Matrix();
|
Matrix m2 = new Matrix();
|
||||||
m2.setScale(0.5f, 0.5f);
|
m2.setScale(0.1f, 0.1f);
|
||||||
mScaledShader.setLocalMatrix(m2);
|
mScaledShader.setLocalMatrix(m2);
|
||||||
|
|
||||||
mScaled2Shader = new BitmapShader(texture, Shader.TileMode.MIRROR,
|
mScaled2Shader = new BitmapShader(texture, Shader.TileMode.MIRROR,
|
||||||
@@ -81,12 +82,20 @@ public class MoreShadersActivity extends Activity {
|
|||||||
|
|
||||||
mHorGradient = new LinearGradient(0.0f, 0.0f, mDrawWidth, 0.0f,
|
mHorGradient = new LinearGradient(0.0f, 0.0f, mDrawWidth, 0.0f,
|
||||||
Color.RED, 0x7f00ff00, Shader.TileMode.CLAMP);
|
Color.RED, 0x7f00ff00, Shader.TileMode.CLAMP);
|
||||||
|
Matrix m4 = new Matrix();
|
||||||
|
m4.setScale(0.5f, 0.5f);
|
||||||
|
mHorGradient.setLocalMatrix(m4);
|
||||||
|
|
||||||
mVertGradient = new LinearGradient(0.0f, 0.0f, 0.0f, mDrawHeight / 2.0f,
|
mVertGradient = new LinearGradient(0.0f, 0.0f, 0.0f, mDrawHeight / 2.0f,
|
||||||
Color.YELLOW, Color.MAGENTA, Shader.TileMode.MIRROR);
|
Color.YELLOW, Color.MAGENTA, Shader.TileMode.MIRROR);
|
||||||
|
|
||||||
mComposeShader = new ComposeShader(mScaledShader, mHorGradient,
|
mComposeShader = new ComposeShader(mScaledShader, mHorGradient,
|
||||||
PorterDuff.Mode.SRC_OVER);
|
PorterDuff.Mode.SRC_OVER);
|
||||||
|
mMtx1 = new Matrix();
|
||||||
|
mMtx1.setTranslate(mTexWidth / 2.0f, mTexHeight / 2.0f);
|
||||||
|
mMtx1.postRotate(45, 0, 0);
|
||||||
|
mComposeShader.setLocalMatrix(mMtx1);
|
||||||
|
|
||||||
mCompose2Shader = new ComposeShader(mHorGradient, mScaledShader,
|
mCompose2Shader = new ComposeShader(mHorGradient, mScaledShader,
|
||||||
PorterDuff.Mode.SRC_OUT);
|
PorterDuff.Mode.SRC_OUT);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user