Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 919e95cc authored by Chris Craik's avatar Chris Craik
Browse files

Modulate shadow alpha by caster alpha

Change-Id: Ibc4b3958feb3b5dba91d30af470d76555a6209c8
parent 550267f7
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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)
             */
+2 −2
Original line number Diff line number Diff line
@@ -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);