| Index: src/gpu/GrOvalRenderer.cpp
|
| diff --git a/src/gpu/GrOvalRenderer.cpp b/src/gpu/GrOvalRenderer.cpp
|
| index 72a01813b4028e0edc010d51b93e4d9885787c36..edce12315ff636f50db9fecf26b5cedd80ab845d 100644
|
| --- a/src/gpu/GrOvalRenderer.cpp
|
| +++ b/src/gpu/GrOvalRenderer.cpp
|
| @@ -100,6 +100,11 @@ public:
|
| GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();;
|
| vsBuilder->codeAppendf("%s = %s;", v.vsOut(), circleEffect.inCircleEdge().c_str());
|
|
|
| + // setup position varying
|
| + vsBuilder->codeAppendf("vec3 pos3 = %s * vec3(%s, 1);", args.fGP.uViewM(),
|
| + args.fGP.inPosition());
|
| + vsBuilder->transformPositionToDeviceSpace("pos3");
|
| +
|
| GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
|
| fsBuilder->codeAppendf("float d = length(%s.xy);", v.fsIn());
|
| fsBuilder->codeAppendf("float edgeAlpha = clamp(%s.z - d, 0.0, 1.0);", v.fsIn());
|
| @@ -219,6 +224,11 @@ public:
|
| vsBuilder->codeAppendf("%s = %s;", ellipseRadii.vsOut(),
|
| ellipseEffect.inEllipseRadii().c_str());
|
|
|
| + // setup position varying
|
| + vsBuilder->codeAppendf("vec3 pos3 = %s * vec3(%s, 1);", args.fGP.uViewM(),
|
| + args.fGP.inPosition());
|
| + vsBuilder->transformPositionToDeviceSpace("pos3");
|
| +
|
| // for outer curve
|
| GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
|
| fsBuilder->codeAppendf("vec2 scaledOffset = %s*%s.xy;", ellipseOffsets.fsIn(),
|
| @@ -365,6 +375,11 @@ public:
|
| vsBuilder->codeAppendf("%s = %s;", offsets1.vsOut(),
|
| ellipseEffect.inEllipseOffsets1().c_str());
|
|
|
| + // setup position varying
|
| + vsBuilder->codeAppendf("vec3 pos3 = %s * vec3(%s, 1);", args.fGP.uViewM(),
|
| + args.fGP.inPosition());
|
| + vsBuilder->transformPositionToDeviceSpace("pos3");
|
| +
|
| GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
|
| SkAssertResult(fsBuilder->enableFeature(
|
| GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature));
|
|
|