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

Side by Side Diff: src/gpu/effects/GrDistanceFieldTextureEffect.cpp

Issue 678953002: Default geometry processor (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: fix dm bug 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
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 "GrDistanceFieldTextureEffect.h" 8 #include "GrDistanceFieldTextureEffect.h"
9 #include "gl/builders/GrGLProgramBuilder.h" 9 #include "gl/builders/GrGLProgramBuilder.h"
10 #include "gl/GrGLProcessor.h" 10 #include "gl/GrGLProcessor.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 48 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
49 SkAssertResult(fsBuilder->enableFeature( 49 SkAssertResult(fsBuilder->enableFeature(
50 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature)); 50 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature));
51 51
52 GrGLVertToFrag v(kVec2f_GrSLType); 52 GrGLVertToFrag v(kVec2f_GrSLType);
53 args.fPB->addVarying("TextureCoords", &v); 53 args.fPB->addVarying("TextureCoords", &v);
54 54
55 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 55 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
56 vsBuilder->codeAppendf("\t%s = %s;\n", v.vsOut(), dfTexEffect.inTextureC oords().c_str()); 56 vsBuilder->codeAppendf("\t%s = %s;\n", v.vsOut(), dfTexEffect.inTextureC oords().c_str());
57 57
58 // setup position varying
59 vsBuilder->codeAppendf("vec3 pos3 = %s * vec3(%s, 1);", args.fGP.uViewM( ),
60 args.fGP.inPosition());
61 vsBuilder->transformPositionToDeviceSpace("pos3");
62
58 const char* textureSizeUniName = NULL; 63 const char* textureSizeUniName = NULL;
59 fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Vis ibility, 64 fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Vis ibility,
60 kVec2f_GrSLType, "TextureSize", 65 kVec2f_GrSLType, "TextureSize",
61 &textureSizeUniName); 66 &textureSizeUniName);
62 67
63 fsBuilder->codeAppend("\tvec4 texColor = "); 68 fsBuilder->codeAppend("\tvec4 texColor = ");
64 fsBuilder->appendTextureLookup(args.fSamplers[0], 69 fsBuilder->appendTextureLookup(args.fSamplers[0],
65 v.fsIn(), 70 v.fsIn(),
66 kVec2f_GrSLType); 71 kVec2f_GrSLType);
67 fsBuilder->codeAppend(";\n"); 72 fsBuilder->codeAppend(";\n");
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 265 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
261 SkAssertResult(fsBuilder->enableFeature( 266 SkAssertResult(fsBuilder->enableFeature(
262 GrGLFragmentShaderBuilder::kStandardDerivat ives_GLSLFeature)); 267 GrGLFragmentShaderBuilder::kStandardDerivat ives_GLSLFeature));
263 268
264 GrGLVertToFrag v(kVec2f_GrSLType); 269 GrGLVertToFrag v(kVec2f_GrSLType);
265 args.fPB->addVarying("TextureCoords", &v); 270 args.fPB->addVarying("TextureCoords", &v);
266 271
267 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 272 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
268 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), dfTexEffect.inTextureCoord s().c_str()); 273 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), dfTexEffect.inTextureCoord s().c_str());
269 274
275 // setup position varying
276 vsBuilder->codeAppendf("vec3 pos3 = %s * vec3(%s, 1);", args.fGP.uViewM( ),
277 args.fGP.inPosition());
278 vsBuilder->transformPositionToDeviceSpace("pos3");
279
270 const char* textureSizeUniName = NULL; 280 const char* textureSizeUniName = NULL;
271 fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Vis ibility, 281 fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Vis ibility,
272 kVec2f_GrSLType, "TextureSize", 282 kVec2f_GrSLType, "TextureSize",
273 &textureSizeUniName); 283 &textureSizeUniName);
274 284
275 fsBuilder->codeAppend("vec4 texColor = "); 285 fsBuilder->codeAppend("vec4 texColor = ");
276 fsBuilder->appendTextureLookup(args.fSamplers[0], 286 fsBuilder->appendTextureLookup(args.fSamplers[0],
277 v.fsIn(), 287 v.fsIn(),
278 kVec2f_GrSLType); 288 kVec2f_GrSLType);
279 fsBuilder->codeAppend(";"); 289 fsBuilder->codeAppend(";");
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 const GrDistanceFieldLCDTextureEffect& dfTexEffect = 424 const GrDistanceFieldLCDTextureEffect& dfTexEffect =
415 args.fGP.cast<GrDistanceFieldLCDTextureEffect>(); 425 args.fGP.cast<GrDistanceFieldLCDTextureEffect>();
416 SkASSERT(1 == dfTexEffect.getVertexAttribs().count()); 426 SkASSERT(1 == dfTexEffect.getVertexAttribs().count());
417 427
418 GrGLVertToFrag v(kVec2f_GrSLType); 428 GrGLVertToFrag v(kVec2f_GrSLType);
419 args.fPB->addVarying("TextureCoords", &v); 429 args.fPB->addVarying("TextureCoords", &v);
420 430
421 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 431 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
422 vsBuilder->codeAppendf("\t%s = %s;\n", v.vsOut(), dfTexEffect.inTextureC oords().c_str()); 432 vsBuilder->codeAppendf("\t%s = %s;\n", v.vsOut(), dfTexEffect.inTextureC oords().c_str());
423 433
434 // setup position varying
435 vsBuilder->codeAppendf("vec3 pos3 = %s * vec3(%s, 1);", args.fGP.uViewM( ),
436 args.fGP.inPosition());
437 vsBuilder->transformPositionToDeviceSpace("pos3");
438
424 const char* textureSizeUniName = NULL; 439 const char* textureSizeUniName = NULL;
425 // width, height, 1/(3*width) 440 // width, height, 1/(3*width)
426 fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Vis ibility, 441 fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Vis ibility,
427 kVec3f_GrSLType, "TextureSize", 442 kVec3f_GrSLType, "TextureSize",
428 &textureSizeUniName); 443 &textureSizeUniName);
429 444
430 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 445 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
431 446
432 SkAssertResult(fsBuilder->enableFeature( 447 SkAssertResult(fsBuilder->enableFeature(
433 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature)); 448 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature));
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 random->nextULessThan(256), 659 random->nextULessThan(256),
645 random->nextULessThan(256)); 660 random->nextULessThan(256));
646 uint32_t flags = kUseLCD_DistanceFieldEffectFlag; 661 uint32_t flags = kUseLCD_DistanceFieldEffectFlag;
647 flags |= random->nextBool() ? kUniformScale_DistanceFieldEffectMask : 0; 662 flags |= random->nextBool() ? kUniformScale_DistanceFieldEffectMask : 0;
648 flags |= random->nextBool() ? kBGR_DistanceFieldEffectFlag : 0; 663 flags |= random->nextBool() ? kBGR_DistanceFieldEffectFlag : 0;
649 return GrDistanceFieldLCDTextureEffect::Create(textures[texIdx], params, 664 return GrDistanceFieldLCDTextureEffect::Create(textures[texIdx], params,
650 textures[texIdx2], params2, 665 textures[texIdx2], params2,
651 textColor, 666 textColor,
652 flags); 667 flags);
653 } 668 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698