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

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: feedback incorporated 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 27 matching lines...) Expand all
38 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 38 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
39 SkAssertResult(fsBuilder->enableFeature( 39 SkAssertResult(fsBuilder->enableFeature(
40 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature)); 40 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature));
41 41
42 GrGLVertToFrag v(kVec2f_GrSLType); 42 GrGLVertToFrag v(kVec2f_GrSLType);
43 args.fPB->addVarying("TextureCoords", &v); 43 args.fPB->addVarying("TextureCoords", &v);
44 44
45 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 45 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
46 vsBuilder->codeAppendf("\t%s = %s;\n", v.vsOut(), dfTexEffect.inTextureC oords().c_str()); 46 vsBuilder->codeAppendf("\t%s = %s;\n", v.vsOut(), dfTexEffect.inTextureC oords().c_str());
47 47
48 // setup position varying
49 vsBuilder->codeAppendf("vec3 pos3 = %s * vec3(%s, 1);", args.fGP.uViewM( ),
50 args.fGP.inPosition());
51 vsBuilder->transformPositionToDeviceSpace("pos3");
52
48 const char* textureSizeUniName = NULL; 53 const char* textureSizeUniName = NULL;
49 fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Vis ibility, 54 fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Vis ibility,
50 kVec2f_GrSLType, "TextureSize", 55 kVec2f_GrSLType, "TextureSize",
51 &textureSizeUniName); 56 &textureSizeUniName);
52 57
53 fsBuilder->codeAppend("\tvec4 texColor = "); 58 fsBuilder->codeAppend("\tvec4 texColor = ");
54 fsBuilder->appendTextureLookup(args.fSamplers[0], 59 fsBuilder->appendTextureLookup(args.fSamplers[0],
55 v.fsIn(), 60 v.fsIn(),
56 kVec2f_GrSLType); 61 kVec2f_GrSLType);
57 fsBuilder->codeAppend(";\n"); 62 fsBuilder->codeAppend(";\n");
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 254 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
250 SkAssertResult(fsBuilder->enableFeature( 255 SkAssertResult(fsBuilder->enableFeature(
251 GrGLFragmentShaderBuilder::kStandardDerivat ives_GLSLFeature)); 256 GrGLFragmentShaderBuilder::kStandardDerivat ives_GLSLFeature));
252 257
253 GrGLVertToFrag v(kVec2f_GrSLType); 258 GrGLVertToFrag v(kVec2f_GrSLType);
254 args.fPB->addVarying("TextureCoords", &v); 259 args.fPB->addVarying("TextureCoords", &v);
255 260
256 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 261 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
257 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), dfTexEffect.inTextureCoord s().c_str()); 262 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), dfTexEffect.inTextureCoord s().c_str());
258 263
264 // setup position varying
265 vsBuilder->codeAppendf("vec3 pos3 = %s * vec3(%s, 1);", args.fGP.uViewM( ),
266 args.fGP.inPosition());
267 vsBuilder->transformPositionToDeviceSpace("pos3");
268
259 const char* textureSizeUniName = NULL; 269 const char* textureSizeUniName = NULL;
260 fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Vis ibility, 270 fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Vis ibility,
261 kVec2f_GrSLType, "TextureSize", 271 kVec2f_GrSLType, "TextureSize",
262 &textureSizeUniName); 272 &textureSizeUniName);
263 273
264 fsBuilder->codeAppend("vec4 texColor = "); 274 fsBuilder->codeAppend("vec4 texColor = ");
265 fsBuilder->appendTextureLookup(args.fSamplers[0], 275 fsBuilder->appendTextureLookup(args.fSamplers[0],
266 v.fsIn(), 276 v.fsIn(),
267 kVec2f_GrSLType); 277 kVec2f_GrSLType);
268 fsBuilder->codeAppend(";"); 278 fsBuilder->codeAppend(";");
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 const GrDistanceFieldLCDTextureEffect& dfTexEffect = 413 const GrDistanceFieldLCDTextureEffect& dfTexEffect =
404 args.fGP.cast<GrDistanceFieldLCDTextureEffect>(); 414 args.fGP.cast<GrDistanceFieldLCDTextureEffect>();
405 SkASSERT(1 == dfTexEffect.getVertexAttribs().count()); 415 SkASSERT(1 == dfTexEffect.getVertexAttribs().count());
406 416
407 GrGLVertToFrag v(kVec2f_GrSLType); 417 GrGLVertToFrag v(kVec2f_GrSLType);
408 args.fPB->addVarying("TextureCoords", &v); 418 args.fPB->addVarying("TextureCoords", &v);
409 419
410 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 420 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
411 vsBuilder->codeAppendf("\t%s = %s;\n", v.vsOut(), dfTexEffect.inTextureC oords().c_str()); 421 vsBuilder->codeAppendf("\t%s = %s;\n", v.vsOut(), dfTexEffect.inTextureC oords().c_str());
412 422
423 // setup position varying
424 vsBuilder->codeAppendf("vec3 pos3 = %s * vec3(%s, 1);", args.fGP.uViewM( ),
425 args.fGP.inPosition());
426 vsBuilder->transformPositionToDeviceSpace("pos3");
427
413 const char* textureSizeUniName = NULL; 428 const char* textureSizeUniName = NULL;
414 // width, height, 1/(3*width) 429 // width, height, 1/(3*width)
415 fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Vis ibility, 430 fTextureSizeUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Vis ibility,
416 kVec3f_GrSLType, "TextureSize", 431 kVec3f_GrSLType, "TextureSize",
417 &textureSizeUniName); 432 &textureSizeUniName);
418 433
419 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); 434 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
420 435
421 SkAssertResult(fsBuilder->enableFeature( 436 SkAssertResult(fsBuilder->enableFeature(
422 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature)); 437 GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature));
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 random->nextULessThan(256), 647 random->nextULessThan(256),
633 random->nextULessThan(256)); 648 random->nextULessThan(256));
634 uint32_t flags = kUseLCD_DistanceFieldEffectFlag; 649 uint32_t flags = kUseLCD_DistanceFieldEffectFlag;
635 flags |= random->nextBool() ? kUniformScale_DistanceFieldEffectMask : 0; 650 flags |= random->nextBool() ? kUniformScale_DistanceFieldEffectMask : 0;
636 flags |= random->nextBool() ? kBGR_DistanceFieldEffectFlag : 0; 651 flags |= random->nextBool() ? kBGR_DistanceFieldEffectFlag : 0;
637 return GrDistanceFieldLCDTextureEffect::Create(textures[texIdx], params, 652 return GrDistanceFieldLCDTextureEffect::Create(textures[texIdx], params,
638 textures[texIdx2], params2, 653 textures[texIdx2], params2,
639 textColor, 654 textColor,
640 flags); 655 flags);
641 } 656 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698