gpt4 book ai didi

graphics - 有没有光栅化或光线追踪的渲染替代方案?

转载 作者:行者123 更新时间:2023-12-03 21:02:53 34 4
gpt4 key购买 nike

光栅化(三角形)和光线追踪是我遇到的渲染 3D 场景的唯一方法。还有其他人吗?另外,我很想知道任何其他真正“外在”的 3D 方法,例如不使用多边形。

最佳答案

啊!这些答案是非常不知情的!

当然,问题不准确也无济于事。

好吧,“渲染”是一个非常广泛的话题。渲染中的一个问题是相机可见性或“隐藏表面算法”——找出在每个像素中看到的对象。可见性算法有多种分类。那是 可能 海报问的是什么(鉴于他们认为这是“光栅化”和“光线追踪”之间的二分法)。

一个经典的(虽然现在有些过时)分类引用是 Sutherland 等人的“A Characterization of Ten Hidden-Surface Algorithms”,ACM Computer Surveys 1974。它已经过时了,但它仍然非常适合提供思考如何对此类算法进行分类的框架.

一类隐藏表面算法涉及“光线转换”,即计算从相机通过每个像素的线与对象(可以具有各种表示形式,包括三角形、代数表面、NURBS 等)的交点。

其他类别的隐藏表面算法包括“z 缓冲区”、“扫描线技术”、“列表优先级算法”等。在没有太多计算周期和没有足够内存来存储 z 缓冲区的时代,他们在算法方面非常有创意。

如今,计算和内存都很便宜,因此三种技术几乎胜出:(1) 将所有东西切成三角形并使用 z 缓冲区; (2) 射线转换; (3) Reyes-like 算法,使用扩展的 z-buffer 来处理透明度等。现代显卡做#1;高端软件渲染通常是 #2 或 #3 或组合。尽管已经提出了各种光线追踪硬件,有时也构建了,但从未流行起来,而且现代 GPU 现在已经足够可编程,可以实际进行光线追踪,尽管与硬编码光栅化技术相比,在速度上存在严重的劣势。多年来,其他更奇特的算法大多被搁置一边。 (尽管各种排序/拼贴算法可用于体积渲染或其他特殊目的。)

“光栅化”实际上只是意味着“找出对象所在的像素”。惯例规定它不包括光线追踪,但这是不稳定的。我想你可以证明光栅化回答“这个形状重叠的像素”而光线追踪回答“哪个对象在这个像素后面”,如果你看到差异的话。

那么,隐藏表面去除并不是“渲染”领域唯一需要解决的问题。了解每个像素中可见的对象只是一个开始;您还需要知道它是什么颜色,这意味着有一些计算光线如何在场景中传播的方法。有一大堆技术,通常分为处理阴影、反射和“全局照明”(在对象之间反弹,而不是直接来自灯光)。

“光线追踪”意味着应用光线转换技术来确定阴影、反射、全局照明等的可见性。可以对所有事物使用光线追踪,或者使用各种光栅化方法来获得相机可见性和光线追踪用于阴影、反射、和GI。 “光子映射”和“路径追踪”是用于计算某些类型的光传播的技术(使用光线追踪,所以说它们在某种程度上从根本上是一种不同的渲染技术是错误的)。还有一些不使用光线追踪的全局照明技术,例如“辐射度”方法(这是一种解决全局光传播的有限元方法,但在该领域的大部分领域最近已经失宠)。但是使用光能传递或光子映射进行光传播仍然需要您以某种方式制作最终图片,通常使用标准技术之一(光线转换、z 缓冲区/光栅化等)。

提到特定形状表示(NURBS、体积、三角形)的人也有点困惑。这是光线追踪与光栅化的正交问题。例如,您可以直接对 nurb 进行光线跟踪,也可以将 nurb 切成三角形并对其进行跟踪。您可以直接将三角形光栅化到 z 缓冲区中,但您也可以直接按扫描线顺序光栅化高阶参数曲面(参见 Lane/Carpenter/etc CACM 1980)。

关于graphics - 有没有光栅化或光线追踪的渲染替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/779550/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com