mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-12-26 07:23:40 +00:00
91b0cba145
This fixes a rounding issue on certain hardware (NVidia) which actually implement mediump as half precision (16-bit) float. It's safe to assume `highp` is available as if the GPU does not support it, then the shader compiler will try to find a lower precision that is supported by the GPU
30 lines
467 B
GLSL
30 lines
467 B
GLSL
#version 300 es
|
|
precision highp float;
|
|
|
|
in vec2 uv;
|
|
out vec4 color;
|
|
|
|
uniform sampler2D sampler1;
|
|
uniform float scale;
|
|
|
|
void main()
|
|
{
|
|
vec4 tmp;
|
|
if (scale > 1.0)
|
|
{
|
|
vec2 ts = vec2(textureSize(sampler1, 0));
|
|
vec2 px = (uv - (0.5 / ts)) * ts;
|
|
if (px.x < 0.0 || px.y < 0.0)
|
|
discard;
|
|
|
|
tmp = texelFetch(sampler1, ivec2(px), 0);
|
|
}
|
|
else
|
|
tmp = texture(sampler1, uv);
|
|
|
|
if (tmp.rgb == vec3(0.0, 0.0, 0.0))
|
|
discard;
|
|
|
|
color = tmp;
|
|
}
|