光线跟踪器的子像素渲染


16

在字体渲染中,通常使用subpixel渲染。这里的基本思想是将像素分解为RGB分量,然后分别计算每个像素的值。由于每个分量都小于整个像素,因此可以实现更高质量的抗锯齿。

对于光线跟踪器,显然有类似的方法可以做到这一点。您分别在每个子通道上进行重构过滤。

但是,令我感到惊讶的是,我确实找不到这样做的射线追踪器的参考。特别是如果您已经在进行光谱渲染,这似乎是一件显而易见的事情。有一篇我从未听说过的期刊的论文,似乎与之相关。但是总的来说,亚像素渲染似乎并不是一件常事。我的问题:为什么不呢?


如果以纵向方向在屏幕上观看,子像素渲染的图像是否仍然可以看起来不错?
jamesdlin

作为一名工程师,我永远都不会同意实施这样一个...破碎的想法。除我确定显示器完全固定之外。就像iPhone 5S的应用程式一样。使用此技术时,会使用相反的图案或不同的排列方式从屏幕生成破碎的图像。
v.oddou 2015年

Answers:


14

这完全有可能

尽管差异可能不会特别明显,但我希望采样时会考虑到精确的像素几何形状,以使图像更准确。您只需要根据该颜色子像素的(平均)位置偏移每个颜色分量的像素中心即可。注意,并非所有像素布局在像素和子像素之间都具有一一对应的关系。

例如,penTile RGBG的绿色子像素是红色和蓝色的两倍,如Wikipedia上的图像所示:

关闭RGBG像素几何的图像

我不知道有任何技术原因会阻止该技术用于生成任意全彩图像。实际上,与白色文本上的黑色相比,彩色场景的伪影要少得多,这使得颜色差异最难伪装。

字体按需渲染

渲染光线追踪场景和渲染字体之间的相关区别在于,字体倾向于按需渲染,并且可以考虑使用的屏幕。与此相反,通常会预先渲染光线跟踪的场景,然后将其显示在许多不同类型的屏幕上(具有不同的像素几何形状)。例如,在网页上显示光线跟踪的图像将阻止将其定制为特定的监视器类型。

如果您正在设计实时光线跟踪程序,并且有权检查显示器的像素几何形状,则可以将光线跟踪到特定的子像素布局。但是,只能针对单一类型的像素几何体来定制生成静态图像的脱机射线跟踪,这将使图像在任何其他像素几何体上看起来都更差。您可以通过渲染一组不同的图像并在以后将其显示在特定类型的监视器上时选择合适的图像来解决此问题。

不可能有长期利益

因此,没有理由不能为光线跟踪器开发亚像素渲染,但这意味着要考虑到监视器的一个并非总是已知的方面。要记住的另一件事是,您将针对不断萎缩的市场开发此软件。亚像素渲染对于分辨率相对较低的屏幕很有用。随着越来越多的屏幕(甚至是移动屏幕)接近高分辨率,以至于人眼无法检测到亚像素渲染带来的差异,您的工作可能比实际用途更具理论意义。


3
扮演魔鬼的提倡者,如果可能的话进行彩色亚像素渲染(我很怀疑!),这似乎在VR场景中很有用,因为他们需要足够的分辨率。也许也可以在(非视网膜?)电话或桌子上使用?
艾伦·沃尔夫

1
@AlanWolfe是的,但渲染的价格也要高3倍
joojaa

是的,这是真的。在某些情况下这不是问题。例如,我知道几种算法,您不需要在每一帧的每个像素上都拍摄光线。看来这也可能在光栅化图形中起作用。再次,我不相信彩色亚像素渲染是真实的,但是我知道,如果!:P
艾伦·沃尔夫

@AlanWolfe我不明白您的疑问。所有图像已经使用子像素进行渲染,但是颜色未对齐三分之一到一半像素。我看不到如何校正这种失准将无法产生更高质量的图像。您是否有任何具体问题(可能会引起一个很好的问题...)?
trichoplax

3
@joojaa没有理由将其渲染成本提高3倍。您无需拍摄3倍的光线;在将光线累积到帧缓冲区中时,只需应用3种不同的权重。实际上,您为每个颜色通道使用了不同的抗锯齿内核。
内森·里德

9

当然,您可以将亚像素渲染用于任意图像。 但是,子像素渲染实际上是一种通用的2D图像处理技术-它与光线跟踪没有任何关系。您也可以将其与任何其他3D渲染方法一起使用,甚至与简单的2D绘图,照片甚至视频一起使用。

因此,我想说的是“用于射线追踪的亚像素渲染”实际上是将最好分开处理的两个不同的问题域混合在一起。唯一相关的联系是,如果您要实时跟踪光线并知道要使用亚像素渲染在屏幕上绘制结果图像,则可以使用此信息来优化像素密度(和宽高比)比率)(例如,对于典型的RGB LCD屏幕使用3倍的水平像素密度)。


可能造成混乱的原因是,在当前的计算机系统上,子像素渲染通常仅用于文本,并且通常集成到字体渲染代码中。造成这种情况的主要原因可以说是历史原因,但这也是最大的收益所在(就视觉改善和可读性而言)。

此外,由于文本倾向于由简单且重复的矢量形状组成,因此将子像素渲染集成到字体渲染器中提供了一些额外的优化机会,而不仅仅是将文本渲染到高分辨率缓冲区中,然后进行后处理。

也就是说,我完全希望最终随着技术的成熟,我们将转向一个系统,在该系统中,亚像素渲染仅由GPU透明地完成,或者可能由屏幕本身透明地完成。

(这很可能要求应用程序要充分利用此功能来处理较小的物理像素,并且形状不一定与“逻辑像素”相同。但是再说一次,我们已经在高DPI屏幕的方向。)


Tervetuloa!是的,您的观点是正确的,我想说系统或硬件必须这样做,因为只有将来系统才能意识到屏幕的方向和屏幕上的颜色组织。屏幕本身最好可以做到这一点。
joojaa
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.