aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/HelperFunctions/TexelFetchScale_fp.glsl
blob: 07a38a7a682422b0c6e7094280ff562e870d9a7c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
ivec2 Helper_TexelFetchScale(ivec2 inputVec, int samplerIndex)
{
    float scale = support_buffer.s_render_scale[1 + samplerIndex];
    if (scale == 1.0)
    {
        return inputVec;
    }
    if (scale < 0.0) // If less than 0, try interpolate between texels by using the screen position.
    {
        return ivec2(vec2(inputVec) * (-scale) + mod(gl_FragCoord.xy, 0.0 - scale));
    }
    else
    {
        return ivec2(vec2(inputVec) * scale);
    }
}

int Helper_TextureSizeUnscale(int size, int samplerIndex)
{
    float scale = abs(support_buffer.s_render_scale[1 + samplerIndex]);
    if (scale == 1.0)
    {
        return size;
    }
    return int(float(size) / scale);
}