Merge "Modulate shadow alpha by caster alpha"
This commit is contained in:
@@ -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)
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user