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