bjectToCanvasLinearComponent; uniform float4 uBrushColor; uniform int uTextureMapping; uniform float uTextureAnimationProgress; uniform int uNumTextureAnimationFrames; uniform int uNumTextureAnimationRows; uniform int uNumTextureAnimationColumns; Varyings main(const Attributes attributes) { Varyings varyings; varyings.position = attributes.positionAndOpacityShift.xy; varyings.position += calculateAntialiasingAndPositionOutset( attributes.sideDerivativeAndLabel, attributes.forwardDerivativeAndLabel, mat2FromFloat4ColumnMajor(uObjectToCanvasLinearComponent), varyings.pixelsPerDimension, varyings.normalizedToEdgeLRFB, varyings.outsetPixelsLRFB); varyings.color = applyHSLAndOpacityShift( attributes.hslShift, attributes.positionAndOpacityShift.z, uBrushColor); varyings.color.rgb *= varyings.color.a; if (uTextureMapping == 1) { varyings.textureCoords = calculateWindingTextureUv( unpackSurfaceUv(attributes.surfaceUvAndAnimationOffset.xy), unpackAnimationOffset(attributes.surfaceUvAndAnimationOffset.z), uTextureAnimationProgress, uNumTextureAnimationFrames, uNumTextureAnimationRows, uNumTextureAnimationColumns); } else { varyings.textureCoords = varyings.position; } return varyings; }