From 7e0d003a95695e00d21c41107c707fb7c4ddb0aa Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Sat, 2 Dec 2017 13:13:54 -0800 Subject: [PATCH] Refactor the XCAA vertex shaders themselves, now that the common XCAA infrastructure has been refactored --- shaders/gles2/ecaa-curve.vs.glsl | 17 +++++---- .../gles2/ecaa-multi-edge-mask-curve.vs.glsl | 10 +++--- shaders/gles2/mcaa-cover.vs.glsl | 35 +++++++++---------- shaders/gles2/mcaa-curve.vs.glsl | 9 ++--- 4 files changed, 34 insertions(+), 37 deletions(-) diff --git a/shaders/gles2/ecaa-curve.vs.glsl b/shaders/gles2/ecaa-curve.vs.glsl index 134bb9c6..b0c6f6bc 100644 --- a/shaders/gles2/ecaa-curve.vs.glsl +++ b/shaders/gles2/ecaa-curve.vs.glsl @@ -67,15 +67,14 @@ void main() { leftNormalAngle, rightNormalAngle, uEmboldenAmount)) { - controlPointPosition = dilatePosition(controlPointPosition, - controlPointNormalAngle, - uEmboldenAmount); - controlPointPosition = hintPosition(controlPointPosition, uHints); - controlPointPosition = transformVertexPositionAffine(controlPointPosition, - pathTransformST, - pathTransformExt); - controlPointPosition = transformVertexPosition(controlPointPosition, uTransform); - controlPointPosition = convertClipToScreenSpace(controlPointPosition, uFramebufferSize); + controlPointPosition = computeECAAPosition(controlPointPosition, + controlPointNormalAngle, + uEmboldenAmount, + uHints, + pathTransformST, + pathTransformExt, + uTransform, + uFramebufferSize); } float depth = convertPathIndexToViewportDepthValue(pathID); diff --git a/shaders/gles2/ecaa-multi-edge-mask-curve.vs.glsl b/shaders/gles2/ecaa-multi-edge-mask-curve.vs.glsl index caca67f0..0f80573c 100644 --- a/shaders/gles2/ecaa-multi-edge-mask-curve.vs.glsl +++ b/shaders/gles2/ecaa-multi-edge-mask-curve.vs.glsl @@ -50,11 +50,11 @@ void main() { pathTransformST, pathTransformExt, uTransform)) { - controlPointPosition = transformVertexPositionAffine(controlPointPosition, - pathTransformST, - pathTransformExt); - controlPointPosition = transformVertexPosition(controlPointPosition, uTransform); - controlPointPosition = convertClipToScreenSpace(controlPointPosition, uFramebufferSize); + controlPointPosition = transformECAAPositionToScreenSpace(controlPointPosition, + pathTransformST, + pathTransformExt, + uTransform, + uFramebufferSize); } float depth = convertPathIndexToViewportDepthValue(pathID); diff --git a/shaders/gles2/mcaa-cover.vs.glsl b/shaders/gles2/mcaa-cover.vs.glsl index 75b78ebd..880bfbf9 100644 --- a/shaders/gles2/mcaa-cover.vs.glsl +++ b/shaders/gles2/mcaa-cover.vs.glsl @@ -28,25 +28,22 @@ void main() { vec4 transformST = fetchFloat4Data(uPathTransformST, pathID, uPathTransformSTDimensions); - vec2 upperLeftPosition = hintPosition(aUpperLeftPosition, uHints); - vec2 lowerRightPosition = hintPosition(aLowerRightPosition, uHints); - - upperLeftPosition = transformVertexPositionST(upperLeftPosition, transformST); - lowerRightPosition = transformVertexPositionST(lowerRightPosition, transformST); - - upperLeftPosition = transformVertexPositionST(upperLeftPosition, uTransformST); - lowerRightPosition = transformVertexPositionST(lowerRightPosition, uTransformST); - - upperLeftPosition = convertClipToScreenSpace(upperLeftPosition, 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); + vec2 upperLeftPosition = computeMCAAPosition(aUpperLeftPosition, + uHints, + transformST, + uTransformST, + uFramebufferSize); + vec2 lowerRightPosition = computeMCAAPosition(aLowerRightPosition, + uHints, + transformST, + uTransformST, + uFramebufferSize); 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); } diff --git a/shaders/gles2/mcaa-curve.vs.glsl b/shaders/gles2/mcaa-curve.vs.glsl index 39814ef8..375efecd 100644 --- a/shaders/gles2/mcaa-curve.vs.glsl +++ b/shaders/gles2/mcaa-curve.vs.glsl @@ -45,10 +45,11 @@ void main() { transformST, uTransformST, uHints)) { - controlPointPosition = hintPosition(aControlPointPosition, uHints); - controlPointPosition = transformVertexPositionST(controlPointPosition, transformST); - controlPointPosition = transformVertexPositionST(controlPointPosition, uTransformST); - controlPointPosition = convertClipToScreenSpace(controlPointPosition, uFramebufferSize); + controlPointPosition = computeMCAAPosition(controlPointPosition, + uHints, + transformST, + uTransformST, + uFramebufferSize); } float depth = convertPathIndexToViewportDepthValue(pathID);