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

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

Issue 1684063006: Add GrShaderFlags enum (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Bit->Flag Created 4 years, 10 months 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/effects/GrConvolutionEffect.cpp ('k') | src/gpu/effects/GrMatrixConvolutionEffect.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 "GrDistanceFieldGeoProc.h" 8 #include "GrDistanceFieldGeoProc.h"
9 #include "GrInvariantOutput.h" 9 #include "GrInvariantOutput.h"
10 #include "GrTexture.h" 10 #include "GrTexture.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 GrGLSLVaryingHandler* varyingHandler = args.fVaryingHandler; 42 GrGLSLVaryingHandler* varyingHandler = args.fVaryingHandler;
43 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; 43 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler;
44 44
45 // emit attributes 45 // emit attributes
46 varyingHandler->emitAttributes(dfTexEffect); 46 varyingHandler->emitAttributes(dfTexEffect);
47 47
48 #ifdef SK_GAMMA_APPLY_TO_A8 48 #ifdef SK_GAMMA_APPLY_TO_A8
49 // adjust based on gamma 49 // adjust based on gamma
50 const char* distanceAdjustUniName = nullptr; 50 const char* distanceAdjustUniName = nullptr;
51 // width, height, 1/(3*width) 51 // width, height, 1/(3*width)
52 fDistanceAdjustUni = uniformHandler->addUniform(GrGLSLUniformHandler::kF ragment_Visibility, 52 fDistanceAdjustUni = uniformHandler->addUniform(kFragment_GrShaderFlag,
53 kFloat_GrSLType, kDefaul t_GrSLPrecision, 53 kFloat_GrSLType, kDefaul t_GrSLPrecision,
54 "DistanceAdjust", &dista nceAdjustUniName); 54 "DistanceAdjust", &dista nceAdjustUniName);
55 #endif 55 #endif
56 56
57 // Setup pass through color 57 // Setup pass through color
58 if (!dfTexEffect.colorIgnored()) { 58 if (!dfTexEffect.colorIgnored()) {
59 varyingHandler->addPassThroughAttribute(dfTexEffect.inColor(), args. fOutputColor); 59 varyingHandler->addPassThroughAttribute(dfTexEffect.inColor(), args. fOutputColor);
60 } 60 }
61 61
62 // Setup position 62 // Setup position
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 // emit transforms 309 // emit transforms
310 this->emitTransforms(vertBuilder, 310 this->emitTransforms(vertBuilder,
311 varyingHandler, 311 varyingHandler,
312 uniformHandler, 312 uniformHandler,
313 gpArgs->fPositionVar, 313 gpArgs->fPositionVar,
314 dfTexEffect.inPosition()->fName, 314 dfTexEffect.inPosition()->fName,
315 args.fTransformsIn, 315 args.fTransformsIn,
316 args.fTransformsOut); 316 args.fTransformsOut);
317 317
318 const char* textureSizeUniName = nullptr; 318 const char* textureSizeUniName = nullptr;
319 fTextureSizeUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFrag ment_Visibility, 319 fTextureSizeUni = uniformHandler->addUniform(kFragment_GrShaderFlag,
320 kVec2f_GrSLType, kDefault_G rSLPrecision, 320 kVec2f_GrSLType, kDefault_G rSLPrecision,
321 "TextureSize", &textureSize UniName); 321 "TextureSize", &textureSize UniName);
322 322
323 // Use highp to work around aliasing issues 323 // Use highp to work around aliasing issues
324 fragBuilder->codeAppend(GrGLSLShaderVar::PrecisionString(args.fGLSLCaps, 324 fragBuilder->codeAppend(GrGLSLShaderVar::PrecisionString(args.fGLSLCaps,
325 kHigh_GrSLPreci sion)); 325 kHigh_GrSLPreci sion));
326 fragBuilder->codeAppendf("vec2 uv = %s;", v.fsIn()); 326 fragBuilder->codeAppendf("vec2 uv = %s;", v.fsIn());
327 327
328 fragBuilder->codeAppend("float texColor = "); 328 fragBuilder->codeAppend("float texColor = ");
329 fragBuilder->appendTextureLookup(args.fSamplers[0], 329 fragBuilder->appendTextureLookup(args.fSamplers[0],
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 fragBuilder->codeAppend("\ttexColor = "); 587 fragBuilder->codeAppend("\ttexColor = ");
588 fragBuilder->appendTextureLookup(args.fSamplers[0], "uv_adjusted", kVec2 f_GrSLType); 588 fragBuilder->appendTextureLookup(args.fSamplers[0], "uv_adjusted", kVec2 f_GrSLType);
589 fragBuilder->codeAppend(";\n"); 589 fragBuilder->codeAppend(";\n");
590 fragBuilder->codeAppend("\tdistance.z = texColor.r;\n"); 590 fragBuilder->codeAppend("\tdistance.z = texColor.r;\n");
591 591
592 fragBuilder->codeAppend("\tdistance = " 592 fragBuilder->codeAppend("\tdistance = "
593 "vec3(" SK_DistanceFieldMultiplier ")*(distance - vec3(" SK_DistanceF ieldThreshold"));"); 593 "vec3(" SK_DistanceFieldMultiplier ")*(distance - vec3(" SK_DistanceF ieldThreshold"));");
594 594
595 // adjust width based on gamma 595 // adjust width based on gamma
596 const char* distanceAdjustUniName = nullptr; 596 const char* distanceAdjustUniName = nullptr;
597 fDistanceAdjustUni = uniformHandler->addUniform(GrGLSLUniformHandler::kF ragment_Visibility, 597 fDistanceAdjustUni = uniformHandler->addUniform(kFragment_GrShaderFlag,
598 kVec3f_GrSLType, kDefaul t_GrSLPrecision, 598 kVec3f_GrSLType, kDefaul t_GrSLPrecision,
599 "DistanceAdjust", &dista nceAdjustUniName); 599 "DistanceAdjust", &dista nceAdjustUniName);
600 fragBuilder->codeAppendf("distance -= %s;", distanceAdjustUniName); 600 fragBuilder->codeAppendf("distance -= %s;", distanceAdjustUniName);
601 601
602 // To be strictly correct, we should compute the anti-aliasing factor se parately 602 // To be strictly correct, we should compute the anti-aliasing factor se parately
603 // for each color component. However, this is only important when using perspective 603 // for each color component. However, this is only important when using perspective
604 // transformations, and even then using a single factor seems like a rea sonable 604 // transformations, and even then using a single factor seems like a rea sonable
605 // trade-off between quality and speed. 605 // trade-off between quality and speed.
606 fragBuilder->codeAppend("float afwidth;"); 606 fragBuilder->codeAppend("float afwidth;");
607 if (isUniformScale) { 607 if (isUniformScale) {
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 uint32_t flags = kUseLCD_DistanceFieldEffectFlag; 743 uint32_t flags = kUseLCD_DistanceFieldEffectFlag;
744 flags |= d->fRandom->nextBool() ? kUniformScale_DistanceFieldEffectMask : 0; 744 flags |= d->fRandom->nextBool() ? kUniformScale_DistanceFieldEffectMask : 0;
745 flags |= d->fRandom->nextBool() ? kBGR_DistanceFieldEffectFlag : 0; 745 flags |= d->fRandom->nextBool() ? kBGR_DistanceFieldEffectFlag : 0;
746 return GrDistanceFieldLCDTextGeoProc::Create(GrRandomColor(d->fRandom), 746 return GrDistanceFieldLCDTextGeoProc::Create(GrRandomColor(d->fRandom),
747 GrTest::TestMatrix(d->fRandom), 747 GrTest::TestMatrix(d->fRandom),
748 d->fTextures[texIdx], params, 748 d->fTextures[texIdx], params,
749 wa, 749 wa,
750 flags, 750 flags,
751 d->fRandom->nextBool()); 751 d->fRandom->nextBool());
752 } 752 }
OLDNEW
« no previous file with comments | « src/gpu/effects/GrConvolutionEffect.cpp ('k') | src/gpu/effects/GrMatrixConvolutionEffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698