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

Side by Side Diff: src/effects/SkLightingImageFilter.cpp

Issue 2041113004: sk_sp for gpu. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Reserve correctly. Created 4 years, 6 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/effects/SkGpuBlurUtils.cpp ('k') | src/effects/SkLumaColorFilter.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 2012 The Android Open Source Project 2 * Copyright 2012 The Android Open Source Project
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 "SkLightingImageFilter.h" 8 #include "SkLightingImageFilter.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkColorPriv.h" 10 #include "SkColorPriv.h"
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 sk_sp<SkImageFilter> input, 352 sk_sp<SkImageFilter> input,
353 const CropRect* cropRect) 353 const CropRect* cropRect)
354 : INHERITED(std::move(light), surfaceScale, std::move(input), cropRect) { 354 : INHERITED(std::move(light), surfaceScale, std::move(input), cropRect) {
355 } 355 }
356 356
357 #if SK_SUPPORT_GPU 357 #if SK_SUPPORT_GPU
358 sk_sp<SkSpecialImage> filterImageGPU(SkSpecialImage* source, 358 sk_sp<SkSpecialImage> filterImageGPU(SkSpecialImage* source,
359 SkSpecialImage* input, 359 SkSpecialImage* input,
360 const SkIRect& bounds, 360 const SkIRect& bounds,
361 const SkMatrix& matrix) const; 361 const SkMatrix& matrix) const;
362 virtual GrFragmentProcessor* getFragmentProcessor(GrTexture*, 362 virtual sk_sp<GrFragmentProcessor> makeFragmentProcessor(GrTexture*,
363 const SkMatrix&, 363 const SkMatrix&,
364 const SkIRect* srcBounds, 364 const SkIRect* srcB ounds,
365 BoundaryMode boundaryMode) const = 0; 365 BoundaryMode bounda ryMode) const = 0;
366 #endif 366 #endif
367 private: 367 private:
368 #if SK_SUPPORT_GPU 368 #if SK_SUPPORT_GPU
369 void drawRect(GrDrawContext* drawContext, 369 void drawRect(GrDrawContext* drawContext,
370 GrTexture* src, 370 GrTexture* src,
371 const SkMatrix& matrix, 371 const SkMatrix& matrix,
372 const GrClip& clip, 372 const GrClip& clip,
373 const SkRect& dstRect, 373 const SkRect& dstRect,
374 BoundaryMode boundaryMode, 374 BoundaryMode boundaryMode,
375 const SkIRect* srcBounds, 375 const SkIRect* srcBounds,
376 const SkIRect& bounds) const; 376 const SkIRect& bounds) const;
377 #endif 377 #endif
378 typedef SkLightingImageFilter INHERITED; 378 typedef SkLightingImageFilter INHERITED;
379 }; 379 };
380 380
381 #if SK_SUPPORT_GPU 381 #if SK_SUPPORT_GPU
382 void SkLightingImageFilterInternal::drawRect(GrDrawContext* drawContext, 382 void SkLightingImageFilterInternal::drawRect(GrDrawContext* drawContext,
383 GrTexture* src, 383 GrTexture* src,
384 const SkMatrix& matrix, 384 const SkMatrix& matrix,
385 const GrClip& clip, 385 const GrClip& clip,
386 const SkRect& dstRect, 386 const SkRect& dstRect,
387 BoundaryMode boundaryMode, 387 BoundaryMode boundaryMode,
388 const SkIRect* srcBounds, 388 const SkIRect* srcBounds,
389 const SkIRect& bounds) const { 389 const SkIRect& bounds) const {
390 SkRect srcRect = dstRect.makeOffset(SkIntToScalar(bounds.x()), SkIntToScalar (bounds.y())); 390 SkRect srcRect = dstRect.makeOffset(SkIntToScalar(bounds.x()), SkIntToScalar (bounds.y()));
391 GrPaint paint; 391 GrPaint paint;
392 // SRGBTODO: AllowSRGBInputs? 392 // SRGBTODO: AllowSRGBInputs?
393 GrFragmentProcessor* fp = this->getFragmentProcessor(src, matrix, srcBounds, boundaryMode); 393 sk_sp<GrFragmentProcessor> fp(this->makeFragmentProcessor(src, matrix, srcBo unds,
394 paint.addColorFragmentProcessor(fp)->unref(); 394 boundaryMode));
395 paint.addColorFragmentProcessor(std::move(fp));
395 paint.setPorterDuffXPFactory(SkXfermode::kSrc_Mode); 396 paint.setPorterDuffXPFactory(SkXfermode::kSrc_Mode);
396 drawContext->fillRectToRect(clip, paint, SkMatrix::I(), dstRect, srcRect); 397 drawContext->fillRectToRect(clip, paint, SkMatrix::I(), dstRect, srcRect);
397 } 398 }
398 399
399 sk_sp<SkSpecialImage> SkLightingImageFilterInternal::filterImageGPU(SkSpecialIma ge* source, 400 sk_sp<SkSpecialImage> SkLightingImageFilterInternal::filterImageGPU(SkSpecialIma ge* source,
400 SkSpecialIma ge* input, 401 SkSpecialIma ge* input,
401 const SkIRec t& offsetBounds, 402 const SkIRec t& offsetBounds,
402 const SkMatr ix& matrix) const { 403 const SkMatr ix& matrix) const {
403 SkASSERT(source->isTextureBacked()); 404 SkASSERT(source->isTextureBacked());
404 405
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 protected: 474 protected:
474 SkDiffuseLightingImageFilter(sk_sp<SkImageFilterLight> light, SkScalar surfa ceScale, 475 SkDiffuseLightingImageFilter(sk_sp<SkImageFilterLight> light, SkScalar surfa ceScale,
475 SkScalar kd, 476 SkScalar kd,
476 sk_sp<SkImageFilter> input, const CropRect* cro pRect); 477 sk_sp<SkImageFilter> input, const CropRect* cro pRect);
477 void flatten(SkWriteBuffer& buffer) const override; 478 void flatten(SkWriteBuffer& buffer) const override;
478 479
479 sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&, 480 sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&,
480 SkIPoint* offset) const override; 481 SkIPoint* offset) const override;
481 482
482 #if SK_SUPPORT_GPU 483 #if SK_SUPPORT_GPU
483 GrFragmentProcessor* getFragmentProcessor(GrTexture*, const SkMatrix&, const SkIRect* bounds, 484 sk_sp<GrFragmentProcessor> makeFragmentProcessor(GrTexture*, const SkMatrix& ,
484 BoundaryMode) const override; 485 const SkIRect* bounds,
486 BoundaryMode) const overrid e;
485 #endif 487 #endif
486 488
487 private: 489 private:
488 friend class SkLightingImageFilter; 490 friend class SkLightingImageFilter;
489 SkScalar fKD; 491 SkScalar fKD;
490 492
491 typedef SkLightingImageFilterInternal INHERITED; 493 typedef SkLightingImageFilterInternal INHERITED;
492 }; 494 };
493 495
494 class SkSpecularLightingImageFilter : public SkLightingImageFilterInternal { 496 class SkSpecularLightingImageFilter : public SkLightingImageFilterInternal {
(...skipping 13 matching lines...) Expand all
508 SkSpecularLightingImageFilter(sk_sp<SkImageFilterLight> light, 510 SkSpecularLightingImageFilter(sk_sp<SkImageFilterLight> light,
509 SkScalar surfaceScale, SkScalar ks, 511 SkScalar surfaceScale, SkScalar ks,
510 SkScalar shininess, 512 SkScalar shininess,
511 sk_sp<SkImageFilter> input, const CropRect*); 513 sk_sp<SkImageFilter> input, const CropRect*);
512 void flatten(SkWriteBuffer& buffer) const override; 514 void flatten(SkWriteBuffer& buffer) const override;
513 515
514 sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&, 516 sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&,
515 SkIPoint* offset) const override; 517 SkIPoint* offset) const override;
516 518
517 #if SK_SUPPORT_GPU 519 #if SK_SUPPORT_GPU
518 GrFragmentProcessor* getFragmentProcessor(GrTexture*, const SkMatrix&, const SkIRect* bounds, 520 sk_sp<GrFragmentProcessor> makeFragmentProcessor(GrTexture*, const SkMatrix& ,
519 BoundaryMode) const override; 521 const SkIRect* bounds,
522 BoundaryMode) const overrid e;
520 #endif 523 #endif
521 524
522 private: 525 private:
523 SkScalar fKS; 526 SkScalar fKS;
524 SkScalar fShininess; 527 SkScalar fShininess;
525 friend class SkLightingImageFilter; 528 friend class SkLightingImageFilter;
526 typedef SkLightingImageFilterInternal INHERITED; 529 typedef SkLightingImageFilterInternal INHERITED;
527 }; 530 };
528 531
529 #if SK_SUPPORT_GPU 532 #if SK_SUPPORT_GPU
(...skipping 23 matching lines...) Expand all
553 SkScalar fSurfaceScale; 556 SkScalar fSurfaceScale;
554 SkMatrix fFilterMatrix; 557 SkMatrix fFilterMatrix;
555 BoundaryMode fBoundaryMode; 558 BoundaryMode fBoundaryMode;
556 GrTextureDomain fDomain; 559 GrTextureDomain fDomain;
557 560
558 typedef GrSingleTextureEffect INHERITED; 561 typedef GrSingleTextureEffect INHERITED;
559 }; 562 };
560 563
561 class GrDiffuseLightingEffect : public GrLightingEffect { 564 class GrDiffuseLightingEffect : public GrLightingEffect {
562 public: 565 public:
563 static GrFragmentProcessor* Create(GrTexture* texture, 566 static sk_sp<GrFragmentProcessor> Make(GrTexture* texture,
564 const SkImageFilterLight* light, 567 const SkImageFilterLight* light,
565 SkScalar surfaceScale, 568 SkScalar surfaceScale,
566 const SkMatrix& matrix, 569 const SkMatrix& matrix,
567 SkScalar kd, 570 SkScalar kd,
568 BoundaryMode boundaryMode, 571 BoundaryMode boundaryMode,
569 const SkIRect* srcBounds) { 572 const SkIRect* srcBounds) {
570 return new GrDiffuseLightingEffect(texture, light, surfaceScale, matrix, kd, boundaryMode, 573 return sk_sp<GrFragmentProcessor>(
571 srcBounds); 574 new GrDiffuseLightingEffect(texture, light, surfaceScale, matrix, kd , boundaryMode,
575 srcBounds));
572 } 576 }
573 577
574 const char* name() const override { return "DiffuseLighting"; } 578 const char* name() const override { return "DiffuseLighting"; }
575 579
576 SkScalar kd() const { return fKD; } 580 SkScalar kd() const { return fKD; }
577 581
578 private: 582 private:
579 GrGLSLFragmentProcessor* onCreateGLSLInstance() const override; 583 GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
580 584
581 void onGetGLSLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const override; 585 void onGetGLSLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const override;
582 586
583 bool onIsEqual(const GrFragmentProcessor&) const override; 587 bool onIsEqual(const GrFragmentProcessor&) const override;
584 588
585 GrDiffuseLightingEffect(GrTexture* texture, 589 GrDiffuseLightingEffect(GrTexture* texture,
586 const SkImageFilterLight* light, 590 const SkImageFilterLight* light,
587 SkScalar surfaceScale, 591 SkScalar surfaceScale,
588 const SkMatrix& matrix, 592 const SkMatrix& matrix,
589 SkScalar kd, 593 SkScalar kd,
590 BoundaryMode boundaryMode, 594 BoundaryMode boundaryMode,
591 const SkIRect* srcBounds); 595 const SkIRect* srcBounds);
592 596
593 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; 597 GR_DECLARE_FRAGMENT_PROCESSOR_TEST;
594 typedef GrLightingEffect INHERITED; 598 typedef GrLightingEffect INHERITED;
595 SkScalar fKD; 599 SkScalar fKD;
596 }; 600 };
597 601
598 class GrSpecularLightingEffect : public GrLightingEffect { 602 class GrSpecularLightingEffect : public GrLightingEffect {
599 public: 603 public:
600 static GrFragmentProcessor* Create(GrTexture* texture, 604 static sk_sp<GrFragmentProcessor> Make(GrTexture* texture,
601 const SkImageFilterLight* light, 605 const SkImageFilterLight* light,
602 SkScalar surfaceScale, 606 SkScalar surfaceScale,
603 const SkMatrix& matrix, 607 const SkMatrix& matrix,
604 SkScalar ks, 608 SkScalar ks,
605 SkScalar shininess, 609 SkScalar shininess,
606 BoundaryMode boundaryMode, 610 BoundaryMode boundaryMode,
607 const SkIRect* srcBounds) { 611 const SkIRect* srcBounds) {
608 return new GrSpecularLightingEffect(texture, light, surfaceScale, matrix , ks, shininess, 612 return sk_sp<GrFragmentProcessor>(
609 boundaryMode, srcBounds); 613 new GrSpecularLightingEffect(texture, light, surfaceScale, matrix, k s, shininess,
614 boundaryMode, srcBounds));
610 } 615 }
611 616
612 const char* name() const override { return "SpecularLighting"; } 617 const char* name() const override { return "SpecularLighting"; }
613 618
614 GrGLSLFragmentProcessor* onCreateGLSLInstance() const override; 619 GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
615 620
616 SkScalar ks() const { return fKS; } 621 SkScalar ks() const { return fKS; }
617 SkScalar shininess() const { return fShininess; } 622 SkScalar shininess() const { return fShininess; }
618 623
619 private: 624 private:
(...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after
1323 1328
1324 #ifndef SK_IGNORE_TO_STRING 1329 #ifndef SK_IGNORE_TO_STRING
1325 void SkDiffuseLightingImageFilter::toString(SkString* str) const { 1330 void SkDiffuseLightingImageFilter::toString(SkString* str) const {
1326 str->appendf("SkDiffuseLightingImageFilter: ("); 1331 str->appendf("SkDiffuseLightingImageFilter: (");
1327 str->appendf("kD: %f\n", fKD); 1332 str->appendf("kD: %f\n", fKD);
1328 str->append(")"); 1333 str->append(")");
1329 } 1334 }
1330 #endif 1335 #endif
1331 1336
1332 #if SK_SUPPORT_GPU 1337 #if SK_SUPPORT_GPU
1333 GrFragmentProcessor* SkDiffuseLightingImageFilter::getFragmentProcessor( 1338 sk_sp<GrFragmentProcessor> SkDiffuseLightingImageFilter::makeFragmentProcessor(
1334 GrTexture* texture, 1339 GrTexture* texture,
1335 const SkMatrix& matrix, 1340 const SkMatrix& matrix,
1336 const SkIRect* srcBounds, 1341 const SkIRect* srcBounds,
1337 BoundaryMode boundaryMode) co nst { 1342 BoundaryMode boundaryMode) co nst {
1338 SkScalar scale = SkScalarMul(this->surfaceScale(), SkIntToScalar(255)); 1343 SkScalar scale = SkScalarMul(this->surfaceScale(), SkIntToScalar(255));
1339 return GrDiffuseLightingEffect::Create(texture, this->light(), scale, matrix , this->kd(), 1344 return GrDiffuseLightingEffect::Make(texture, this->light(), scale, matrix, this->kd(),
1340 boundaryMode, srcBounds); 1345 boundaryMode, srcBounds);
1341 } 1346 }
1342 #endif 1347 #endif
1343 1348
1344 /////////////////////////////////////////////////////////////////////////////// 1349 ///////////////////////////////////////////////////////////////////////////////
1345 1350
1346 sk_sp<SkImageFilter> SkSpecularLightingImageFilter::Make(sk_sp<SkImageFilterLigh t> light, 1351 sk_sp<SkImageFilter> SkSpecularLightingImageFilter::Make(sk_sp<SkImageFilterLigh t> light,
1347 SkScalar surfaceScale, 1352 SkScalar surfaceScale,
1348 SkScalar ks, 1353 SkScalar ks,
1349 SkScalar shininess, 1354 SkScalar shininess,
1350 sk_sp<SkImageFilter> in put, 1355 sk_sp<SkImageFilter> in put,
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
1488 1493
1489 #ifndef SK_IGNORE_TO_STRING 1494 #ifndef SK_IGNORE_TO_STRING
1490 void SkSpecularLightingImageFilter::toString(SkString* str) const { 1495 void SkSpecularLightingImageFilter::toString(SkString* str) const {
1491 str->appendf("SkSpecularLightingImageFilter: ("); 1496 str->appendf("SkSpecularLightingImageFilter: (");
1492 str->appendf("kS: %f shininess: %f", fKS, fShininess); 1497 str->appendf("kS: %f shininess: %f", fKS, fShininess);
1493 str->append(")"); 1498 str->append(")");
1494 } 1499 }
1495 #endif 1500 #endif
1496 1501
1497 #if SK_SUPPORT_GPU 1502 #if SK_SUPPORT_GPU
1498 GrFragmentProcessor* SkSpecularLightingImageFilter::getFragmentProcessor( 1503 sk_sp<GrFragmentProcessor> SkSpecularLightingImageFilter::makeFragmentProcessor(
1499 GrTexture* texture, 1504 GrTexture* texture,
1500 const SkMatrix& matrix, 1505 const SkMatrix& matrix,
1501 const SkIRect* srcBounds, 1506 const SkIRect* srcBounds,
1502 BoundaryMode boundaryMode) c onst { 1507 BoundaryMode boundaryMode) c onst {
1503 SkScalar scale = SkScalarMul(this->surfaceScale(), SkIntToScalar(255)); 1508 SkScalar scale = SkScalarMul(this->surfaceScale(), SkIntToScalar(255));
1504 return GrSpecularLightingEffect::Create(texture, this->light(), scale, matri x, this->ks(), 1509 return GrSpecularLightingEffect::Make(texture, this->light(), scale, matrix, this->ks(),
1505 this->shininess(), boundaryMode, src Bounds); 1510 this->shininess(), boundaryMode, srcBo unds);
1506 } 1511 }
1507 #endif 1512 #endif
1508 1513
1509 /////////////////////////////////////////////////////////////////////////////// 1514 ///////////////////////////////////////////////////////////////////////////////
1510 1515
1511 #if SK_SUPPORT_GPU 1516 #if SK_SUPPORT_GPU
1512 1517
1513 namespace { 1518 namespace {
1514 SkPoint3 random_point3(SkRandom* random) { 1519 SkPoint3 random_point3(SkRandom* random) {
1515 return SkPoint3::Make(SkScalarToFloat(random->nextSScalar1()), 1520 return SkPoint3::Make(SkScalarToFloat(random->nextSScalar1()),
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
1739 GrProcessorKeyBuilder* b) co nst { 1744 GrProcessorKeyBuilder* b) co nst {
1740 GrGLDiffuseLightingEffect::GenKey(*this, caps, b); 1745 GrGLDiffuseLightingEffect::GenKey(*this, caps, b);
1741 } 1746 }
1742 1747
1743 GrGLSLFragmentProcessor* GrDiffuseLightingEffect::onCreateGLSLInstance() const { 1748 GrGLSLFragmentProcessor* GrDiffuseLightingEffect::onCreateGLSLInstance() const {
1744 return new GrGLDiffuseLightingEffect; 1749 return new GrGLDiffuseLightingEffect;
1745 } 1750 }
1746 1751
1747 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrDiffuseLightingEffect); 1752 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrDiffuseLightingEffect);
1748 1753
1749 const GrFragmentProcessor* GrDiffuseLightingEffect::TestCreate(GrProcessorTestDa ta* d) { 1754 sk_sp<GrFragmentProcessor> GrDiffuseLightingEffect::TestCreate(GrProcessorTestDa ta* d) {
1750 int texIdx = d->fRandom->nextBool() ? GrProcessorUnitTest::kSkiaPMTextureIdx : 1755 int texIdx = d->fRandom->nextBool() ? GrProcessorUnitTest::kSkiaPMTextureIdx :
1751 GrProcessorUnitTest::kAlphaTextureIdx; 1756 GrProcessorUnitTest::kAlphaTextureIdx;
1752 GrTexture* tex = d->fTextures[texIdx]; 1757 GrTexture* tex = d->fTextures[texIdx];
1753 SkScalar surfaceScale = d->fRandom->nextSScalar1(); 1758 SkScalar surfaceScale = d->fRandom->nextSScalar1();
1754 SkScalar kd = d->fRandom->nextUScalar1(); 1759 SkScalar kd = d->fRandom->nextUScalar1();
1755 SkAutoTUnref<SkImageFilterLight> light(create_random_light(d->fRandom)); 1760 SkAutoTUnref<SkImageFilterLight> light(create_random_light(d->fRandom));
1756 SkMatrix matrix; 1761 SkMatrix matrix;
1757 for (int i = 0; i < 9; i++) { 1762 for (int i = 0; i < 9; i++) {
1758 matrix[i] = d->fRandom->nextUScalar1(); 1763 matrix[i] = d->fRandom->nextUScalar1();
1759 } 1764 }
1760 SkIRect srcBounds = SkIRect::MakeXYWH(d->fRandom->nextRangeU(0, tex->width() ), 1765 SkIRect srcBounds = SkIRect::MakeXYWH(d->fRandom->nextRangeU(0, tex->width() ),
1761 d->fRandom->nextRangeU(0, tex->height( )), 1766 d->fRandom->nextRangeU(0, tex->height( )),
1762 d->fRandom->nextRangeU(0, tex->width() ), 1767 d->fRandom->nextRangeU(0, tex->width() ),
1763 d->fRandom->nextRangeU(0, tex->height( ))); 1768 d->fRandom->nextRangeU(0, tex->height( )));
1764 BoundaryMode mode = static_cast<BoundaryMode>(d->fRandom->nextU() % kBoundar yModeCount); 1769 BoundaryMode mode = static_cast<BoundaryMode>(d->fRandom->nextU() % kBoundar yModeCount);
1765 return GrDiffuseLightingEffect::Create(tex, light, surfaceScale, matrix, kd, mode, &srcBounds); 1770 return GrDiffuseLightingEffect::Make(tex, light, surfaceScale, matrix, kd, m ode, &srcBounds);
1766 } 1771 }
1767 1772
1768 1773
1769 /////////////////////////////////////////////////////////////////////////////// 1774 ///////////////////////////////////////////////////////////////////////////////
1770 1775
1771 void GrGLLightingEffect::emitCode(EmitArgs& args) { 1776 void GrGLLightingEffect::emitCode(EmitArgs& args) {
1772 const GrLightingEffect& le = args.fFp.cast<GrLightingEffect>(); 1777 const GrLightingEffect& le = args.fFp.cast<GrLightingEffect>();
1773 if (!fLight) { 1778 if (!fLight) {
1774 fLight = le.light()->createGLLight(); 1779 fLight = le.light()->createGLLight();
1775 } 1780 }
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
1956 GrProcessorKeyBuilder* b) c onst { 1961 GrProcessorKeyBuilder* b) c onst {
1957 GrGLSpecularLightingEffect::GenKey(*this, caps, b); 1962 GrGLSpecularLightingEffect::GenKey(*this, caps, b);
1958 } 1963 }
1959 1964
1960 GrGLSLFragmentProcessor* GrSpecularLightingEffect::onCreateGLSLInstance() const { 1965 GrGLSLFragmentProcessor* GrSpecularLightingEffect::onCreateGLSLInstance() const {
1961 return new GrGLSpecularLightingEffect; 1966 return new GrGLSpecularLightingEffect;
1962 } 1967 }
1963 1968
1964 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrSpecularLightingEffect); 1969 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrSpecularLightingEffect);
1965 1970
1966 const GrFragmentProcessor* GrSpecularLightingEffect::TestCreate(GrProcessorTestD ata* d) { 1971 sk_sp<GrFragmentProcessor> GrSpecularLightingEffect::TestCreate(GrProcessorTestD ata* d) {
1967 int texIdx = d->fRandom->nextBool() ? GrProcessorUnitTest::kSkiaPMTextureIdx : 1972 int texIdx = d->fRandom->nextBool() ? GrProcessorUnitTest::kSkiaPMTextureIdx :
1968 GrProcessorUnitTest::kAlphaTextureIdx; 1973 GrProcessorUnitTest::kAlphaTextureIdx;
1969 GrTexture* tex = d->fTextures[texIdx]; 1974 GrTexture* tex = d->fTextures[texIdx];
1970 SkScalar surfaceScale = d->fRandom->nextSScalar1(); 1975 SkScalar surfaceScale = d->fRandom->nextSScalar1();
1971 SkScalar ks = d->fRandom->nextUScalar1(); 1976 SkScalar ks = d->fRandom->nextUScalar1();
1972 SkScalar shininess = d->fRandom->nextUScalar1(); 1977 SkScalar shininess = d->fRandom->nextUScalar1();
1973 SkAutoTUnref<SkImageFilterLight> light(create_random_light(d->fRandom)); 1978 SkAutoTUnref<SkImageFilterLight> light(create_random_light(d->fRandom));
1974 SkMatrix matrix; 1979 SkMatrix matrix;
1975 for (int i = 0; i < 9; i++) { 1980 for (int i = 0; i < 9; i++) {
1976 matrix[i] = d->fRandom->nextUScalar1(); 1981 matrix[i] = d->fRandom->nextUScalar1();
1977 } 1982 }
1978 BoundaryMode mode = static_cast<BoundaryMode>(d->fRandom->nextU() % kBoundar yModeCount); 1983 BoundaryMode mode = static_cast<BoundaryMode>(d->fRandom->nextU() % kBoundar yModeCount);
1979 SkIRect srcBounds = SkIRect::MakeXYWH(d->fRandom->nextRangeU(0, tex->width() ), 1984 SkIRect srcBounds = SkIRect::MakeXYWH(d->fRandom->nextRangeU(0, tex->width() ),
1980 d->fRandom->nextRangeU(0, tex->height( )), 1985 d->fRandom->nextRangeU(0, tex->height( )),
1981 d->fRandom->nextRangeU(0, tex->width() ), 1986 d->fRandom->nextRangeU(0, tex->width() ),
1982 d->fRandom->nextRangeU(0, tex->height( ))); 1987 d->fRandom->nextRangeU(0, tex->height( )));
1983 return GrSpecularLightingEffect::Create(d->fTextures[GrProcessorUnitTest::kA lphaTextureIdx], 1988 return GrSpecularLightingEffect::Make(d->fTextures[GrProcessorUnitTest::kAlp haTextureIdx],
1984 light, surfaceScale, matrix, ks, shi niness, mode, 1989 light, surfaceScale, matrix, ks, shini ness, mode,
1985 &srcBounds); 1990 &srcBounds);
1986 } 1991 }
1987 1992
1988 /////////////////////////////////////////////////////////////////////////////// 1993 ///////////////////////////////////////////////////////////////////////////////
1989 1994
1990 void GrGLSpecularLightingEffect::emitLightFunc(GrGLSLUniformHandler* uniformHand ler, 1995 void GrGLSpecularLightingEffect::emitLightFunc(GrGLSLUniformHandler* uniformHand ler,
1991 GrGLSLFPFragmentBuilder* fragBuil der, 1996 GrGLSLFPFragmentBuilder* fragBuil der,
1992 SkString* funcName) { 1997 SkString* funcName) {
1993 const char* ks; 1998 const char* ks;
1994 const char* shininess; 1999 const char* shininess;
1995 2000
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
2163 2168
2164 fragBuilder->codeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight); 2169 fragBuilder->codeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight);
2165 } 2170 }
2166 2171
2167 #endif 2172 #endif
2168 2173
2169 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter) 2174 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter)
2170 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter) 2175 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter)
2171 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter) 2176 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter)
2172 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 2177 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
OLDNEW
« no previous file with comments | « src/effects/SkGpuBlurUtils.cpp ('k') | src/effects/SkLumaColorFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698