| 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);
|
|
|