抖动高氏阴影的顶点颜色多边形以消除条带

发布于 2024-07-06 10:49:20 字数 645 浏览 12 评论 0原文

我在 OpenGL ES 上使用 OpenGL ES。 com/iphone/" rel="nofollow noreferrer">低分辨率、嵌入式设备。

我使用顶点着色将垂直颜色渐变应用于用作渲染场景背景的大多边形。 我可以在颜色渐变中看到清晰可见的条带伪影。

我的主要经验是使用软件渲染器。 使用软件渲染器时,通常会抖动 mach band 和其他条带伪影。 我们经常在渲染帧的量化步骤中执行此操作,其中浮点、高精度颜色表示被转换为较低精度的输出(通常具有整数分量)。 我们通过随机向上或向下舍入最终整数分量来实现抖动,以便在图像中插入最微小的噪声,从而欺骗眼睛看到颜色之间连续且平滑的混合。

我的问题是我是否可以使用 OpenGL ES 来实现这一点? 这种抖动是 OpenGL 管道的一部分,还是我应该跳过顶点着色并将渐变渲染到纹理并对其应用一些噪声?

I'm using OpenGL ES on a low-resolution, embedded device.

I've applied a vertical color gradient, using vertex coloring, to a large polygon serving as a backdrop to my rendered scene. I can see clear visible banding artifacts in the color gradient.

My main experience is using software renderers. With software renderers it is common to dither away mach bands and other banding artifacts. We often do this during the quantization step of rendering a frame, where the floating point, high-precision representations of colors are transformed to a lower-precision output (usually with integer components). We achieve dithering by randomly rounding the final integer component either up or down, to insert just the tiniest bit of noise in the image with which to fool the eye into seeing a continuos and smooth blend between colors.

My question is whether I can achieve this using OpenGL ES? Is this kind of dithering part of the OpenGL pipeline, or should I skip vertex-coloring and render the gradient to a texture and apply a bit of noise to it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

诗化ㄋ丶相逢 2024-07-13 10:49:20

你试过glEnable(GL_DITHER)吗? 它通常最初是启用的,但我从未使用过 GL ES 或嵌入式设备。 它还可能取决于您在帧缓冲区中使用的颜色深度,如果每个通道只有 4 位,您将得到伪像。

Have you tried glEnable(GL_DITHER)? It's normally initially enabled, but I've never worked with GL ES or on an embedded device. It may also depend on the color depth you're using in the frame buffer, you're going to get artifacts if you've only got 4 bits per channel.

远昼 2024-07-13 10:49:20

我从来没有听说过你所描述的在 OGL 管道中的效果。 不过,我的知识在这一点上有点过时,所以我可能是错的。 如果可以的话,我会尝试渲染纹理。

I have never heard of the effect you describe being in the OGL pipe. My knowledge is a bit dated at this point, though, so I may be wrong. I'd give the render to texture a shot if you can.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文