Merge "Stretch breaks on wembley" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
279253f0fc
@@ -58,8 +58,7 @@ static const SkString stretchShader = SkString(R"(
|
|||||||
uniform float viewportWidth; // target height in pixels
|
uniform float viewportWidth; // target height in pixels
|
||||||
uniform float viewportHeight; // target width in pixels
|
uniform float viewportHeight; // target width in pixels
|
||||||
|
|
||||||
void computeOverscrollStart(
|
float computeOverscrollStart(
|
||||||
out float outPos,
|
|
||||||
float inPos,
|
float inPos,
|
||||||
float overscroll,
|
float overscroll,
|
||||||
float uStretchAffectedDist,
|
float uStretchAffectedDist,
|
||||||
@@ -68,11 +67,10 @@ static const SkString stretchShader = SkString(R"(
|
|||||||
float offsetPos = uStretchAffectedDist - inPos;
|
float offsetPos = uStretchAffectedDist - inPos;
|
||||||
float posBasedVariation = smoothstep(0., uStretchAffectedDist, offsetPos);
|
float posBasedVariation = smoothstep(0., uStretchAffectedDist, offsetPos);
|
||||||
float stretchIntensity = overscroll * posBasedVariation;
|
float stretchIntensity = overscroll * posBasedVariation;
|
||||||
outPos = distanceStretched - (offsetPos / (1. + stretchIntensity));
|
return distanceStretched - (offsetPos / (1. + stretchIntensity));
|
||||||
}
|
}
|
||||||
|
|
||||||
void computeOverscrollEnd(
|
float computeOverscrollEnd(
|
||||||
out float outPos,
|
|
||||||
float inPos,
|
float inPos,
|
||||||
float overscroll,
|
float overscroll,
|
||||||
float reverseStretchDist,
|
float reverseStretchDist,
|
||||||
@@ -82,21 +80,23 @@ static const SkString stretchShader = SkString(R"(
|
|||||||
float offsetPos = inPos - reverseStretchDist;
|
float offsetPos = inPos - reverseStretchDist;
|
||||||
float posBasedVariation = (smoothstep(0., uStretchAffectedDist, offsetPos));
|
float posBasedVariation = (smoothstep(0., uStretchAffectedDist, offsetPos));
|
||||||
float stretchIntensity = (-overscroll) * posBasedVariation;
|
float stretchIntensity = (-overscroll) * posBasedVariation;
|
||||||
outPos = 1 - (distanceStretched - (offsetPos / (1. + stretchIntensity)));
|
return 1 - (distanceStretched - (offsetPos / (1. + stretchIntensity)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void computeOverscroll(
|
// Prefer usage of return values over out parameters as it enables
|
||||||
out float outPos,
|
// SKSL to properly inline method calls and works around potential GPU
|
||||||
|
// driver issues on Wembly. See b/182566543 for details
|
||||||
|
float computeOverscroll(
|
||||||
float inPos,
|
float inPos,
|
||||||
float overscroll,
|
float overscroll,
|
||||||
float uStretchAffectedDist,
|
float uStretchAffectedDist,
|
||||||
float distanceStretched,
|
float distanceStretched,
|
||||||
float distanceDiff
|
float distanceDiff
|
||||||
) {
|
) {
|
||||||
if (overscroll > 0) {
|
float outPos = inPos;
|
||||||
|
if (overscroll > 0) {
|
||||||
if (inPos <= uStretchAffectedDist) {
|
if (inPos <= uStretchAffectedDist) {
|
||||||
computeOverscrollStart(
|
outPos = computeOverscrollStart(
|
||||||
outPos,
|
|
||||||
inPos,
|
inPos,
|
||||||
overscroll,
|
overscroll,
|
||||||
uStretchAffectedDist,
|
uStretchAffectedDist,
|
||||||
@@ -109,8 +109,7 @@ static const SkString stretchShader = SkString(R"(
|
|||||||
if (overscroll < 0) {
|
if (overscroll < 0) {
|
||||||
float stretchAffectedDist = 1. - uStretchAffectedDist;
|
float stretchAffectedDist = 1. - uStretchAffectedDist;
|
||||||
if (inPos >= stretchAffectedDist) {
|
if (inPos >= stretchAffectedDist) {
|
||||||
computeOverscrollEnd(
|
outPos = computeOverscrollEnd(
|
||||||
outPos,
|
|
||||||
inPos,
|
inPos,
|
||||||
overscroll,
|
overscroll,
|
||||||
stretchAffectedDist,
|
stretchAffectedDist,
|
||||||
@@ -121,6 +120,7 @@ static const SkString stretchShader = SkString(R"(
|
|||||||
outPos = -distanceDiff + inPos;
|
outPos = -distanceDiff + inPos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return outPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 main(vec2 coord) {
|
vec4 main(vec2 coord) {
|
||||||
@@ -135,16 +135,14 @@ static const SkString stretchShader = SkString(R"(
|
|||||||
inV += uScrollY;
|
inV += uScrollY;
|
||||||
outU = inU;
|
outU = inU;
|
||||||
outV = inV;
|
outV = inV;
|
||||||
computeOverscroll(
|
outU = computeOverscroll(
|
||||||
outU,
|
|
||||||
inU,
|
inU,
|
||||||
uOverscrollX,
|
uOverscrollX,
|
||||||
uStretchAffectedDistX,
|
uStretchAffectedDistX,
|
||||||
uDistanceStretchedX,
|
uDistanceStretchedX,
|
||||||
uDistDiffX
|
uDistDiffX
|
||||||
);
|
);
|
||||||
computeOverscroll(
|
outV = computeOverscroll(
|
||||||
outV,
|
|
||||||
inV,
|
inV,
|
||||||
uOverscrollY,
|
uOverscrollY,
|
||||||
uStretchAffectedDistY,
|
uStretchAffectedDistY,
|
||||||
|
|||||||
Reference in New Issue
Block a user