Loading libs/hwui/Caches.cpp +9 −4 Original line number Diff line number Diff line Loading @@ -685,7 +685,8 @@ void Caches::initTempProperties() { propertyDirtyViewport = false; propertyEnable3d = false; propertyCameraDistance = 1.0f; propertyShadowStrength = 0x3f; propertyAmbientShadowStrength = 0x3f; propertySpotShadowStrength = 0x3f; propertyLightPosXScale = 0.5f; propertyLightPosYScale = 0.0f; Loading @@ -704,9 +705,13 @@ void Caches::setTempProperty(const char* name, const char* value) { propertyDirtyViewport = true; ALOGD("camera dist multiplier = %.2f", propertyCameraDistance); return; } else if (!strcmp(name, "shadowStrength")) { propertyShadowStrength = atoi(value); ALOGD("shadow strength = 0x%x out of 0xff", propertyShadowStrength); } else if (!strcmp(name, "ambientShadowStrength")) { propertyAmbientShadowStrength = atoi(value); ALOGD("ambient shadow strength = 0x%x out of 0xff", propertyAmbientShadowStrength); return; } else if (!strcmp(name, "spotShadowStrength")) { propertySpotShadowStrength = atoi(value); ALOGD("spot shadow strength = 0x%x out of 0xff", propertySpotShadowStrength); return; } else if (!strcmp(name, "lightPosXScale")) { propertyLightPosXScale = fmin(fmax(atof(value), 0.0), 1.0); Loading libs/hwui/Caches.h +2 −1 Original line number Diff line number Diff line Loading @@ -367,7 +367,8 @@ public: float propertyLightPosXScale; float propertyLightPosYScale; float propertyLightPosZScale; int propertyShadowStrength; int propertyAmbientShadowStrength; int propertySpotShadowStrength; private: enum OverdrawColorSet { Loading libs/hwui/OpenGLRenderer.cpp +19 −14 Original line number Diff line number Diff line Loading @@ -3214,7 +3214,6 @@ status_t OpenGLRenderer::drawShadow(const mat4& casterTransform, float casterAlp mCaches.enableScissor(); SkPaint paint; paint.setARGB(mCaches.propertyShadowStrength, 0, 0, 0); paint.setAntiAlias(true); // want to use AlphaVertex // tessellate caster outline into a 2d polygon Loading @@ -3238,11 +3237,16 @@ status_t OpenGLRenderer::drawShadow(const mat4& casterTransform, float casterAlp } // draw caster's shadows if (mCaches.propertyAmbientShadowStrength > 0) { paint.setARGB(mCaches.propertyAmbientShadowStrength, 0, 0, 0); VertexBuffer ambientShadowVertexBuffer; ShadowTessellator::tessellateAmbientShadow(casterPolygon, casterVertexCount, ambientShadowVertexBuffer); drawVertexBuffer(ambientShadowVertexBuffer, &paint); } if (mCaches.propertySpotShadowStrength > 0) { paint.setARGB(mCaches.propertySpotShadowStrength, 0, 0, 0); VertexBuffer spotShadowVertexBuffer; Vector3 lightPosScale(mCaches.propertyLightPosXScale, mCaches.propertyLightPosYScale, mCaches.propertyLightPosZScale); Loading @@ -3251,6 +3255,7 @@ status_t OpenGLRenderer::drawShadow(const mat4& casterTransform, float casterAlp spotShadowVertexBuffer); drawVertexBuffer(spotShadowVertexBuffer, &paint); } return DrawGlInfo::kStatusDrew; } Loading Loading
libs/hwui/Caches.cpp +9 −4 Original line number Diff line number Diff line Loading @@ -685,7 +685,8 @@ void Caches::initTempProperties() { propertyDirtyViewport = false; propertyEnable3d = false; propertyCameraDistance = 1.0f; propertyShadowStrength = 0x3f; propertyAmbientShadowStrength = 0x3f; propertySpotShadowStrength = 0x3f; propertyLightPosXScale = 0.5f; propertyLightPosYScale = 0.0f; Loading @@ -704,9 +705,13 @@ void Caches::setTempProperty(const char* name, const char* value) { propertyDirtyViewport = true; ALOGD("camera dist multiplier = %.2f", propertyCameraDistance); return; } else if (!strcmp(name, "shadowStrength")) { propertyShadowStrength = atoi(value); ALOGD("shadow strength = 0x%x out of 0xff", propertyShadowStrength); } else if (!strcmp(name, "ambientShadowStrength")) { propertyAmbientShadowStrength = atoi(value); ALOGD("ambient shadow strength = 0x%x out of 0xff", propertyAmbientShadowStrength); return; } else if (!strcmp(name, "spotShadowStrength")) { propertySpotShadowStrength = atoi(value); ALOGD("spot shadow strength = 0x%x out of 0xff", propertySpotShadowStrength); return; } else if (!strcmp(name, "lightPosXScale")) { propertyLightPosXScale = fmin(fmax(atof(value), 0.0), 1.0); Loading
libs/hwui/Caches.h +2 −1 Original line number Diff line number Diff line Loading @@ -367,7 +367,8 @@ public: float propertyLightPosXScale; float propertyLightPosYScale; float propertyLightPosZScale; int propertyShadowStrength; int propertyAmbientShadowStrength; int propertySpotShadowStrength; private: enum OverdrawColorSet { Loading
libs/hwui/OpenGLRenderer.cpp +19 −14 Original line number Diff line number Diff line Loading @@ -3214,7 +3214,6 @@ status_t OpenGLRenderer::drawShadow(const mat4& casterTransform, float casterAlp mCaches.enableScissor(); SkPaint paint; paint.setARGB(mCaches.propertyShadowStrength, 0, 0, 0); paint.setAntiAlias(true); // want to use AlphaVertex // tessellate caster outline into a 2d polygon Loading @@ -3238,11 +3237,16 @@ status_t OpenGLRenderer::drawShadow(const mat4& casterTransform, float casterAlp } // draw caster's shadows if (mCaches.propertyAmbientShadowStrength > 0) { paint.setARGB(mCaches.propertyAmbientShadowStrength, 0, 0, 0); VertexBuffer ambientShadowVertexBuffer; ShadowTessellator::tessellateAmbientShadow(casterPolygon, casterVertexCount, ambientShadowVertexBuffer); drawVertexBuffer(ambientShadowVertexBuffer, &paint); } if (mCaches.propertySpotShadowStrength > 0) { paint.setARGB(mCaches.propertySpotShadowStrength, 0, 0, 0); VertexBuffer spotShadowVertexBuffer; Vector3 lightPosScale(mCaches.propertyLightPosXScale, mCaches.propertyLightPosYScale, mCaches.propertyLightPosZScale); Loading @@ -3251,6 +3255,7 @@ status_t OpenGLRenderer::drawShadow(const mat4& casterTransform, float casterAlp spotShadowVertexBuffer); drawVertexBuffer(spotShadowVertexBuffer, &paint); } return DrawGlInfo::kStatusDrew; } Loading