Index: src/core/SkNormalSource.cpp |
diff --git a/src/core/SkNormalSource.cpp b/src/core/SkNormalSource.cpp |
index 421f56459d0a4c0cf75cd17719ab119f215f44ff..7a4bb2de59ea7797d0bb087c8a196cfcadb82561 100644 |
--- a/src/core/SkNormalSource.cpp |
+++ b/src/core/SkNormalSource.cpp |
@@ -385,6 +385,8 @@ public: |
: fType(type) |
, fWidth(width) |
, fHeight(height) { |
+ fUsesDistanceVectorField = true; |
+ |
this->initClassID<NormalBevelFP>(); |
} |
@@ -395,7 +397,15 @@ public: |
void emitCode(EmitArgs& args) override { |
GrGLSLFragmentBuilder* fragBuilder = args.fFragBuilder; |
- fragBuilder->codeAppendf("%s = vec4(0, 0, 1, 0);", args.fOutputColor); |
+ fragBuilder->codeAppendf("if (%s == vec2(0.0, 0.0)) {", |
+ fragBuilder->distanceVectorName()); |
+ fragBuilder->codeAppendf(" %s = normalize(vec4(0.0, 0.0, 1.0, 0.0));", |
+ args.fOutputColor); |
+ fragBuilder->codeAppend( "} else {"); |
+ // TODO (dvonbeck): emit normals according to bevel type and distance vector |
+ fragBuilder->codeAppendf(" %s = normalize(vec4(0.0, 0.0, 1.0, 0.0));", |
+ args.fOutputColor); |
+ fragBuilder->codeAppend( "}"); |
} |
static void GenKey(const GrProcessor& proc, const GrGLSLCaps&, |