mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-26 23:37:18 +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
504 B
GLSL
30 lines
504 B
GLSL
#version 300 es
|
|
precision highp float;
|
|
|
|
#include "color_blind.h"
|
|
|
|
in vec2 uv;
|
|
out vec4 color;
|
|
|
|
uniform sampler2D sampler1;
|
|
uniform float scale;
|
|
uniform int cbMode;
|
|
|
|
void main()
|
|
{
|
|
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;
|
|
|
|
color = texelFetch(sampler1, ivec2(px), 0);
|
|
}
|
|
else
|
|
color = texture(sampler1, uv);
|
|
|
|
if (cbMode > 0)
|
|
color = cbTransform(color, cbMode);
|
|
}
|