OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |