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

对于光线跟踪器,显然有类似的方法可以做到这一点。您分别在每个子通道上进行重构过滤。特别是如果您已经在进行光谱渲染,这似乎是一件显而易见的事情。有一篇我从未听说过的期刊的论文,似乎与之相关。但是总的来说,亚像素渲染似乎并不是一件常事。我的问题:为什么不呢?

评论

如果以纵向方向在屏幕上观看,子像素渲染的图像仍然看起来还可以吗?

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

#1 楼

这完全有可能

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

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


我不知道有任何技术原因会阻止它用于生成任意的全彩色图像。实际上,一个彩色场景将比白色文本上的黑色具有更少的明显彩色伪像,这使得颜色差异最难伪装。

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

如果您正在设计实时光线跟踪程序,并且有权检查监视器的像素几何形状,那么您可以光线追踪到特定的子像素布局。但是,只能针对单一类型的像素几何体定制可生成静态图像的脱机射线跟踪,这将使图像在任何其他像素几何体上看起来都更差。您可以通过渲染一组不同的图像并在以后将其显示在特定类型的显示器上时选择合适的图像来解决此问题。
因此,没有理由不能为光线跟踪器开发亚像素渲染,但这意味着要考虑到监视器的一个未知的方面。要记住的另一件事是,您将针对不断萎缩的市场开发此软件。子像素渲染对于分辨率相对较低的屏幕很有用。随着越来越多的屏幕(甚至是移动屏幕)接近高分辨率,以至于人眼无法检测到亚像素渲染带来的差异,您的工作可能比实际用途更具理论意义。

评论


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

$ \ begingroup $
@AlanWolfe是的,但渲染成本也要高3倍
$ \ endgroup $
– joojaa
15年9月3日在18:36

$ \ begingroup $
是的,是的,是的。在某些情况下这不是问题。例如,我知道几种算法,您不需要在每一帧中为每个像素拍摄光线。看来这也可能在光栅化图形中起作用。再次,我不相信彩色亚像素渲染是真的,但我知道,如果! :P
$ \ endgroup $
–艾伦·沃尔夫(Alan Wolfe)
15年9月3日在18:39

$ \ begingroup $
@AlanWolfe我不明白您的疑问。所有图像已经使用子像素进行渲染,但是颜色未对准像素的三分之一到一半。我看不到如何校正错位将无法产生更高质量的图像。您是否有任何特定的问题(可能是一个很好的问题...)?
$ \ endgroup $
– trichoplax
2015年9月3日19:10



$ \ begingroup $
@joojaa没有理由将其渲染成本提高3倍。您无需拍摄3倍的光线;在将光线累积到帧缓冲区中时,只需应用3种不同的权重。实际上,您为每个颜色通道使用了不同的抗锯齿内核。
$ \ endgroup $
–内森·里德(Nathan Reed)
2015年9月3日23:02



#2 楼

当然,您可以对任意图像使用亚像素渲染。但是,子像素渲染实际上是一种通用的2D图像处理技术-它与光线跟踪没有任何关系。您也可以将其与其他任何3D渲染方法一起使用,甚至可以与简单的2D绘图,照片甚至视频一起使用。确实将最好分开处理的两个不同的问题域合并在一起。唯一相关的联系是,如果您要实时跟踪光线并知道要使用亚像素渲染在屏幕上绘制结果图像,则可以使用此信息来优化像素密度(和宽高比)中间图像的比例(例如,对于典型的RGB LCD屏幕使用3倍的水平像素密度)。


潜在的混乱根源可能是,在当前的计算机系统上,子像素渲染是通常仅用于文本,通常集成到字体渲染代码中。造成这种情况的主要原因可以说是历史原因,但也是最大的收获(就视觉改善和可读性而言)的地方。矢量形状,将子像素渲染集成到字体渲染器中提供了一些额外的优化机会,而不仅仅是将文本渲染到高分辨率缓冲区中,然后对其进行后处理。

,我完全希望最终,因为随着技术的成熟,我们将转向一个系统,其中亚像素渲染仅由GPU透明地完成,或者可能由屏幕本身透明地完成。此功能可以处理较小的物理像素,并且形状不一定与“逻辑像素”相同。但是再说一次,我们已经朝着高DPI屏幕的方向发展。)

评论


$ \ begingroup $
Tervetuloa!是的,您的观点是正确的,我想说系统或硬件必须这样做,因为只有将来系统才能意识到屏幕的方向和屏幕上的颜色组织。屏幕本身最好可以做到这一点。
$ \ endgroup $
– joojaa
2015年9月4日在17:17