mirror of https://github.com/bsnes-emu/bsnes.git
Fix shaders that break with specific pixel factors
OmniScaleLegacy seems to has problems with every odd factor (3x, 5x, 7x, 9x, etc.). SmoothBilinear has problems with 5x and 11x and probably more.
This commit is contained in:
parent
0c80ac3296
commit
c365c450a7
|
@ -10,10 +10,10 @@ vec4 scale(sampler2D image)
|
|||
|
||||
vec2 pixel = texCoord * textureDimensions - vec2(0.5, 0.5);
|
||||
|
||||
vec4 q11 = texture(image, (pixel ) / textureDimensions);
|
||||
vec4 q12 = texture(image, (pixel + vec2(0.0, 1.0)) / textureDimensions);
|
||||
vec4 q21 = texture(image, (pixel + vec2(1.0, 0.0)) / textureDimensions);
|
||||
vec4 q22 = texture(image, (pixel + vec2(1.0, 1.0)) / textureDimensions);
|
||||
vec4 q11 = texture(image, (floor(pixel) + 0.5) / textureDimensions);
|
||||
vec4 q12 = texture(image, (vec2(floor(pixel.x), ceil(pixel.y)) + 0.5) / textureDimensions);
|
||||
vec4 q21 = texture(image, (vec2(ceil(pixel.x), floor(pixel.y)) + 0.5) / textureDimensions);
|
||||
vec4 q22 = texture(image, (ceil(pixel) + 0.5) / textureDimensions);
|
||||
|
||||
vec2 pos = fract(pixel);
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@ vec4 scale(sampler2D image)
|
|||
|
||||
vec2 s = smoothstep(0., 1., fract(pixel));
|
||||
|
||||
vec4 r1 = mix(q11, q21, fract(s.x));
|
||||
vec4 r2 = mix(q12, q22, fract(s.x));
|
||||
vec4 r1 = mix(q11, q21, s.x);
|
||||
vec4 r2 = mix(q12, q22, s.x);
|
||||
|
||||
return mix (r1, r2, fract(s.y));
|
||||
return mix (r1, r2, s.y);
|
||||
}
|
Loading…
Reference in New Issue