From c8131ea95846f76fb196a78ce9c9b09aeb15736c Mon Sep 17 00:00:00 2001 From: jussi Date: Sat, 25 Jan 2025 17:36:29 +0200 Subject: Atlas texture repeat example. --- examples/resources/shaders/glsl330/atlas_repeat.fs | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 examples/resources/shaders/glsl330/atlas_repeat.fs (limited to 'examples/resources/shaders/glsl330/atlas_repeat.fs') diff --git a/examples/resources/shaders/glsl330/atlas_repeat.fs b/examples/resources/shaders/glsl330/atlas_repeat.fs new file mode 100644 index 0000000..90547f0 --- /dev/null +++ b/examples/resources/shaders/glsl330/atlas_repeat.fs @@ -0,0 +1,28 @@ +#version 330 + +// Input vertex attributes (from vertex shader) +in vec3 fragPosition; +in vec2 fragTexCoord; +in vec4 fragColor; + +// Input uniform values +uniform sampler2D texture0; + +uniform vec2 atlasSize; +uniform vec2 tileTexSize; + +// Output fragment color +out vec4 finalColor; + +vec2 texTileSize = tileTexSize / atlasSize; +vec2 atlasTileSize = atlasSize / tileTexSize; + +void main() { + vec2 tileTexCoord = fract( vec2( fragPosition.x, fragPosition.y ) / tileTexSize ); + // Get tile texture corner. + vec2 texOffset = floor( fragTexCoord / texTileSize ) * texTileSize; + vec2 fragCoord = tileTexCoord / atlasTileSize + texOffset; + vec4 texelColor = texture( texture0, fragCoord ); + + finalColor = texelColor * fragColor; +} -- cgit v1.2.3