declare const vertexShader = "\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n "; declare const fragmentShader = "\n uniform vec2 viewportSize;\n uniform vec2 imageSize;\n uniform vec2 imageOffset;\n uniform sampler2D imageSampler;\n\n void main() {\n // Crop (with scaling) so there are no bars\n\n float scale = min(imageSize.x / viewportSize.x, imageSize.y / viewportSize.y);\n vec2 newSize = imageSize / scale;\n vec2 offset = (newSize - viewportSize) / 2.0;\n vec2 relativeOffset = offset / newSize;\n\n vec2 screenCoord = vec2(\n imageOffset.x + relativeOffset.x + (1.0 - 2.0 * relativeOffset.x) * gl_FragCoord.x / viewportSize.x,\n imageOffset.y + relativeOffset.y + (1.0 - 2.0 * relativeOffset.y) * gl_FragCoord.y / viewportSize.y\n );\n\n gl_FragColor = texture2D(imageSampler, screenCoord);\n }\n"; export { vertexShader, fragmentShader };