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

Commit 30422862 authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Make umbra lighter when the blocker is too high and has no real umbra...

Merge "Make umbra lighter when the blocker is too high and has no real umbra area. am: 9c555566 am: 9ad59993" into nyc-mr1-dev-plus-aosp
parents 83c9edc8 6ff1730d
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -942,9 +942,13 @@ void SpotShadow::generateTriangleStrip(bool isCasterOpaque, float shadowStrength
        AlphaVertex::set(&shadowVertices[vertexBufferIndex++], newPenumbra[i].x,
                newPenumbra[i].y, PENUMBRA_ALPHA);
    }
    // Since the umbra can be a faked one when the occluder is too high, the umbra should be lighter
    // in this case.
    float scaledUmbraAlpha = UMBRA_ALPHA * shadowStrengthScale;

    for (int i = 0; i < umbraLength; i++) {
        AlphaVertex::set(&shadowVertices[vertexBufferIndex++], umbra[i].x, umbra[i].y,
                UMBRA_ALPHA);
                scaledUmbraAlpha);
    }

    for (int i = 0; i < verticesPairIndex; i++) {
@@ -984,14 +988,14 @@ void SpotShadow::generateTriangleStrip(bool isCasterOpaque, float shadowStrength
            indexBuffer[indexBufferIndex++] = newPenumbraLength + i;
            indexBuffer[indexBufferIndex++] = vertexBufferIndex;
            AlphaVertex::set(&shadowVertices[vertexBufferIndex++],
                    closerVertex.x, closerVertex.y, UMBRA_ALPHA);
                    closerVertex.x, closerVertex.y, scaledUmbraAlpha);
        }
    } else {
        // If there is no occluded umbra at all, then draw the triangle fan
        // starting from the centroid to all umbra vertices.
        int lastCentroidIndex = vertexBufferIndex;
        AlphaVertex::set(&shadowVertices[vertexBufferIndex++], centroid.x,
                centroid.y, UMBRA_ALPHA);
                centroid.y, scaledUmbraAlpha);
        for (int i = 0; i < umbraLength; i++) {
            indexBuffer[indexBufferIndex++] = newPenumbraLength + i;
            indexBuffer[indexBufferIndex++] = lastCentroidIndex;