bevy/crates/pathfinder/resources/shaders/gl4/tile.vs.glsl

42 lines
2.0 KiB
GLSL

#version {{version}}
// Automatically generated from files in pathfinder/shaders/. Do not edit!
uniform vec4 uTileSize[1];
uniform ivec4 uTextureMetadataSize[1];
uniform vec4 uTransform[4];
layout(binding = 2) uniform sampler2D SPIRV_Cross_CombineduTextureMetadatauSampler;
layout(location = 1) in ivec2 aTileOrigin;
layout(location = 0) in ivec2 aTileOffset;
layout(location = 2) in uvec2 aMaskTexCoord0;
layout(location = 4) in int aColor;
layout(location = 1) out vec2 vColorTexCoord0;
layout(location = 0) out vec3 vMaskTexCoord0;
layout(location = 3) in ivec2 aMaskBackdrop;
layout(location = 2) out vec4 vBaseColor;
layout(location = 3) out float vTileCtrl;
layout(location = 5) in int aTileCtrl;
void main()
{
vec2 tileOrigin = vec2(aTileOrigin);
vec2 tileOffset = vec2(aTileOffset);
vec2 position = (tileOrigin + tileOffset) * uTileSize[0].xy;
vec2 maskTexCoord0 = (vec2(aMaskTexCoord0) + tileOffset) * uTileSize[0].xy;
vec2 textureMetadataScale = vec2(1.0) / vec2(uTextureMetadataSize[0].xy);
vec2 metadataEntryCoord = vec2(float((aColor % 128) * 4), float(aColor / 128));
vec2 colorTexMatrix0Coord = (metadataEntryCoord + vec2(0.5)) * textureMetadataScale;
vec2 colorTexOffsetsCoord = (metadataEntryCoord + vec2(1.5, 0.5)) * textureMetadataScale;
vec2 baseColorCoord = (metadataEntryCoord + vec2(2.5, 0.5)) * textureMetadataScale;
vec4 colorTexMatrix0 = textureLod(SPIRV_Cross_CombineduTextureMetadatauSampler, colorTexMatrix0Coord, 0.0);
vec4 colorTexOffsets = textureLod(SPIRV_Cross_CombineduTextureMetadatauSampler, colorTexOffsetsCoord, 0.0);
vec4 baseColor = textureLod(SPIRV_Cross_CombineduTextureMetadatauSampler, baseColorCoord, 0.0);
vColorTexCoord0 = (mat2(vec2(colorTexMatrix0.xy), vec2(colorTexMatrix0.zw)) * position) + colorTexOffsets.xy;
vMaskTexCoord0 = vec3(maskTexCoord0, float(aMaskBackdrop.x));
vBaseColor = baseColor;
vTileCtrl = float(aTileCtrl);
gl_Position = mat4(uTransform[0], uTransform[1], uTransform[2], uTransform[3]) * vec4(position, 0.0, 1.0);
}