首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL场景中“亮部分”的提取与闪烁

OpenGL场景中“亮部分”的提取与闪烁
EN

Stack Overflow用户
提问于 2014-10-13 13:35:16
回答 1查看 892关注 0票数 0

我已经写了下面的着色器,以执行我的场景的明亮通过,以便我可以提取亮度,为以后模糊作为“发光”效果的一部分。

代码语言:javascript
复制
// "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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-14 07:58:05

您也可以读取周围的像素,并在此基础上进行计算。

就像做here一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26341318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档