Index: src/core/SkShadowShader.cpp |
diff --git a/src/core/SkShadowShader.cpp b/src/core/SkShadowShader.cpp |
index c5a99e9e91511f2e8afff585c40c0e3c606b272a..5fc992acc14dd790ab86e43e6a761ecc7b7db8bc 100644 |
--- a/src/core/SkShadowShader.cpp |
+++ b/src/core/SkShadowShader.cpp |
@@ -14,7 +14,6 @@ |
//////////////////////////////////////////////////////////////////////////// |
#ifdef SK_EXPERIMENTAL_SHADOWING |
-#define SK_MAX_NON_AMBIENT_LIGHTS 4 |
/** \class SkShadowShaderImpl |
This subclass of shader applies shadowing |
@@ -116,12 +115,12 @@ public: |
for (int i = 0; i < lights->numLights(); ++i) { |
if (SkLights::Light::kAmbient_LightType == lights->light(i).type()) { |
fAmbientColor += lights->light(i).color(); |
- } else if (fNumDirLights < SK_MAX_NON_AMBIENT_LIGHTS){ |
+ } else if (fNumDirLights < SkShadowShader::kMaxNonAmbientLights) { |
fLightColor[fNumDirLights] = lights->light(i).color(); |
fLightDir[fNumDirLights] = lights->light(i).dir(); |
- SkImage_Base* shadowMap = ((SkImage_Base*)lights->light(i).getShadowMap().get()); |
+ SkImage_Base* shadowMap = ((SkImage_Base*)lights->light(i).getShadowMap()); |
- // this sk_sp gets deleted when the ShadowFP is destroyed, and frees the GrTexture* |
+ // gets deleted when the ShadowFP is destroyed, and frees the GrTexture* |
fTexture[fNumDirLights] = sk_sp<GrTexture>(shadowMap->asTextureRef(context, |
GrTextureParams::ClampNoFilter(), |
SkSourceGammaTreatment::kIgnore)); |
@@ -154,13 +153,15 @@ public: |
// add uniforms |
int32_t numLights = args.fFp.cast<ShadowFP>().fNumDirLights; |
- SkASSERT(numLights <= SK_MAX_NON_AMBIENT_LIGHTS); |
+ SkASSERT(numLights <= SkShadowShader::kMaxNonAmbientLights); |
- const char* lightDirUniName[SK_MAX_NON_AMBIENT_LIGHTS] = {nullptr}; |
- const char* lightColorUniName[SK_MAX_NON_AMBIENT_LIGHTS] = {nullptr}; |
+ const char* lightDirUniName[SkShadowShader::kMaxNonAmbientLights] = {nullptr}; |
+ const char* lightColorUniName[SkShadowShader::kMaxNonAmbientLights] = {nullptr}; |
- const char* depthMapWidthUniName[SK_MAX_NON_AMBIENT_LIGHTS] = {nullptr}; |
- const char* depthMapHeightUniName[SK_MAX_NON_AMBIENT_LIGHTS] = {nullptr}; |
+ const char* depthMapWidthUniName[SkShadowShader::kMaxNonAmbientLights] |
+ = {nullptr}; |
+ const char* depthMapHeightUniName[SkShadowShader::kMaxNonAmbientLights] |
+ = {nullptr}; |
SkString lightDirUniNameBase("lightDir"); |
SkString lightColorUniNameBase("lightColor"); |
@@ -222,7 +223,7 @@ public: |
SkString diffuseColor("inDiffuseColor"); |
this->emitChild(1, nullptr, &diffuseColor, args); |
- SkString depthMaps[SK_MAX_NON_AMBIENT_LIGHTS]; |
+ SkString depthMaps[SkShadowShader::kMaxNonAmbientLights]; |
for (int i = 0; i < numLights; i++) { |
SkString povCoord("povCoord"); |
@@ -354,15 +355,21 @@ public: |
} |
private: |
- SkVector3 fLightDir[SK_MAX_NON_AMBIENT_LIGHTS]; |
- GrGLSLProgramDataManager::UniformHandle fLightDirUni[SK_MAX_NON_AMBIENT_LIGHTS]; |
- SkColor3f fLightColor[SK_MAX_NON_AMBIENT_LIGHTS]; |
- GrGLSLProgramDataManager::UniformHandle fLightColorUni[SK_MAX_NON_AMBIENT_LIGHTS]; |
+ SkVector3 fLightDir[SkShadowShader::kMaxNonAmbientLights]; |
+ GrGLSLProgramDataManager::UniformHandle |
+ fLightDirUni[SkShadowShader::kMaxNonAmbientLights]; |
- int fDepthMapWidth[SK_MAX_NON_AMBIENT_LIGHTS]; |
- GrGLSLProgramDataManager::UniformHandle fDepthMapWidthUni[SK_MAX_NON_AMBIENT_LIGHTS]; |
- int fDepthMapHeight[SK_MAX_NON_AMBIENT_LIGHTS]; |
- GrGLSLProgramDataManager::UniformHandle fDepthMapHeightUni[SK_MAX_NON_AMBIENT_LIGHTS]; |
+ SkColor3f fLightColor[SkShadowShader::kMaxNonAmbientLights]; |
+ GrGLSLProgramDataManager::UniformHandle |
+ fLightColorUni[SkShadowShader::kMaxNonAmbientLights]; |
+ |
+ int fDepthMapWidth[SkShadowShader::kMaxNonAmbientLights]; |
+ GrGLSLProgramDataManager::UniformHandle |
+ fDepthMapWidthUni[SkShadowShader::kMaxNonAmbientLights]; |
+ |
+ int fDepthMapHeight[SkShadowShader::kMaxNonAmbientLights]; |
+ GrGLSLProgramDataManager::UniformHandle |
+ fDepthMapHeightUni[SkShadowShader::kMaxNonAmbientLights]; |
int fWidth; |
GrGLSLProgramDataManager::UniformHandle fWidthUni; |
@@ -436,13 +443,13 @@ private: |
int fNumDirLights; |
- SkVector3 fLightDir[SK_MAX_NON_AMBIENT_LIGHTS]; |
- SkColor3f fLightColor[SK_MAX_NON_AMBIENT_LIGHTS]; |
- GrTextureAccess fDepthMapAccess[SK_MAX_NON_AMBIENT_LIGHTS]; |
- sk_sp<GrTexture> fTexture[SK_MAX_NON_AMBIENT_LIGHTS]; |
+ SkVector3 fLightDir[SkShadowShader::kMaxNonAmbientLights]; |
+ SkColor3f fLightColor[SkShadowShader::kMaxNonAmbientLights]; |
+ GrTextureAccess fDepthMapAccess[SkShadowShader::kMaxNonAmbientLights]; |
+ sk_sp<GrTexture> fTexture[SkShadowShader::kMaxNonAmbientLights]; |
- int fDepthMapWidth[SK_MAX_NON_AMBIENT_LIGHTS]; |
- int fDepthMapHeight[SK_MAX_NON_AMBIENT_LIGHTS]; |
+ int fDepthMapWidth[SkShadowShader::kMaxNonAmbientLights]; |
+ int fDepthMapHeight[SkShadowShader::kMaxNonAmbientLights]; |
int fHeight; |
int fWidth; |
@@ -647,7 +654,7 @@ void SkShadowShaderImpl::flatten(SkWriteBuffer& buf) const { |
buf.writeScalarArray(&light.dir().fX, 3); |
} |
- buf.writeImage(light.getShadowMap().get()); |
+ buf.writeImage(light.getShadowMap()); |
} |
buf.writeInt(fDiffuseWidth); |