#version {{version}} // Automatically generated from files in pathfinder/shaders/. Do not edit! #extension GL_GOOGLE_include_directive : enable precision highp float; vec4 fetchUnscaled(sampler2D srcTexture, vec2 scale, vec2 originCoord, int entry){ return texture(srcTexture,(originCoord + vec2(0.5)+ vec2(entry, 0))* scale); } void computeTileVaryings(vec2 position, int colorEntry, sampler2D textureMetadata, ivec2 textureMetadataSize, out vec2 outColorTexCoord0, out vec4 outBaseColor, out vec4 outFilterParams0, out vec4 outFilterParams1, out vec4 outFilterParams2, out int outCtrl){ vec2 metadataScale = vec2(1.0)/ vec2(textureMetadataSize); vec2 metadataEntryCoord = vec2(colorEntry % 128 * 8, colorEntry / 128); vec4 colorTexMatrix0 = fetchUnscaled(textureMetadata, metadataScale, metadataEntryCoord, 0); vec4 colorTexOffsets = fetchUnscaled(textureMetadata, metadataScale, metadataEntryCoord, 1); vec4 baseColor = fetchUnscaled(textureMetadata, metadataScale, metadataEntryCoord, 2); vec4 filterParams0 = fetchUnscaled(textureMetadata, metadataScale, metadataEntryCoord, 3); vec4 filterParams1 = fetchUnscaled(textureMetadata, metadataScale, metadataEntryCoord, 4); vec4 filterParams2 = fetchUnscaled(textureMetadata, metadataScale, metadataEntryCoord, 5); vec4 extra = fetchUnscaled(textureMetadata, metadataScale, metadataEntryCoord, 6); outColorTexCoord0 = mat2(colorTexMatrix0)* position + colorTexOffsets . xy; outBaseColor = baseColor; outFilterParams0 = filterParams0; outFilterParams1 = filterParams1; outFilterParams2 = filterParams2; outCtrl = int(extra . x); } uniform mat4 uTransform; uniform vec2 uTileSize; uniform sampler2D uTextureMetadata; uniform ivec2 uTextureMetadataSize; uniform sampler2D uZBuffer; uniform ivec2 uZBufferSize; in ivec2 aTileOffset; in ivec2 aTileOrigin; in uvec4 aMaskTexCoord0; in ivec2 aCtrlBackdrop; in int aPathIndex; in int aColor; out vec3 vMaskTexCoord0; out vec2 vColorTexCoord0; out vec4 vBaseColor; out float vTileCtrl; out vec4 vFilterParams0; out vec4 vFilterParams1; out vec4 vFilterParams2; out float vCtrl; void main(){ vec2 tileOrigin = vec2(aTileOrigin), tileOffset = vec2(aTileOffset); vec2 position =(tileOrigin + tileOffset)* uTileSize; ivec4 zValue = ivec4(texture(uZBuffer,(tileOrigin + vec2(0.5))/ vec2(uZBufferSize))* 255.0); if(aPathIndex <(zValue . x |(zValue . y << 8)|(zValue . z << 16)|(zValue . w << 24))){ gl_Position = vec4(0.0); return; } uvec2 maskTileCoord = uvec2(aMaskTexCoord0 . x, aMaskTexCoord0 . y + 256u * aMaskTexCoord0 . z); vec2 maskTexCoord0 =(vec2(maskTileCoord)+ tileOffset)* uTileSize; if(aCtrlBackdrop . y == 0 && aMaskTexCoord0 . w != 0u){ gl_Position = vec4(0.0); return; } int ctrl; computeTileVaryings(position, aColor, uTextureMetadata, uTextureMetadataSize, vColorTexCoord0, vBaseColor, vFilterParams0, vFilterParams1, vFilterParams2, ctrl); vTileCtrl = float(aCtrlBackdrop . x); vCtrl = float(ctrl); vMaskTexCoord0 = vec3(maskTexCoord0, float(aCtrlBackdrop . y)); gl_Position = uTransform * vec4(position, 0.0, 1.0); }