mirror of
https://github.com/minetest/minetest.git
synced 2025-01-08 14:27:31 +01:00
Fix MSAA and bloom flashing artifacts (#15610)
* Mark varColor and nightratio as centroids * Leave old workaround in place for GLES
This commit is contained in:
parent
f54d209bc8
commit
2db4ad8c77
@ -23,7 +23,12 @@ void main(void)
|
|||||||
vec2 uv = varTexCoord.st;
|
vec2 uv = varTexCoord.st;
|
||||||
vec3 color = texture2D(rendered, uv).rgb;
|
vec3 color = texture2D(rendered, uv).rgb;
|
||||||
// translate to linear colorspace (approximate)
|
// translate to linear colorspace (approximate)
|
||||||
|
#ifdef GL_ES
|
||||||
|
// clamp color to [0,1] range in lieu of centroids
|
||||||
color = pow(clamp(color, 0.0, 1.0), vec3(2.2));
|
color = pow(clamp(color, 0.0, 1.0), vec3(2.2));
|
||||||
|
#else
|
||||||
|
color = pow(color, vec3(2.2));
|
||||||
|
#endif
|
||||||
|
|
||||||
color *= exposureParams.compensationFactor * bloomStrength;
|
color *= exposureParams.compensationFactor * bloomStrength;
|
||||||
|
|
||||||
|
@ -39,14 +39,16 @@ varying vec3 vPosition;
|
|||||||
// cameraOffset + worldPosition (for large coordinates the limits of float
|
// cameraOffset + worldPosition (for large coordinates the limits of float
|
||||||
// precision must be considered).
|
// precision must be considered).
|
||||||
varying vec3 worldPosition;
|
varying vec3 worldPosition;
|
||||||
varying lowp vec4 varColor;
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
|
varying lowp vec4 varColor;
|
||||||
varying mediump vec2 varTexCoord;
|
varying mediump vec2 varTexCoord;
|
||||||
|
varying float nightRatio;
|
||||||
#else
|
#else
|
||||||
|
centroid varying lowp vec4 varColor;
|
||||||
centroid varying vec2 varTexCoord;
|
centroid varying vec2 varTexCoord;
|
||||||
|
centroid varying float nightRatio;
|
||||||
#endif
|
#endif
|
||||||
varying highp vec3 eyeVec;
|
varying highp vec3 eyeVec;
|
||||||
varying float nightRatio;
|
|
||||||
|
|
||||||
#ifdef ENABLE_DYNAMIC_SHADOWS
|
#ifdef ENABLE_DYNAMIC_SHADOWS
|
||||||
#if (defined(ENABLE_WATER_REFLECTIONS) && MATERIAL_WAVING_LIQUID && ENABLE_WAVING_WATER)
|
#if (defined(ENABLE_WATER_REFLECTIONS) && MATERIAL_WAVING_LIQUID && ENABLE_WAVING_WATER)
|
||||||
|
@ -14,14 +14,17 @@ varying vec3 vPosition;
|
|||||||
// cameraOffset + worldPosition (for large coordinates the limits of float
|
// cameraOffset + worldPosition (for large coordinates the limits of float
|
||||||
// precision must be considered).
|
// precision must be considered).
|
||||||
varying vec3 worldPosition;
|
varying vec3 worldPosition;
|
||||||
varying lowp vec4 varColor;
|
|
||||||
// The centroid keyword ensures that after interpolation the texture coordinates
|
// The centroid keyword ensures that after interpolation the texture coordinates
|
||||||
// lie within the same bounds when MSAA is en- and disabled.
|
// lie within the same bounds when MSAA is en- and disabled.
|
||||||
// This fixes the stripes problem with nearest-neighbor textures and MSAA.
|
// This fixes the stripes problem with nearest-neighbor textures and MSAA.
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
|
varying lowp vec4 varColor;
|
||||||
varying mediump vec2 varTexCoord;
|
varying mediump vec2 varTexCoord;
|
||||||
|
varying float nightRatio;
|
||||||
#else
|
#else
|
||||||
|
centroid varying lowp vec4 varColor;
|
||||||
centroid varying vec2 varTexCoord;
|
centroid varying vec2 varTexCoord;
|
||||||
|
centroid varying float nightRatio;
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_DYNAMIC_SHADOWS
|
#ifdef ENABLE_DYNAMIC_SHADOWS
|
||||||
// shadow uniforms
|
// shadow uniforms
|
||||||
@ -44,7 +47,6 @@ centroid varying vec2 varTexCoord;
|
|||||||
varying float area_enable_parallax;
|
varying float area_enable_parallax;
|
||||||
|
|
||||||
varying highp vec3 eyeVec;
|
varying highp vec3 eyeVec;
|
||||||
varying float nightRatio;
|
|
||||||
// Color of the light emitted by the light sources.
|
// Color of the light emitted by the light sources.
|
||||||
const vec3 artificialLight = vec3(1.04, 1.04, 1.04);
|
const vec3 artificialLight = vec3(1.04, 1.04, 1.04);
|
||||||
const float e = 2.718281828459;
|
const float e = 2.718281828459;
|
||||||
|
Loading…
Reference in New Issue
Block a user