Refactor the XCAA vertex shaders themselves, now that the common XCAA

infrastructure has been refactored
This commit is contained in:
Patrick Walton 2017-12-02 13:13:54 -08:00
parent dc5e3a0093
commit 7e0d003a95
4 changed files with 34 additions and 37 deletions

View File

@ -67,15 +67,14 @@ void main() {
leftNormalAngle, leftNormalAngle,
rightNormalAngle, rightNormalAngle,
uEmboldenAmount)) { uEmboldenAmount)) {
controlPointPosition = dilatePosition(controlPointPosition, controlPointPosition = computeECAAPosition(controlPointPosition,
controlPointNormalAngle, controlPointNormalAngle,
uEmboldenAmount); uEmboldenAmount,
controlPointPosition = hintPosition(controlPointPosition, uHints); uHints,
controlPointPosition = transformVertexPositionAffine(controlPointPosition, pathTransformST,
pathTransformST, pathTransformExt,
pathTransformExt); uTransform,
controlPointPosition = transformVertexPosition(controlPointPosition, uTransform); uFramebufferSize);
controlPointPosition = convertClipToScreenSpace(controlPointPosition, uFramebufferSize);
} }
float depth = convertPathIndexToViewportDepthValue(pathID); float depth = convertPathIndexToViewportDepthValue(pathID);

View File

@ -50,11 +50,11 @@ void main() {
pathTransformST, pathTransformST,
pathTransformExt, pathTransformExt,
uTransform)) { uTransform)) {
controlPointPosition = transformVertexPositionAffine(controlPointPosition, controlPointPosition = transformECAAPositionToScreenSpace(controlPointPosition,
pathTransformST, pathTransformST,
pathTransformExt); pathTransformExt,
controlPointPosition = transformVertexPosition(controlPointPosition, uTransform); uTransform,
controlPointPosition = convertClipToScreenSpace(controlPointPosition, uFramebufferSize); uFramebufferSize);
} }
float depth = convertPathIndexToViewportDepthValue(pathID); float depth = convertPathIndexToViewportDepthValue(pathID);

View File

@ -28,25 +28,22 @@ void main() {
vec4 transformST = fetchFloat4Data(uPathTransformST, pathID, uPathTransformSTDimensions); vec4 transformST = fetchFloat4Data(uPathTransformST, pathID, uPathTransformSTDimensions);
vec2 upperLeftPosition = hintPosition(aUpperLeftPosition, uHints); vec2 upperLeftPosition = computeMCAAPosition(aUpperLeftPosition,
vec2 lowerRightPosition = hintPosition(aLowerRightPosition, uHints); uHints,
transformST,
upperLeftPosition = transformVertexPositionST(upperLeftPosition, transformST); uTransformST,
lowerRightPosition = transformVertexPositionST(lowerRightPosition, transformST); uFramebufferSize);
vec2 lowerRightPosition = computeMCAAPosition(aLowerRightPosition,
upperLeftPosition = transformVertexPositionST(upperLeftPosition, uTransformST); uHints,
lowerRightPosition = transformVertexPositionST(lowerRightPosition, uTransformST); transformST,
uTransformST,
upperLeftPosition = convertClipToScreenSpace(upperLeftPosition, uFramebufferSize); uFramebufferSize);
lowerRightPosition = convertClipToScreenSpace(lowerRightPosition, uFramebufferSize);
vec4 roundedExtents = vec4(floor(upperLeftPosition.x), ceil(upperLeftPosition.y),
ceil(lowerRightPosition));
vec2 position = mix(roundedExtents.xy, roundedExtents.zw, aQuadPosition);
position = convertScreenToClipSpace(position, uFramebufferSize);
float depth = convertPathIndexToViewportDepthValue(pathID);
gl_Position = vec4(position, depth, 1.0);
vHorizontalExtents = vec2(upperLeftPosition.x, lowerRightPosition.x); vHorizontalExtents = vec2(upperLeftPosition.x, lowerRightPosition.x);
vec4 extents = vec4(upperLeftPosition.x, ceil(upperLeftPosition.y), lowerRightPosition);
vec2 position = computeXCAAClipSpaceQuadPosition(extents, aQuadPosition, uFramebufferSize);
float depth = convertPathIndexToViewportDepthValue(pathID);
gl_Position = vec4(position, depth, 1.0);
} }

View File

@ -45,10 +45,11 @@ void main() {
transformST, transformST,
uTransformST, uTransformST,
uHints)) { uHints)) {
controlPointPosition = hintPosition(aControlPointPosition, uHints); controlPointPosition = computeMCAAPosition(controlPointPosition,
controlPointPosition = transformVertexPositionST(controlPointPosition, transformST); uHints,
controlPointPosition = transformVertexPositionST(controlPointPosition, uTransformST); transformST,
controlPointPosition = convertClipToScreenSpace(controlPointPosition, uFramebufferSize); uTransformST,
uFramebufferSize);
} }
float depth = convertPathIndexToViewportDepthValue(pathID); float depth = convertPathIndexToViewportDepthValue(pathID);