Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/effect_downsample_frag.glsl')
-rw-r--r--source/blender/draw/engines/eevee/shaders/effect_downsample_frag.glsl30
1 files changed, 15 insertions, 15 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/effect_downsample_frag.glsl b/source/blender/draw/engines/eevee/shaders/effect_downsample_frag.glsl
index a4637b9df91..d1cb25af82f 100644
--- a/source/blender/draw/engines/eevee/shaders/effect_downsample_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/effect_downsample_frag.glsl
@@ -1,5 +1,9 @@
+
+#pragma BLENDER_REQUIRE(common_math_lib.glsl)
+
/**
- * Simple down-sample shader. Takes the average of the 4 texels of lower mip.
+ * Simple down-sample shader.
+ * Do a gaussian filter using 4 bilinear texture samples.
*/
uniform sampler2D source;
@@ -7,31 +11,27 @@ uniform float fireflyFactor;
out vec4 FragColor;
-float brightness(vec3 c)
-{
- return max(max(c.r, c.g), c.b);
-}
-
void main()
{
-#if 0
- /* Reconstructing Target uvs like this avoid missing pixels if NPO2 */
- vec2 uvs = gl_FragCoord.xy * 2.0 / vec2(textureSize(source, 0));
+ vec2 texel_size = 1.0 / vec2(textureSize(source, 0));
+ vec2 uvs = gl_FragCoord.xy * texel_size;
+#ifdef COPY_SRC
FragColor = textureLod(source, uvs, 0.0);
+ FragColor = safe_color(FragColor);
+
+ /* Clamped brightness. */
+ float luma = max(1e-8, max_v3(FragColor.rgb));
+ FragColor *= 1.0 - max(0.0, luma - fireflyFactor) / luma;
+
#else
- vec2 texel_size = 1.0 / vec2(textureSize(source, 0));
- vec2 uvs = gl_FragCoord.xy * 2.0 * texel_size;
vec4 ofs = texel_size.xyxy * vec4(0.75, 0.75, -0.75, -0.75);
+ uvs *= 2.0;
FragColor = textureLod(source, uvs + ofs.xy, 0.0);
FragColor += textureLod(source, uvs + ofs.xw, 0.0);
FragColor += textureLod(source, uvs + ofs.zy, 0.0);
FragColor += textureLod(source, uvs + ofs.zw, 0.0);
FragColor *= 0.25;
-
- /* Clamped brightness. */
- float luma = max(1e-8, brightness(FragColor.rgb));
- FragColor *= 1.0 - max(0.0, luma - fireflyFactor) / luma;
#endif
}