diff --git a/demo/client/src/xcaa-strategy.ts b/demo/client/src/xcaa-strategy.ts index fc62e67b..145cd9e8 100644 --- a/demo/client/src/xcaa-strategy.ts +++ b/demo/client/src/xcaa-strategy.ts @@ -44,7 +44,7 @@ const PATCH_VERTICES: Float32Array = new Float32Array([ const MCAA_PATCH_INDICES: Uint8Array = new Uint8Array([0, 1, 2, 1, 3, 2]); -export type TransformType = 'dilation' | 'affine' | '3d'; +export type TransformType = 'affine' | '3d'; export abstract class XCAAStrategy extends AntialiasingStrategy { abstract readonly directRenderingMode: DirectRenderingMode; @@ -258,9 +258,6 @@ export abstract class XCAAStrategy extends AntialiasingStrategy { const gl = renderContext.gl; switch (this.transformType) { - case 'dilation': - renderer.setTransformSTUniform(uniforms, 0); - break; case 'affine': renderer.setTransformAffineUniforms(uniforms, 0); break; @@ -396,7 +393,6 @@ export class MCAAStrategy extends XCAAStrategy { const gl = renderContext.gl; this.vao = renderContext.vertexArrayObjectExt.createVertexArrayOES(); - } antialiasObject(renderer: Renderer, objectIndex: number): void { diff --git a/shaders/gles2/mcaa.vs.glsl b/shaders/gles2/mcaa.vs.glsl index 7b508294..5e0cc1c7 100644 --- a/shaders/gles2/mcaa.vs.glsl +++ b/shaders/gles2/mcaa.vs.glsl @@ -43,6 +43,8 @@ uniform ivec2 uFramebufferSize; uniform ivec2 uPathTransformSTDimensions; /// The path transform buffer texture, one dilation per path ID. uniform sampler2D uPathTransformST; +uniform ivec2 uPathTransformExtDimensions; +uniform sampler2D uPathTransformExt; /// The size of the path colors buffer texture in texels. uniform ivec2 uPathColorsDimensions; /// The path colors buffer texture, one color per path ID. @@ -75,10 +77,16 @@ void main() { else color = vec4(1.0); - vec4 transformST = fetchFloat4Data(uPathTransformST, pathID, uPathTransformSTDimensions); + vec2 transformExt; + vec4 transformST = fetchPathAffineTransform(transformExt, + uPathTransformST, + uPathTransformSTDimensions, + uPathTransformExt, + uPathTransformExtDimensions, + pathID); mat2 globalTransformLinear = mat2(uTransformST.x, uTransformExt, uTransformST.y); - mat2 localTransformLinear = mat2(transformST.x, 0.0, 0.0, transformST.y); + mat2 localTransformLinear = mat2(transformST.x, -transformExt, transformST.y); mat2 rectTransformLinear = mat2(aRect.z - aRect.x, 0.0, 0.0, aRect.w - aRect.y); mat2 transformLinear = globalTransformLinear * localTransformLinear * rectTransformLinear;