Merge "Modulate shadow alpha by caster alpha"

This commit is contained in:
Chris Craik
2014-02-24 20:54:34 +00:00
committed by Android (Google) Code Review
2 changed files with 4 additions and 3 deletions

View File

@@ -661,7 +661,8 @@ void DisplayList::iterate3dChildren(ChildrenSelectMode mode, OpenGLRenderer& ren
if (mode == kNegativeZChildren && zValue > 0.0f) break;
DisplayList* child = childOp->mDisplayList;
if (mode == kPositiveZChildren && zValue > 0.0f && child->mCastsShadow) {
if (mode == kPositiveZChildren && zValue > 0.0f
&& child->mCastsShadow && child->mAlpha > 0.0f) {
/* draw shadow with parent matrix applied, passing in the child's total matrix
* TODO: consider depth in more complex scenarios (neg z, added shadow depth)
*/

View File

@@ -3233,7 +3233,7 @@ status_t OpenGLRenderer::drawShadow(const mat4& casterTransform, float casterAlp
// draw caster's shadows
if (mCaches.propertyAmbientShadowStrength > 0) {
paint.setARGB(mCaches.propertyAmbientShadowStrength, 0, 0, 0);
paint.setARGB(casterAlpha * mCaches.propertyAmbientShadowStrength, 0, 0, 0);
VertexBuffer ambientShadowVertexBuffer;
ShadowTessellator::tessellateAmbientShadow(casterPolygon, casterVertexCount,
ambientShadowVertexBuffer);
@@ -3241,7 +3241,7 @@ status_t OpenGLRenderer::drawShadow(const mat4& casterTransform, float casterAlp
}
if (mCaches.propertySpotShadowStrength > 0) {
paint.setARGB(mCaches.propertySpotShadowStrength, 0, 0, 0);
paint.setARGB(casterAlpha * mCaches.propertySpotShadowStrength, 0, 0, 0);
VertexBuffer spotShadowVertexBuffer;
Vector3 lightPosScale(mCaches.propertyLightPosXScale,
mCaches.propertyLightPosYScale, mCaches.propertyLightPosZScale);