Atlas texture repeat example.
This commit is contained in:
28
examples/resources/shaders/glsl330/atlas_repeat.fs
Normal file
28
examples/resources/shaders/glsl330/atlas_repeat.fs
Normal file
@@ -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;
|
||||
}
|
||||
@@ -10,16 +10,20 @@ in vec4 vertexColor;
|
||||
uniform mat4 mvp;
|
||||
|
||||
// Output vertex attributes (to fragment shader)
|
||||
out vec3 fragPosition;
|
||||
out vec2 fragTexCoord;
|
||||
out vec3 fragNormal;
|
||||
out vec4 fragColor;
|
||||
|
||||
// NOTE: Add here your custom variables
|
||||
|
||||
void main() {
|
||||
// Send vertex attributes to fragment shader
|
||||
fragPosition = vertexPosition;
|
||||
fragTexCoord = vertexTexCoord;
|
||||
fragNormal = vertexNormal;
|
||||
fragColor = vertexColor;
|
||||
|
||||
// Calculate final vertex position
|
||||
gl_Position = mvp * vec4( vertexPosition, 1.0 );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user