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

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

Issue 1667953005: Last bit of GrGLSLFragmentProcessor-derived class cleanup (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: more clean up 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 | « experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp ('k') | no next file » | 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 1499 matching lines...) Expand 10 before | Expand all | Expand 10 after
1510 SkASSERT(false); 1510 SkASSERT(false);
1511 break; 1511 break;
1512 } 1512 }
1513 return result; 1513 return result;
1514 } 1514 }
1515 1515
1516 } 1516 }
1517 1517
1518 class GrGLLightingEffect : public GrGLSLFragmentProcessor { 1518 class GrGLLightingEffect : public GrGLSLFragmentProcessor {
1519 public: 1519 public:
1520 GrGLLightingEffect(const GrProcessor&); 1520 GrGLLightingEffect() : fLight(nullptr) { }
1521 virtual ~GrGLLightingEffect(); 1521 virtual ~GrGLLightingEffect() { delete fLight; }
1522 1522
1523 void emitCode(EmitArgs&) override; 1523 void emitCode(EmitArgs&) override;
1524 1524
1525 static inline void GenKey(const GrProcessor&, const GrGLSLCaps&, GrProcessor KeyBuilder* b); 1525 static inline void GenKey(const GrProcessor&, const GrGLSLCaps&, GrProcessor KeyBuilder* b);
1526 1526
1527 protected: 1527 protected:
1528 /** 1528 /**
1529 * Subclasses of GrGLLightingEffect must call INHERITED::onSetData(); 1529 * Subclasses of GrGLLightingEffect must call INHERITED::onSetData();
1530 */ 1530 */
1531 void onSetData(const GrGLSLProgramDataManager&, const GrProcessor&) override ; 1531 void onSetData(const GrGLSLProgramDataManager&, const GrProcessor&) override ;
1532 1532
1533 virtual void emitLightFunc(GrGLSLUniformHandler*, 1533 virtual void emitLightFunc(GrGLSLUniformHandler*,
1534 GrGLSLFragmentBuilder*, 1534 GrGLSLFragmentBuilder*,
1535 SkString* funcName) = 0; 1535 SkString* funcName) = 0;
1536 1536
1537 private: 1537 private:
1538 typedef GrGLSLFragmentProcessor INHERITED; 1538 typedef GrGLSLFragmentProcessor INHERITED;
1539 1539
1540 UniformHandle fImageIncrementUni; 1540 UniformHandle fImageIncrementUni;
1541 UniformHandle fSurfaceScaleUni; 1541 UniformHandle fSurfaceScaleUni;
1542 GrGLLight* fLight; 1542 GrGLLight* fLight;
1543 BoundaryMode fBoundaryMode;
1544 }; 1543 };
1545 1544
1546 /////////////////////////////////////////////////////////////////////////////// 1545 ///////////////////////////////////////////////////////////////////////////////
1547 1546
1548 class GrGLDiffuseLightingEffect : public GrGLLightingEffect { 1547 class GrGLDiffuseLightingEffect : public GrGLLightingEffect {
1549 public: 1548 public:
1550 GrGLDiffuseLightingEffect(const GrProcessor&);
1551 void emitLightFunc(GrGLSLUniformHandler*, GrGLSLFragmentBuilder*, SkString* funcName) override; 1549 void emitLightFunc(GrGLSLUniformHandler*, GrGLSLFragmentBuilder*, SkString* funcName) override;
1552 1550
1553 protected: 1551 protected:
1554 void onSetData(const GrGLSLProgramDataManager&, const GrProcessor&) override ; 1552 void onSetData(const GrGLSLProgramDataManager&, const GrProcessor&) override ;
1555 1553
1556 private: 1554 private:
1557 typedef GrGLLightingEffect INHERITED; 1555 typedef GrGLLightingEffect INHERITED;
1558 1556
1559 UniformHandle fKDUni; 1557 UniformHandle fKDUni;
1560 }; 1558 };
1561 1559
1562 /////////////////////////////////////////////////////////////////////////////// 1560 ///////////////////////////////////////////////////////////////////////////////
1563 1561
1564 class GrGLSpecularLightingEffect : public GrGLLightingEffect { 1562 class GrGLSpecularLightingEffect : public GrGLLightingEffect {
1565 public: 1563 public:
1566 GrGLSpecularLightingEffect(const GrProcessor&);
1567 void emitLightFunc(GrGLSLUniformHandler*, GrGLSLFragmentBuilder*, SkString* funcName) override; 1564 void emitLightFunc(GrGLSLUniformHandler*, GrGLSLFragmentBuilder*, SkString* funcName) override;
1568 1565
1569 protected: 1566 protected:
1570 void onSetData(const GrGLSLProgramDataManager&, const GrProcessor&) override ; 1567 void onSetData(const GrGLSLProgramDataManager&, const GrProcessor&) override ;
1571 1568
1572 private: 1569 private:
1573 typedef GrGLLightingEffect INHERITED; 1570 typedef GrGLLightingEffect INHERITED;
1574 1571
1575 UniformHandle fKSUni; 1572 UniformHandle fKSUni;
1576 UniformHandle fShininessUni; 1573 UniformHandle fShininessUni;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1612 SkScalar surfaceScale, 1609 SkScalar surfaceScale,
1613 const SkMatrix& matrix, 1610 const SkMatrix& matrix,
1614 SkScalar kd, 1611 SkScalar kd,
1615 BoundaryMode boundaryMode) 1612 BoundaryMode boundaryMode)
1616 : INHERITED(texture, light, surfaceScale, matrix, boundaryMode), fKD(kd) { 1613 : INHERITED(texture, light, surfaceScale, matrix, boundaryMode), fKD(kd) {
1617 this->initClassID<GrDiffuseLightingEffect>(); 1614 this->initClassID<GrDiffuseLightingEffect>();
1618 } 1615 }
1619 1616
1620 bool GrDiffuseLightingEffect::onIsEqual(const GrFragmentProcessor& sBase) const { 1617 bool GrDiffuseLightingEffect::onIsEqual(const GrFragmentProcessor& sBase) const {
1621 const GrDiffuseLightingEffect& s = sBase.cast<GrDiffuseLightingEffect>(); 1618 const GrDiffuseLightingEffect& s = sBase.cast<GrDiffuseLightingEffect>();
1622 return INHERITED::onIsEqual(sBase) && 1619 return INHERITED::onIsEqual(sBase) && this->kd() == s.kd();
1623 this->kd() == s.kd();
1624 } 1620 }
1625 1621
1626 void GrDiffuseLightingEffect::onGetGLSLProcessorKey(const GrGLSLCaps& caps, 1622 void GrDiffuseLightingEffect::onGetGLSLProcessorKey(const GrGLSLCaps& caps,
1627 GrProcessorKeyBuilder* b) co nst { 1623 GrProcessorKeyBuilder* b) co nst {
1628 GrGLDiffuseLightingEffect::GenKey(*this, caps, b); 1624 GrGLDiffuseLightingEffect::GenKey(*this, caps, b);
1629 } 1625 }
1630 1626
1631 GrGLSLFragmentProcessor* GrDiffuseLightingEffect::onCreateGLSLInstance() const { 1627 GrGLSLFragmentProcessor* GrDiffuseLightingEffect::onCreateGLSLInstance() const {
1632 return new GrGLDiffuseLightingEffect(*this); 1628 return new GrGLDiffuseLightingEffect;
1633 } 1629 }
1634 1630
1635 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrDiffuseLightingEffect); 1631 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrDiffuseLightingEffect);
1636 1632
1637 const GrFragmentProcessor* GrDiffuseLightingEffect::TestCreate(GrProcessorTestDa ta* d) { 1633 const GrFragmentProcessor* GrDiffuseLightingEffect::TestCreate(GrProcessorTestDa ta* d) {
1638 SkScalar surfaceScale = d->fRandom->nextSScalar1(); 1634 SkScalar surfaceScale = d->fRandom->nextSScalar1();
1639 SkScalar kd = d->fRandom->nextUScalar1(); 1635 SkScalar kd = d->fRandom->nextUScalar1();
1640 SkAutoTUnref<SkImageFilterLight> light(create_random_light(d->fRandom)); 1636 SkAutoTUnref<SkImageFilterLight> light(create_random_light(d->fRandom));
1641 SkMatrix matrix; 1637 SkMatrix matrix;
1642 for (int i = 0; i < 9; i++) { 1638 for (int i = 0; i < 9; i++) {
1643 matrix[i] = d->fRandom->nextUScalar1(); 1639 matrix[i] = d->fRandom->nextUScalar1();
1644 } 1640 }
1645 BoundaryMode mode = static_cast<BoundaryMode>(d->fRandom->nextU() % kBoundar yModeCount); 1641 BoundaryMode mode = static_cast<BoundaryMode>(d->fRandom->nextU() % kBoundar yModeCount);
1646 return GrDiffuseLightingEffect::Create(d->fTextures[GrProcessorUnitTest::kAl phaTextureIdx], 1642 return GrDiffuseLightingEffect::Create(d->fTextures[GrProcessorUnitTest::kAl phaTextureIdx],
1647 light, surfaceScale, matrix, kd, mode ); 1643 light, surfaceScale, matrix, kd, mode );
1648 } 1644 }
1649 1645
1650 1646
1651 /////////////////////////////////////////////////////////////////////////////// 1647 ///////////////////////////////////////////////////////////////////////////////
1652 1648
1653 GrGLLightingEffect::GrGLLightingEffect(const GrProcessor& fp) { 1649 void GrGLLightingEffect::emitCode(EmitArgs& args) {
1654 const GrLightingEffect& m = fp.cast<GrLightingEffect>(); 1650 const GrLightingEffect& le = args.fFp.cast<GrLightingEffect>();
1655 fLight = m.light()->createGLLight(); 1651 if (!fLight) {
1656 fBoundaryMode = m.boundaryMode(); 1652 fLight = le.light()->createGLLight();
1657 } 1653 }
1658 1654
1659 GrGLLightingEffect::~GrGLLightingEffect() {
1660 delete fLight;
1661 }
1662
1663 void GrGLLightingEffect::emitCode(EmitArgs& args) {
1664 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; 1655 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler;
1665 fImageIncrementUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragm ent_Visibility, 1656 fImageIncrementUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragm ent_Visibility,
1666 kVec2f_GrSLType, kDefault_Gr SLPrecision, 1657 kVec2f_GrSLType, kDefault_Gr SLPrecision,
1667 "ImageIncrement"); 1658 "ImageIncrement");
1668 fSurfaceScaleUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragmen t_Visibility, 1659 fSurfaceScaleUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragmen t_Visibility,
1669 kFloat_GrSLType, kDefault_GrSL Precision, 1660 kFloat_GrSLType, kDefault_GrSL Precision,
1670 "SurfaceScale"); 1661 "SurfaceScale");
1671 fLight->emitLightColorUniform(uniformHandler); 1662 fLight->emitLightColorUniform(uniformHandler);
1672 GrGLSLFragmentBuilder* fragBuilder = args.fFragBuilder; 1663 GrGLSLFragmentBuilder* fragBuilder = args.fFragBuilder;
1673 SkString lightFunc; 1664 SkString lightFunc;
(...skipping 26 matching lines...) Expand all
1700 "pointToNormal", 1691 "pointToNormal",
1701 SK_ARRAY_COUNT(gPointToNormalArgs), 1692 SK_ARRAY_COUNT(gPointToNormalArgs),
1702 gPointToNormalArgs, 1693 gPointToNormalArgs,
1703 "\treturn normalize(vec3(-x * scale, -y * scale, 1 ));\n", 1694 "\treturn normalize(vec3(-x * scale, -y * scale, 1 ));\n",
1704 &pointToNormalName); 1695 &pointToNormalName);
1705 1696
1706 static const GrGLSLShaderVar gInteriorNormalArgs[] = { 1697 static const GrGLSLShaderVar gInteriorNormalArgs[] = {
1707 GrGLSLShaderVar("m", kFloat_GrSLType, 9), 1698 GrGLSLShaderVar("m", kFloat_GrSLType, 9),
1708 GrGLSLShaderVar("surfaceScale", kFloat_GrSLType), 1699 GrGLSLShaderVar("surfaceScale", kFloat_GrSLType),
1709 }; 1700 };
1710 SkString normalBody = emitNormalFunc(fBoundaryMode, 1701 SkString normalBody = emitNormalFunc(le.boundaryMode(),
1711 pointToNormalName.c_str(), 1702 pointToNormalName.c_str(),
1712 sobelFuncName.c_str()); 1703 sobelFuncName.c_str());
1713 SkString normalName; 1704 SkString normalName;
1714 fragBuilder->emitFunction(kVec3f_GrSLType, 1705 fragBuilder->emitFunction(kVec3f_GrSLType,
1715 "normal", 1706 "normal",
1716 SK_ARRAY_COUNT(gInteriorNormalArgs), 1707 SK_ARRAY_COUNT(gInteriorNormalArgs),
1717 gInteriorNormalArgs, 1708 gInteriorNormalArgs,
1718 normalBody.c_str(), 1709 normalBody.c_str(),
1719 &normalName); 1710 &normalName);
1720 1711
(...skipping 29 matching lines...) Expand all
1750 1741
1751 void GrGLLightingEffect::GenKey(const GrProcessor& proc, 1742 void GrGLLightingEffect::GenKey(const GrProcessor& proc,
1752 const GrGLSLCaps& caps, GrProcessorKeyBuilder* b ) { 1743 const GrGLSLCaps& caps, GrProcessorKeyBuilder* b ) {
1753 const GrLightingEffect& lighting = proc.cast<GrLightingEffect>(); 1744 const GrLightingEffect& lighting = proc.cast<GrLightingEffect>();
1754 b->add32(lighting.boundaryMode() << 2 | lighting.light()->type()); 1745 b->add32(lighting.boundaryMode() << 2 | lighting.light()->type());
1755 } 1746 }
1756 1747
1757 void GrGLLightingEffect::onSetData(const GrGLSLProgramDataManager& pdman, 1748 void GrGLLightingEffect::onSetData(const GrGLSLProgramDataManager& pdman,
1758 const GrProcessor& proc) { 1749 const GrProcessor& proc) {
1759 const GrLightingEffect& lighting = proc.cast<GrLightingEffect>(); 1750 const GrLightingEffect& lighting = proc.cast<GrLightingEffect>();
1751 if (!fLight) {
1752 fLight = lighting.light()->createGLLight();
1753 }
1754
1760 GrTexture* texture = lighting.texture(0); 1755 GrTexture* texture = lighting.texture(0);
1761 float ySign = texture->origin() == kTopLeft_GrSurfaceOrigin ? -1.0f : 1.0f; 1756 float ySign = texture->origin() == kTopLeft_GrSurfaceOrigin ? -1.0f : 1.0f;
1762 pdman.set2f(fImageIncrementUni, 1.0f / texture->width(), ySign / texture->he ight()); 1757 pdman.set2f(fImageIncrementUni, 1.0f / texture->width(), ySign / texture->he ight());
1763 pdman.set1f(fSurfaceScaleUni, lighting.surfaceScale()); 1758 pdman.set1f(fSurfaceScaleUni, lighting.surfaceScale());
1764 SkAutoTUnref<SkImageFilterLight> transformedLight( 1759 SkAutoTUnref<SkImageFilterLight> transformedLight(
1765 lighting.light()->transform(lighting .filterMatrix())); 1760 lighting.light()->transform(lighting .filterMatrix()));
1766 fLight->setData(pdman, transformedLight); 1761 fLight->setData(pdman, transformedLight);
1767 } 1762 }
1768 1763
1769 /////////////////////////////////////////////////////////////////////////////// 1764 ///////////////////////////////////////////////////////////////////////////////
1770 1765
1771 /////////////////////////////////////////////////////////////////////////////// 1766 ///////////////////////////////////////////////////////////////////////////////
1772 1767
1773 GrGLDiffuseLightingEffect::GrGLDiffuseLightingEffect(const GrProcessor& proc)
1774 : INHERITED(proc) {
1775 }
1776
1777 void GrGLDiffuseLightingEffect::emitLightFunc(GrGLSLUniformHandler* uniformHandl er, 1768 void GrGLDiffuseLightingEffect::emitLightFunc(GrGLSLUniformHandler* uniformHandl er,
1778 GrGLSLFragmentBuilder* fragBuilder , 1769 GrGLSLFragmentBuilder* fragBuilder ,
1779 SkString* funcName) { 1770 SkString* funcName) {
1780 const char* kd; 1771 const char* kd;
1781 fKDUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visibili ty, 1772 fKDUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visibili ty,
1782 kFloat_GrSLType, kDefault_GrSLPrecision, 1773 kFloat_GrSLType, kDefault_GrSLPrecision,
1783 "KD", &kd); 1774 "KD", &kd);
1784 1775
1785 static const GrGLSLShaderVar gLightArgs[] = { 1776 static const GrGLSLShaderVar gLightArgs[] = {
1786 GrGLSLShaderVar("normal", kVec3f_GrSLType), 1777 GrGLSLShaderVar("normal", kVec3f_GrSLType),
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1826 this->ks() == s.ks() && 1817 this->ks() == s.ks() &&
1827 this->shininess() == s.shininess(); 1818 this->shininess() == s.shininess();
1828 } 1819 }
1829 1820
1830 void GrSpecularLightingEffect::onGetGLSLProcessorKey(const GrGLSLCaps& caps, 1821 void GrSpecularLightingEffect::onGetGLSLProcessorKey(const GrGLSLCaps& caps,
1831 GrProcessorKeyBuilder* b) c onst { 1822 GrProcessorKeyBuilder* b) c onst {
1832 GrGLSpecularLightingEffect::GenKey(*this, caps, b); 1823 GrGLSpecularLightingEffect::GenKey(*this, caps, b);
1833 } 1824 }
1834 1825
1835 GrGLSLFragmentProcessor* GrSpecularLightingEffect::onCreateGLSLInstance() const { 1826 GrGLSLFragmentProcessor* GrSpecularLightingEffect::onCreateGLSLInstance() const {
1836 return new GrGLSpecularLightingEffect(*this); 1827 return new GrGLSpecularLightingEffect;
1837 } 1828 }
1838 1829
1839 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrSpecularLightingEffect); 1830 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrSpecularLightingEffect);
1840 1831
1841 const GrFragmentProcessor* GrSpecularLightingEffect::TestCreate(GrProcessorTestD ata* d) { 1832 const GrFragmentProcessor* GrSpecularLightingEffect::TestCreate(GrProcessorTestD ata* d) {
1842 SkScalar surfaceScale = d->fRandom->nextSScalar1(); 1833 SkScalar surfaceScale = d->fRandom->nextSScalar1();
1843 SkScalar ks = d->fRandom->nextUScalar1(); 1834 SkScalar ks = d->fRandom->nextUScalar1();
1844 SkScalar shininess = d->fRandom->nextUScalar1(); 1835 SkScalar shininess = d->fRandom->nextUScalar1();
1845 SkAutoTUnref<SkImageFilterLight> light(create_random_light(d->fRandom)); 1836 SkAutoTUnref<SkImageFilterLight> light(create_random_light(d->fRandom));
1846 SkMatrix matrix; 1837 SkMatrix matrix;
1847 for (int i = 0; i < 9; i++) { 1838 for (int i = 0; i < 9; i++) {
1848 matrix[i] = d->fRandom->nextUScalar1(); 1839 matrix[i] = d->fRandom->nextUScalar1();
1849 } 1840 }
1850 BoundaryMode mode = static_cast<BoundaryMode>(d->fRandom->nextU() % kBoundar yModeCount); 1841 BoundaryMode mode = static_cast<BoundaryMode>(d->fRandom->nextU() % kBoundar yModeCount);
1851 return GrSpecularLightingEffect::Create(d->fTextures[GrProcessorUnitTest::kA lphaTextureIdx], 1842 return GrSpecularLightingEffect::Create(d->fTextures[GrProcessorUnitTest::kA lphaTextureIdx],
1852 light, surfaceScale, matrix, ks, shi niness, mode); 1843 light, surfaceScale, matrix, ks, shi niness, mode);
1853 } 1844 }
1854 1845
1855 /////////////////////////////////////////////////////////////////////////////// 1846 ///////////////////////////////////////////////////////////////////////////////
1856 1847
1857 GrGLSpecularLightingEffect::GrGLSpecularLightingEffect(const GrProcessor& proc)
1858 : INHERITED(proc) {
1859 }
1860
1861 void GrGLSpecularLightingEffect::emitLightFunc(GrGLSLUniformHandler* uniformHand ler, 1848 void GrGLSpecularLightingEffect::emitLightFunc(GrGLSLUniformHandler* uniformHand ler,
1862 GrGLSLFragmentBuilder* fragBuilde r, 1849 GrGLSLFragmentBuilder* fragBuilde r,
1863 SkString* funcName) { 1850 SkString* funcName) {
1864 const char* ks; 1851 const char* ks;
1865 const char* shininess; 1852 const char* shininess;
1866 1853
1867 fKSUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visibili ty, 1854 fKSUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visibili ty,
1868 kFloat_GrSLType, kDefault_GrSLPrecision, "KS", &ks); 1855 kFloat_GrSLType, kDefault_GrSLPrecision, "KS", &ks);
1869 fShininessUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_V isibility, 1856 fShininessUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_V isibility,
1870 kFloat_GrSLType, 1857 kFloat_GrSLType,
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
2034 2021
2035 fragBuilder->codeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight); 2022 fragBuilder->codeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight);
2036 } 2023 }
2037 2024
2038 #endif 2025 #endif
2039 2026
2040 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter) 2027 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter)
2041 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter) 2028 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter)
2042 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter) 2029 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter)
2043 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 2030 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
OLDNEW
« no previous file with comments | « experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698