skyline/app/src/main/shaders/blit.frag

22 lines
606 B
GLSL
Raw Normal View History

#version 460
layout (binding = 0, set = 0) uniform sampler2D src;
layout (location = 0) in vec2 dstUV;
layout (location = 0) out vec4 colour;
layout (push_constant) uniform constants {
layout (offset = 16)
vec2 srcOriginUV;
vec2 dstSrcScaleFactor;
float srcHeightRecip;
} PC;
void main()
{
vec2 srcUV = dstUV * PC.dstSrcScaleFactor + PC.srcOriginUV;
// Account for out of bounds blits by moving to the next line of the source texture for the copy
srcUV.y += floor(srcUV.x) * PC.srcHeightRecip;
srcUV.x = srcUV.x - floor(srcUV.x);
colour.rgba = texture(src, srcUV);
}