Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(677)

Side by Side Diff: src/gpu/GrOvalRenderer.cpp

Issue 691313003: Revert of Default geometry processor (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/GrOptDrawState.cpp ('k') | src/gpu/GrProcessor.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrOvalRenderer.h" 8 #include "GrOvalRenderer.h"
9 9
10 #include "gl/builders/GrGLProgramBuilder.h" 10 #include "gl/builders/GrGLProgramBuilder.h"
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 : INHERITED (factory) {} 93 : INHERITED (factory) {}
94 94
95 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE { 95 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE {
96 const CircleEdgeEffect& circleEffect = args.fGP.cast<CircleEdgeEffec t>(); 96 const CircleEdgeEffect& circleEffect = args.fGP.cast<CircleEdgeEffec t>();
97 GrGLVertToFrag v(kVec4f_GrSLType); 97 GrGLVertToFrag v(kVec4f_GrSLType);
98 args.fPB->addVarying("CircleEdge", &v); 98 args.fPB->addVarying("CircleEdge", &v);
99 99
100 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();; 100 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();;
101 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), circleEffect.inCircleE dge().c_str()); 101 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), circleEffect.inCircleE dge().c_str());
102 102
103 // setup position varying
104 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPositi on(),
105 vsBuilder->uViewM(), vsBuilder->inPosition()) ;
106
107 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilde r(); 103 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilde r();
108 fsBuilder->codeAppendf("float d = length(%s.xy);", v.fsIn()); 104 fsBuilder->codeAppendf("float d = length(%s.xy);", v.fsIn());
109 fsBuilder->codeAppendf("float edgeAlpha = clamp(%s.z - d, 0.0, 1.0); ", v.fsIn()); 105 fsBuilder->codeAppendf("float edgeAlpha = clamp(%s.z - d, 0.0, 1.0); ", v.fsIn());
110 if (circleEffect.isStroked()) { 106 if (circleEffect.isStroked()) {
111 fsBuilder->codeAppendf("float innerAlpha = clamp(d - %s.w, 0.0, 1.0);", 107 fsBuilder->codeAppendf("float innerAlpha = clamp(d - %s.w, 0.0, 1.0);",
112 v.fsIn()); 108 v.fsIn());
113 fsBuilder->codeAppend("edgeAlpha *= innerAlpha;"); 109 fsBuilder->codeAppend("edgeAlpha *= innerAlpha;");
114 } 110 }
115 111
116 fsBuilder->codeAppendf("%s = %s;\n", args.fOutput, 112 fsBuilder->codeAppendf("%s = %s;\n", args.fOutput,
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 212
217 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 213 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
218 vsBuilder->codeAppendf("%s = %s;", ellipseOffsets.vsOut(), 214 vsBuilder->codeAppendf("%s = %s;", ellipseOffsets.vsOut(),
219 ellipseEffect.inEllipseOffset().c_str()); 215 ellipseEffect.inEllipseOffset().c_str());
220 216
221 GrGLVertToFrag ellipseRadii(kVec4f_GrSLType); 217 GrGLVertToFrag ellipseRadii(kVec4f_GrSLType);
222 args.fPB->addVarying("EllipseRadii", &ellipseRadii); 218 args.fPB->addVarying("EllipseRadii", &ellipseRadii);
223 vsBuilder->codeAppendf("%s = %s;", ellipseRadii.vsOut(), 219 vsBuilder->codeAppendf("%s = %s;", ellipseRadii.vsOut(),
224 ellipseEffect.inEllipseRadii().c_str()); 220 ellipseEffect.inEllipseRadii().c_str());
225 221
226 // setup position varying
227 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPositi on(),
228 vsBuilder->uViewM(), vsBuilder->inPosition()) ;
229
230 // for outer curve 222 // for outer curve
231 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilde r(); 223 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilde r();
232 fsBuilder->codeAppendf("vec2 scaledOffset = %s*%s.xy;", ellipseOffse ts.fsIn(), 224 fsBuilder->codeAppendf("vec2 scaledOffset = %s*%s.xy;", ellipseOffse ts.fsIn(),
233 ellipseRadii.fsIn()); 225 ellipseRadii.fsIn());
234 fsBuilder->codeAppend("float test = dot(scaledOffset, scaledOffset) - 1.0;"); 226 fsBuilder->codeAppend("float test = dot(scaledOffset, scaledOffset) - 1.0;");
235 fsBuilder->codeAppendf("vec2 grad = 2.0*scaledOffset*%s.xy;", ellips eRadii.fsIn()); 227 fsBuilder->codeAppendf("vec2 grad = 2.0*scaledOffset*%s.xy;", ellips eRadii.fsIn());
236 fsBuilder->codeAppend("float grad_dot = dot(grad, grad);"); 228 fsBuilder->codeAppend("float grad_dot = dot(grad, grad);");
237 229
238 // avoid calling inversesqrt on zero. 230 // avoid calling inversesqrt on zero.
239 fsBuilder->codeAppend("grad_dot = max(grad_dot, 1.0e-4);"); 231 fsBuilder->codeAppend("grad_dot = max(grad_dot, 1.0e-4);");
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 358
367 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 359 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
368 vsBuilder->codeAppendf("%s = %s;", offsets0.vsOut(), 360 vsBuilder->codeAppendf("%s = %s;", offsets0.vsOut(),
369 ellipseEffect.inEllipseOffsets0().c_str()); 361 ellipseEffect.inEllipseOffsets0().c_str());
370 362
371 GrGLVertToFrag offsets1(kVec2f_GrSLType); 363 GrGLVertToFrag offsets1(kVec2f_GrSLType);
372 args.fPB->addVarying("EllipseOffsets1", &offsets1); 364 args.fPB->addVarying("EllipseOffsets1", &offsets1);
373 vsBuilder->codeAppendf("%s = %s;", offsets1.vsOut(), 365 vsBuilder->codeAppendf("%s = %s;", offsets1.vsOut(),
374 ellipseEffect.inEllipseOffsets1().c_str()); 366 ellipseEffect.inEllipseOffsets1().c_str());
375 367
376 // setup position varying
377 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPositi on(),
378 vsBuilder->uViewM(), vsBuilder->inPosition()) ;
379
380 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilde r(); 368 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilde r();
381 SkAssertResult(fsBuilder->enableFeature( 369 SkAssertResult(fsBuilder->enableFeature(
382 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature) ); 370 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature) );
383 // for outer curve 371 // for outer curve
384 fsBuilder->codeAppendf("vec2 scaledOffset = %s.xy;", offsets0.fsIn() ); 372 fsBuilder->codeAppendf("vec2 scaledOffset = %s.xy;", offsets0.fsIn() );
385 fsBuilder->codeAppend("float test = dot(scaledOffset, scaledOffset) - 1.0;"); 373 fsBuilder->codeAppend("float test = dot(scaledOffset, scaledOffset) - 1.0;");
386 fsBuilder->codeAppendf("vec2 duvdx = dFdx(%s);", offsets0.fsIn()); 374 fsBuilder->codeAppendf("vec2 duvdx = dFdx(%s);", offsets0.fsIn());
387 fsBuilder->codeAppendf("vec2 duvdy = dFdy(%s);", offsets0.fsIn()); 375 fsBuilder->codeAppendf("vec2 duvdy = dFdy(%s);", offsets0.fsIn());
388 fsBuilder->codeAppendf("vec2 grad = vec2(2.0*%s.x*duvdx.x + 2.0*%s.y *duvdx.y," 376 fsBuilder->codeAppendf("vec2 grad = vec2(2.0*%s.x*duvdx.x + 2.0*%s.y *duvdx.y,"
389 " 2.0*%s.x*duvdy.x + 2.0*%s.y *duvdy.y);", 377 " 2.0*%s.x*duvdy.x + 2.0*%s.y *duvdy.y);",
(...skipping 861 matching lines...) Expand 10 before | Expand all | Expand 10 after
1251 // drop out the middle quad if we're stroked 1239 // drop out the middle quad if we're stroked
1252 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 : 1240 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 :
1253 SK_ARRAY_COUNT(gRRectIndices); 1241 SK_ARRAY_COUNT(gRRectIndices);
1254 target->setIndexSourceToBuffer(indexBuffer); 1242 target->setIndexSourceToBuffer(indexBuffer);
1255 target->drawIndexedInstances(kTriangles_GrPrimitiveType, 1, 16, indexCnt , &bounds); 1243 target->drawIndexedInstances(kTriangles_GrPrimitiveType, 1, 16, indexCnt , &bounds);
1256 } 1244 }
1257 1245
1258 target->resetIndexSource(); 1246 target->resetIndexSource();
1259 return true; 1247 return true;
1260 } 1248 }
OLDNEW
« no previous file with comments | « src/gpu/GrOptDrawState.cpp ('k') | src/gpu/GrProcessor.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698