| 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 "GrBezierEffect.h" | 8 #include "GrBezierEffect.h" |
| 9 | 9 |
| 10 #include "gl/GrGLEffect.h" | 10 #include "gl/GrGLEffect.h" |
| 11 #include "gl/GrGLSL.h" | 11 #include "gl/GrGLSL.h" |
| 12 #include "GrTBackendEffectFactory.h" | 12 #include "GrTBackendEffectFactory.h" |
| 13 | 13 |
| 14 class GrGLConicEffect : public GrGLEffect { | 14 class GrGLConicEffect : public GrGLEffect { |
| 15 public: | 15 public: |
| 16 GrGLConicEffect(const GrBackendEffectFactory&, const GrDrawEffect&); | 16 GrGLConicEffect(const GrBackendEffectFactory&, const GrDrawEffect&); |
| 17 | 17 |
| 18 virtual void emitCode(GrGLShaderBuilder* builder, | 18 virtual void emitCode(GrGLShaderBuilder* builder, |
| 19 const GrDrawEffect& drawEffect, | 19 const GrDrawEffect& drawEffect, |
| 20 EffectKey key, | 20 EffectKey key, |
| 21 const char* outputColor, | 21 const char* outputColor, |
| 22 const char* inputColor, | 22 const char* inputColor, |
| 23 const TransformedCoordsArray&, |
| 23 const TextureSamplerArray&) SK_OVERRIDE; | 24 const TextureSamplerArray&) SK_OVERRIDE; |
| 24 | 25 |
| 25 static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); | 26 static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); |
| 26 | 27 |
| 27 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER
RIDE {} | 28 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER
RIDE {} |
| 28 | 29 |
| 29 private: | 30 private: |
| 30 GrBezierEdgeType fEdgeType; | 31 GrBezierEdgeType fEdgeType; |
| 31 | 32 |
| 32 typedef GrGLEffect INHERITED; | 33 typedef GrGLEffect INHERITED; |
| 33 }; | 34 }; |
| 34 | 35 |
| 35 GrGLConicEffect::GrGLConicEffect(const GrBackendEffectFactory& factory, | 36 GrGLConicEffect::GrGLConicEffect(const GrBackendEffectFactory& factory, |
| 36 const GrDrawEffect& drawEffect) | 37 const GrDrawEffect& drawEffect) |
| 37 : INHERITED (factory) { | 38 : INHERITED (factory) { |
| 38 const GrConicEffect& ce = drawEffect.castEffect<GrConicEffect>(); | 39 const GrConicEffect& ce = drawEffect.castEffect<GrConicEffect>(); |
| 39 fEdgeType = ce.getEdgeType(); | 40 fEdgeType = ce.getEdgeType(); |
| 40 } | 41 } |
| 41 | 42 |
| 42 void GrGLConicEffect::emitCode(GrGLShaderBuilder* builder, | 43 void GrGLConicEffect::emitCode(GrGLShaderBuilder* builder, |
| 43 const GrDrawEffect& drawEffect, | 44 const GrDrawEffect& drawEffect, |
| 44 EffectKey key, | 45 EffectKey key, |
| 45 const char* outputColor, | 46 const char* outputColor, |
| 46 const char* inputColor, | 47 const char* inputColor, |
| 48 const TransformedCoordsArray&, |
| 47 const TextureSamplerArray& samplers) { | 49 const TextureSamplerArray& samplers) { |
| 48 GrGLShaderBuilder::VertexBuilder* vertexBuilder = builder->getVertexBuilder(
); | 50 GrGLShaderBuilder::VertexBuilder* vertexBuilder = builder->getVertexBuilder(
); |
| 49 SkASSERT(NULL != vertexBuilder); | 51 SkASSERT(NULL != vertexBuilder); |
| 50 | 52 |
| 51 const char *vsName, *fsName; | 53 const char *vsName, *fsName; |
| 52 | 54 |
| 53 vertexBuilder->addVarying(kVec4f_GrSLType, "ConicCoeffs", | 55 vertexBuilder->addVarying(kVec4f_GrSLType, "ConicCoeffs", |
| 54 &vsName, &fsName); | 56 &vsName, &fsName); |
| 55 const SkString* attr0Name = | 57 const SkString* attr0Name = |
| 56 vertexBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices(
)[0]); | 58 vertexBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices(
)[0]); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 | 158 |
| 157 class GrGLQuadEffect : public GrGLEffect { | 159 class GrGLQuadEffect : public GrGLEffect { |
| 158 public: | 160 public: |
| 159 GrGLQuadEffect(const GrBackendEffectFactory&, const GrDrawEffect&); | 161 GrGLQuadEffect(const GrBackendEffectFactory&, const GrDrawEffect&); |
| 160 | 162 |
| 161 virtual void emitCode(GrGLShaderBuilder* builder, | 163 virtual void emitCode(GrGLShaderBuilder* builder, |
| 162 const GrDrawEffect& drawEffect, | 164 const GrDrawEffect& drawEffect, |
| 163 EffectKey key, | 165 EffectKey key, |
| 164 const char* outputColor, | 166 const char* outputColor, |
| 165 const char* inputColor, | 167 const char* inputColor, |
| 168 const TransformedCoordsArray&, |
| 166 const TextureSamplerArray&) SK_OVERRIDE; | 169 const TextureSamplerArray&) SK_OVERRIDE; |
| 167 | 170 |
| 168 static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); | 171 static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); |
| 169 | 172 |
| 170 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER
RIDE {} | 173 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER
RIDE {} |
| 171 | 174 |
| 172 private: | 175 private: |
| 173 GrBezierEdgeType fEdgeType; | 176 GrBezierEdgeType fEdgeType; |
| 174 | 177 |
| 175 typedef GrGLEffect INHERITED; | 178 typedef GrGLEffect INHERITED; |
| 176 }; | 179 }; |
| 177 | 180 |
| 178 GrGLQuadEffect::GrGLQuadEffect(const GrBackendEffectFactory& factory, | 181 GrGLQuadEffect::GrGLQuadEffect(const GrBackendEffectFactory& factory, |
| 179 const GrDrawEffect& drawEffect) | 182 const GrDrawEffect& drawEffect) |
| 180 : INHERITED (factory) { | 183 : INHERITED (factory) { |
| 181 const GrQuadEffect& ce = drawEffect.castEffect<GrQuadEffect>(); | 184 const GrQuadEffect& ce = drawEffect.castEffect<GrQuadEffect>(); |
| 182 fEdgeType = ce.getEdgeType(); | 185 fEdgeType = ce.getEdgeType(); |
| 183 } | 186 } |
| 184 | 187 |
| 185 void GrGLQuadEffect::emitCode(GrGLShaderBuilder* builder, | 188 void GrGLQuadEffect::emitCode(GrGLShaderBuilder* builder, |
| 186 const GrDrawEffect& drawEffect, | 189 const GrDrawEffect& drawEffect, |
| 187 EffectKey key, | 190 EffectKey key, |
| 188 const char* outputColor, | 191 const char* outputColor, |
| 189 const char* inputColor, | 192 const char* inputColor, |
| 193 const TransformedCoordsArray&, |
| 190 const TextureSamplerArray& samplers) { | 194 const TextureSamplerArray& samplers) { |
| 191 GrGLShaderBuilder::VertexBuilder* vertexBuilder = builder->getVertexBuilder(
); | 195 GrGLShaderBuilder::VertexBuilder* vertexBuilder = builder->getVertexBuilder(
); |
| 192 SkASSERT(NULL != vertexBuilder); | 196 SkASSERT(NULL != vertexBuilder); |
| 193 | 197 |
| 194 const char *vsName, *fsName; | 198 const char *vsName, *fsName; |
| 195 | 199 |
| 196 const SkString* attrName = | 200 const SkString* attrName = |
| 197 vertexBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices(
)[0]); | 201 vertexBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices(
)[0]); |
| 198 builder->fsCodeAppendf("\t\tfloat edgeAlpha;\n"); | 202 builder->fsCodeAppendf("\t\tfloat edgeAlpha;\n"); |
| 199 | 203 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 | 292 |
| 289 class GrGLCubicEffect : public GrGLEffect { | 293 class GrGLCubicEffect : public GrGLEffect { |
| 290 public: | 294 public: |
| 291 GrGLCubicEffect(const GrBackendEffectFactory&, const GrDrawEffect&); | 295 GrGLCubicEffect(const GrBackendEffectFactory&, const GrDrawEffect&); |
| 292 | 296 |
| 293 virtual void emitCode(GrGLShaderBuilder* builder, | 297 virtual void emitCode(GrGLShaderBuilder* builder, |
| 294 const GrDrawEffect& drawEffect, | 298 const GrDrawEffect& drawEffect, |
| 295 EffectKey key, | 299 EffectKey key, |
| 296 const char* outputColor, | 300 const char* outputColor, |
| 297 const char* inputColor, | 301 const char* inputColor, |
| 302 const TransformedCoordsArray&, |
| 298 const TextureSamplerArray&) SK_OVERRIDE; | 303 const TextureSamplerArray&) SK_OVERRIDE; |
| 299 | 304 |
| 300 static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); | 305 static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); |
| 301 | 306 |
| 302 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER
RIDE {} | 307 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER
RIDE {} |
| 303 | 308 |
| 304 private: | 309 private: |
| 305 GrBezierEdgeType fEdgeType; | 310 GrBezierEdgeType fEdgeType; |
| 306 | 311 |
| 307 typedef GrGLEffect INHERITED; | 312 typedef GrGLEffect INHERITED; |
| 308 }; | 313 }; |
| 309 | 314 |
| 310 GrGLCubicEffect::GrGLCubicEffect(const GrBackendEffectFactory& factory, | 315 GrGLCubicEffect::GrGLCubicEffect(const GrBackendEffectFactory& factory, |
| 311 const GrDrawEffect& drawEffect) | 316 const GrDrawEffect& drawEffect) |
| 312 : INHERITED (factory) { | 317 : INHERITED (factory) { |
| 313 const GrCubicEffect& ce = drawEffect.castEffect<GrCubicEffect>(); | 318 const GrCubicEffect& ce = drawEffect.castEffect<GrCubicEffect>(); |
| 314 fEdgeType = ce.getEdgeType(); | 319 fEdgeType = ce.getEdgeType(); |
| 315 } | 320 } |
| 316 | 321 |
| 317 void GrGLCubicEffect::emitCode(GrGLShaderBuilder* builder, | 322 void GrGLCubicEffect::emitCode(GrGLShaderBuilder* builder, |
| 318 const GrDrawEffect& drawEffect, | 323 const GrDrawEffect& drawEffect, |
| 319 EffectKey key, | 324 EffectKey key, |
| 320 const char* outputColor, | 325 const char* outputColor, |
| 321 const char* inputColor, | 326 const char* inputColor, |
| 327 const TransformedCoordsArray&, |
| 322 const TextureSamplerArray& samplers) { | 328 const TextureSamplerArray& samplers) { |
| 323 GrGLShaderBuilder::VertexBuilder* vertexBuilder = builder->getVertexBuilder(
); | 329 GrGLShaderBuilder::VertexBuilder* vertexBuilder = builder->getVertexBuilder(
); |
| 324 SkASSERT(NULL != vertexBuilder); | 330 SkASSERT(NULL != vertexBuilder); |
| 325 | 331 |
| 326 const char *vsName, *fsName; | 332 const char *vsName, *fsName; |
| 327 | 333 |
| 328 vertexBuilder->addVarying(kVec4f_GrSLType, "CubicCoeffs", | 334 vertexBuilder->addVarying(kVec4f_GrSLType, "CubicCoeffs", |
| 329 &vsName, &fsName); | 335 &vsName, &fsName); |
| 330 const SkString* attr0Name = | 336 const SkString* attr0Name = |
| 331 vertexBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices(
)[0]); | 337 vertexBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices(
)[0]); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 | 423 |
| 418 GR_DEFINE_EFFECT_TEST(GrCubicEffect); | 424 GR_DEFINE_EFFECT_TEST(GrCubicEffect); |
| 419 | 425 |
| 420 GrEffectRef* GrCubicEffect::TestCreate(SkRandom* random, | 426 GrEffectRef* GrCubicEffect::TestCreate(SkRandom* random, |
| 421 GrContext*, | 427 GrContext*, |
| 422 const GrDrawTargetCaps& caps, | 428 const GrDrawTargetCaps& caps, |
| 423 GrTexture*[]) { | 429 GrTexture*[]) { |
| 424 const GrBezierEdgeType edgeType = static_cast<GrBezierEdgeType>(random->next
ULessThan(3)); | 430 const GrBezierEdgeType edgeType = static_cast<GrBezierEdgeType>(random->next
ULessThan(3)); |
| 425 return GrCubicEffect::Create(edgeType, caps); | 431 return GrCubicEffect::Create(edgeType, caps); |
| 426 } | 432 } |
| OLD | NEW |