diff options
author | joshualitt <joshualitt@chromium.org> | 2014-11-07 11:47:10 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-07 11:47:10 -0800 |
commit | ff343074b2a3fdaa5f120600e28717e366bceadd (patch) | |
tree | 6c1048d98ccad875adf9976e35d1e6ea84b2b3a2 /src/gpu/effects | |
parent | 7a72c6702da9e1f6fb536efe844db23f77535a19 (diff) |
Default geometry processor
BUG=skia:
Review URL: https://codereview.chromium.org/678953002
Diffstat (limited to 'src/gpu/effects')
-rw-r--r-- | src/gpu/effects/GrBezierEffect.cpp | 12 | ||||
-rw-r--r-- | src/gpu/effects/GrCustomCoordsTextureEffect.cpp | 4 | ||||
-rw-r--r-- | src/gpu/effects/GrDashingEffect.cpp | 8 | ||||
-rwxr-xr-x | src/gpu/effects/GrDistanceFieldTextureEffect.cpp | 12 |
4 files changed, 36 insertions, 0 deletions
diff --git a/src/gpu/effects/GrBezierEffect.cpp b/src/gpu/effects/GrBezierEffect.cpp index 196168c06a..26049b398b 100644 --- a/src/gpu/effects/GrBezierEffect.cpp +++ b/src/gpu/effects/GrBezierEffect.cpp @@ -44,6 +44,10 @@ void GrGLConicEffect::emitCode(const EmitArgs& args) { GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); vsBuilder->codeAppendf("%s = %s;", v.vsOut(), inConicCoeffs.c_str()); + // setup position varying + vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), vsBuilder->uViewM(), + vsBuilder->inPosition()); + GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); fsBuilder->codeAppend("float edgeAlpha;"); @@ -184,6 +188,10 @@ void GrGLQuadEffect::emitCode(const EmitArgs& args) { const GrShaderVar& inHairQuadEdge = args.fGP.cast<GrQuadEffect>().inHairQuadEdge(); vsBuilder->codeAppendf("%s = %s;", v.vsOut(), inHairQuadEdge.c_str()); + // setup position varying + vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), vsBuilder->uViewM(), + vsBuilder->inPosition()); + GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); fsBuilder->codeAppendf("float edgeAlpha;"); @@ -310,6 +318,10 @@ void GrGLCubicEffect::emitCode(const EmitArgs& args) { const GrShaderVar& inCubicCoeffs = args.fGP.cast<GrCubicEffect>().inCubicCoeffs(); vsBuilder->codeAppendf("%s = %s;", v.vsOut(), inCubicCoeffs.c_str()); + // setup position varying + vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), vsBuilder->uViewM(), + vsBuilder->inPosition()); + GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); GrGLShaderVar edgeAlpha("edgeAlpha", kFloat_GrSLType, 0, GrGLShaderVar::kHigh_Precision); diff --git a/src/gpu/effects/GrCustomCoordsTextureEffect.cpp b/src/gpu/effects/GrCustomCoordsTextureEffect.cpp index afa0754603..77e799414a 100644 --- a/src/gpu/effects/GrCustomCoordsTextureEffect.cpp +++ b/src/gpu/effects/GrCustomCoordsTextureEffect.cpp @@ -31,6 +31,10 @@ public: const GrShaderVar& inTextureCoords = customCoordsTextureEffect.inTextureCoords(); vsBuilder->codeAppendf("%s = %s;", v.vsOut(), inTextureCoords.c_str()); + // setup position varying + vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), + vsBuilder->uViewM(), vsBuilder->inPosition()); + GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); fsBuilder->codeAppendf("%s = ", args.fOutput); fsBuilder->appendTextureLookupAndModulate(args.fInput, diff --git a/src/gpu/effects/GrDashingEffect.cpp b/src/gpu/effects/GrDashingEffect.cpp index f2e4438158..65ba84858d 100644 --- a/src/gpu/effects/GrDashingEffect.cpp +++ b/src/gpu/effects/GrDashingEffect.cpp @@ -520,6 +520,10 @@ void GLDashingCircleEffect::emitCode(const EmitArgs& args) { GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); vsBuilder->codeAppendf("\t%s = %s;\n", v.vsOut(), dce.inCoord().c_str()); + // setup position varying + vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), vsBuilder->uViewM(), + vsBuilder->inPosition()); + // transforms all points so that we can compare them to our test circle GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s.z) * %s.z;\n", @@ -723,6 +727,10 @@ void GLDashingLineEffect::emitCode(const EmitArgs& args) { GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); vsBuilder->codeAppendf("\t%s = %s;\n", v.vsOut(), de.inCoord().c_str()); + // setup position varying + vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), vsBuilder->uViewM(), + vsBuilder->inPosition()); + // transforms all points so that we can compare them to our test rect GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s) * %s;\n", diff --git a/src/gpu/effects/GrDistanceFieldTextureEffect.cpp b/src/gpu/effects/GrDistanceFieldTextureEffect.cpp index b9776986b5..0c7a9a3d8c 100755 --- a/src/gpu/effects/GrDistanceFieldTextureEffect.cpp +++ b/src/gpu/effects/GrDistanceFieldTextureEffect.cpp @@ -45,6 +45,10 @@ public: GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); vsBuilder->codeAppendf("\t%s = %s;\n", v.vsOut(), dfTexEffect.inTextureCoords().c_str()); + // setup position varying + vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), + vsBuilder->uViewM(), vsBuilder->inPosition()); + const char* textureSizeUniName = NULL; fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility, kVec2f_GrSLType, "TextureSize", @@ -256,6 +260,10 @@ public: GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); vsBuilder->codeAppendf("%s = %s;", v.vsOut(), dfTexEffect.inTextureCoords().c_str()); + // setup position varying + vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), + vsBuilder->uViewM(), vsBuilder->inPosition()); + const char* textureSizeUniName = NULL; fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility, kVec2f_GrSLType, "TextureSize", @@ -410,6 +418,10 @@ public: GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); vsBuilder->codeAppendf("\t%s = %s;\n", v.vsOut(), dfTexEffect.inTextureCoords().c_str()); + // setup position varying + vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), + vsBuilder->uViewM(), vsBuilder->inPosition()); + const char* textureSizeUniName = NULL; // width, height, 1/(3*width) fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility, |