2014-04-04 92 views
1

我开发了一个OpenGL项目,使用旧的GL_QUADS渲染,而不是使用着色器。双射线插值线性插值

我想平均我的光能传递解决方案的颜色。我每面都有一些补丁。我做了什么:

我平均了面部内相邻贴片的颜色。我得到了很好的结果,但仍然有一些马赫带效应。

虐待试图解释我做了什么:

// ___________________ 
// |v3  v2|v3  v2| 
// |   |   | 
// |   |   | 
// | 2 | 3 | 
// |   |   | 
// |v0_____v1|v0_____v1| 
// |v3  v2|v3  v2| 
// |   |   | 
// |   |   | 
// | 0 | 1 | 
// |   |   | 
// |v0_____v1|v0_____v1| 

每个补丁有一个颜色。补丁0,补丁1,补丁2和补丁3.补丁的顶点与补丁颜色相同。然后我通过用相邻色块的颜色平均来更改顶点颜色。所以起初,我得到了补丁0和补丁1的颜色,将它们加在一起然后除以2,然后我将这个新颜色设置为补丁0的顶点1和补丁1的顶点0.

但是,我看到他们得到不同结果的论文。

enter image description here

在这个形象,他那种试图解释他是如何得到这些值。但我不明白。他做的和我做的事情非常相似,但我认为他确实摆脱了比赛乐队的影响。

我得到的结果是这样的:

enter image description here

这是导致我与我的光能传递渲染得:

enter image description here

这是导致我与我的插值方法获得:

enter image description here

它确实得到了更加流畅,但我仍然有巨大的乐队效果

+1

“我看到一篇论文,他们得到了不同的结果。” - 你可以提供论文的名字吗? – Danvil

回答

1

我不明白图8a试图完成,但你的实现对我来说听起来很合理。

您看到的文物不是您插值的问题,但是由于您在平面上具有低对比度颜色渐变的事实。

例如,如果RGB颜色从​​(100,0,0)变为(110,0,0)超过100像素,则在红色通道中,每十个像素颜色变化1。由于您的场景非常简单,因此这些边缘会延伸到图像的较大部分。人类的大脑非常擅长检测它们,所以瞧。

也许唯一的办法是使用更复杂的场景,使用纹理或使用带有一些人造小噪声的fragement-shader。