pathfinder/resources/shaders/gl3/tile_alpha.vs.glsl

49 lines
1.1 KiB
GLSL

#version {{version}}
// Automatically generated from files in pathfinder/shaders/. Do not edit!
precision highp float;
uniform mat4 uTransform;
uniform vec2 uTileSize;
uniform vec2 uStencilTextureSize;
in uvec2 aTessCoord;
in uvec3 aTileOrigin;
in vec2 aColorTexCoord;
in int aBackdrop;
in int aTileIndex;
out vec2 vMaskTexCoord;
out vec2 vColorTexCoord;
out float vBackdrop;
vec2 computeTileOffset(uint tileIndex, float stencilTextureWidth){
uint tilesPerRow = uint(stencilTextureWidth / uTileSize . x);
uvec2 tileOffset = uvec2(tileIndex % tilesPerRow, tileIndex / tilesPerRow);
return vec2(tileOffset)* uTileSize;
}
void main(){
vec2 origin = vec2(aTileOrigin . xy)+ vec2(aTileOrigin . z & 15u, aTileOrigin . z >> 4u)* 256.0;
vec2 position =(origin + vec2(aTessCoord))* uTileSize;
vec2 maskTexCoordOrigin = computeTileOffset(uint(aTileIndex), uStencilTextureSize . x);
vec2 maskTexCoord = maskTexCoordOrigin + aTessCoord * uTileSize;
vMaskTexCoord = maskTexCoord / uStencilTextureSize;
vColorTexCoord = aColorTexCoord;
vBackdrop = float(aBackdrop);
gl_Position = uTransform * vec4(position, 0.0, 1.0);
}