我已经写了下面的着色器,以执行我的场景的明亮通过,以便我可以提取亮度,为以后模糊作为“发光”效果的一部分。
// "Bright" pixel shader.
#version 420
uniform sampler2D Map_Diffuse;
uniform float uniform_Threshold;
in vec2 attrib_Fragment_Texture;
out vec4 Out_Colour;
void main(void)
{
vec3 luminances = vec3(0.2126, 0.7152, 0.0722);
vec4 texel = texture2D(Map_Diffuse, attrib_Fragment_Texture);
float luminance = dot(luminances, texel.rgb);
luminance = max(0.0, luminance - uniform_Threshold);
texel.rgb *= sign(luminance);
texel.a = 1.0;
Out_Colour = texel;
}明亮的区域被成功地提取出来,但是在场景中有时会有一些不稳定的特征,导致像素在一段时间内不停地闪烁。当这种情况变得模糊时,效果就更加明显了,一些闪烁的微光也是如此。例如,工件出现在我发布的屏幕截图中的第三幅图像中,其中物体在阴影中,因此场景中的亮度要小得多。它们主要是从远处过渡到光,当然是在物体旋转的过程中,在那里边缘只是撞到了光。

我的问题是问,是否有一种方法,你可以检测和减轻这个阴影。注意,明亮的通行证是一个普通的向下样本的一部分,从屏幕分辨率到512x512。
发布于 2014-10-14 07:58:05
您也可以读取周围的像素,并在此基础上进行计算。
就像做here一样。
https://stackoverflow.com/questions/26341318
复制相似问题