Fix zoomed-in rotation for text by taking extended path transforms into
account in the MCAA shader.
This commit is contained in:
parent
dfcbd9dddd
commit
48aceb6291
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue