CN109741437B - 用于进行渲染的方法和装置 - Google Patents
用于进行渲染的方法和装置 Download PDFInfo
- Publication number
- CN109741437B CN109741437B CN201910019117.7A CN201910019117A CN109741437B CN 109741437 B CN109741437 B CN 109741437B CN 201910019117 A CN201910019117 A CN 201910019117A CN 109741437 B CN109741437 B CN 109741437B
- Authority
- CN
- China
- Prior art keywords
- volume
- query
- scene
- ray
- records
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/60—Shadow generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2215/00—Indexing scheme for image rendering
- G06T2215/06—Curved planar reformation of 3D line structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2215/00—Indexing scheme for image rendering
- G06T2215/12—Shadow map, environment map
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本公开的实施例涉及用于进行渲染的方法和装置。渲染系统将点采样和体积采样操作进行结合来产生渲染输出。为了确定3D场景内的曲面位置的颜色信息,在该曲面位置周围的体积内进行点采样操作,并且在距离该曲面位置更远处进行体积光传输数据的采样操作。在点采样与体积采样之间提供过渡区,在其中进行点采样操作和体积采样操作。在确定该曲面位置的颜色信息中混合从点采样与体积采样操作获得的数据。为了对另一曲面与光线之间的有待着色的相交进行标识,通过针对每个点样本对该光线进行追踪来获得多个点样本,并且从嵌套的3D体积元素栅格获得多个体积样本,这些栅格表达了不同粒度等级下的光传输数据。
Description
相关申请引用
本申请是申请号为201410096436.5、申请日为2014年3月14日、发明名称为“使用点采样和预计算光传输信息进行的渲染”的发明专利申请的分案申请。
技术领域
以下涉及来自虚拟3D场景的渲染。
背景技术
使用光线追踪对来自3D场景的图像进行渲染是基于对渲染方程进行求值,渲染方程包括对不同光行为进行建模的多个嵌套积分,并且难于对其进行分析求解。因此,可以使用对这些方程进行求值的非分析方法。一套逼近渲染方程的成功方法是使用采样技术。在多个可以随机地确定的离散值下对积分进行求值以从样本得出积分的概率性估值。
发明内容
在一个方面中,混合渲染系统使用光线追踪和体积地散布在3D空间内的光传输数据的采样。例如,一种用于在来自虚拟3D场景的渲染中使用的方法包括在一个方向上从3D场景的一个点直到过渡区的最大距离对光线进行追踪。如果针对该光线,没有在比过渡区的最小距离更近的距离处检测到相交,则该方法使圆锥截面沿着光线的方向前进穿过3D场景中的3D体积元素栅格。每个体积元素与表示传播通过该体积元素的曲面的光能量的数据相关联。基于扩展因数和3D场景中的点到当前采样点的距离确定前进的圆锥截面的面积。在前进过程中从与圆锥截面相交的体积元素收集光能量数据,并且针对3D场景中的该点自从体积元素收集的光能量中产生光照信息。在一些方面中,多种方法可以让用于每条发射光线的圆锥体(其对圆锥截面进行定义)前进。每个圆锥体可以沿着对应光线的方向轴向地定中心。圆锥体可以在距离光线原点最小距离处开始前进,并且可以根据光线的特征确定该最小距离。
在圆锥体前进过程中访问对光能量传播进行描述的数据。这种数据可以表达与从对应体积元素传播的光能量相关联的方向和强度数据。这种光能量可以包括源自体积元素的光和传播通过该体积元素的光(并且可以根据这种体积元素内包含的对象的特征对光进行修改)。例如,每个3D栅格元素可以是一个立方体,并且该立方体的每个面可以具有光方向以及与光方向相关联的强度数据。给定栅格的每个立方体包含一个体积,该体积包含在一个或多个更大的栅格元素(最大元素除外)内。更细粒度的元素展示3D场景中的更小的体积并且更精确地展示光方向和颜色强度数据,因为较粗粒度的元素包括多个更细粒度元素的方向和颜色强度数据的混合。可以通过对来自每个光源的一条或多条光线进行正向追踪并根据正向追踪的结果将离散的光能量记录存放在3D场景中来产生光传输数据。例如,正向追踪可以对3D场景中的几何体之间与正向追踪光线之间的相交进行检测,并且其可以引起存放具有根据该曲面的特征确定的特征的光能量记录。在将这些光能量记录存放在该场景内之后,可以根据将表达该数据所用的一种或多种特定格式来处理这些记录。这些光能量记录还可以用于多种目的,包括提供光子地图供光子查询中使用。
另一方面涉及一种用于为3D渲染提供全局光照数据。该系统包括光能量记录的集合,其中每条记录在3D场景中具有一个位置并且包括与3D场景的一部分中的光能量传输相关的数据。该系统包括一个可操作用于接收对3D场景的子部分进行定义的查询的查询解析器,光能量传输数据将返往该子部分。该查询解析器可操作用于搜索光能量记录集合以对该3D场景的子部分内的记录进行标识和将抽象过程应用于所标识的记录上以便为查询产生抽象结果,并返回该抽象结果。例如,可以将该抽象结果返回至在处理器上执行的着色程序模块。该着色程序模块可能已经发出该查询。可以通过固定或有限功能电路实现该查询解析器,该电路被耦合耦合成用于在着色过程执行的过程中从执行机器代码的处理器接收对解决方案的查询,该机器代码使用来自这些查询的结果。
该抽象过程会涉及到将多个抽象函数应用到所标识的记录上,其中,该多个抽象函数中的每个抽象函数将不同的相对权重集合应用到所标识的记录上。可以针对对应的预先确定数量的记录对该多个抽象函数中的每个抽象函数进行调谐。该抽象过程会涉及到对所标识的多个记录进行计数,并当所计数的标识记录数量在那两个抽象过程的记录的对应的预先确定数量之间时在两个抽象过程的结果之间进行内插。
可以用能够配置有从多个预定义程序之间选定的程序的程序执行单元来实施查询解析器,以实施抽象过程。查询解析器可以可操作用于使用定义的步长来执行光线的前进。查询解析器中的执行单元可以可配置用于沿着该前进在每个点处对函数进行求值。可以通过对有待前进的光线进行定义的光线数据结构来对该函数进行标识。可以通过有待使光线前进所在的包围体内的几何体对该函数进行标识。查询可以包括方向指示,并且查询解析器可以使用该方向指示来对光能量记录中的光能量传输的方向进行比较,并排除不符合该查询中的方向指示的记录。
查询解析器可以基于到查询所定义的轨迹(locus)的相对距离来产生所标识的记录的排序。查询解析器可以将加权函数应用到每条记录上,该加权函数使用该记录在排序中的位置来确定有待应用到该记录中的光能量传输数据上的权重。
查询可以包括一个参数,并且查询解析器可以可操作用于根据该查询内的参数来对抽象过程进行配置。查询可以包括一个对该查询的查询解析器有待应用的(从多个预定义抽象过程中选出的)抽象过程进行的指示。查询可以具有用于有待在为所标识的每条记录生成相对加权重中使用的函数的信息,以便产生抽象结果。例如,该查询可以选择一个多项式和用于该多项式的系数,其中,当以来自该查询中指定的轨迹的递增距离顺序对记录进行标识时,则递增地对该多项式进行求值。本披露的各方面涉及通过这种查询解析器实施的方法和通过结合了这种查询解析器的系统实施的方法。
附图说明
图1描绘了使用光线追踪和体积渲染输入的混合渲染系统的各组件;
图2和图3描绘了使用体积元素的栅格来定位3D空间中的光能量表征信息的各方面;
图4描绘了可以用于在3D场景中对光线进行追踪的几何体加速结构;
图5至图7描绘了体积元素栅格内的混合光线追踪和圆锥体前进的示例的2D视图;
图8描绘了一种产生包含光能量表征信息的体积元素栅格的示例方法;
图9和图10描绘了混合光线追踪和体积光能量估算的示例方法,例如用于确定用于3D场景中的多个点的着色信息或正在产生的渲染的像素;
图11描绘了图9和图10的更多特定示例的进一步概括;
图12描绘了一个处理系统的示例,在其中可以实现所披露的各方面;
图13描绘了一种示例查询解析器系统;
图14描绘了位于体积元素内的光能量记录;
图15描绘了一种响应于最近的邻近查询而确定记录集合的方法的各方面;
图16描绘了可以应用于有待响应于给定查询而确定的记录的数据的多条加权曲线;
图17描绘了光记录的递增距离排序,涉及响应于查询而从记录中抽象数据;
图18描绘了混合函数,并且查询针对记录集合内的多种不同的记录特征可以具有不同的相对加权或优先性;
图19描绘了一种用于查询解决的示例系统,该系统具有多个查询解析器,每个查询解析器可以具有用于执行指定功能的有限可编程性电路;
图20描绘了一种被视为响应于查询而从记录中抽象数据的示例过程;
图21描绘了抽象过程的一个示例;以及
图22描绘了根据本披露执行查询解决和数据抽象的系统内的示例数据流。
具体实施方式
光线追踪可以从3D场景清晰度上产生生动且详细的图像,并且可以用来对复杂的光行为和效应进行建模。光线追踪此处用作一种用于为3D场景的各部分对光传输数据进行采样或开发的采样技术,这些部分距离为其获得着色信息的点相对近。在此,当样本来自距离光线原点相对近的点时,将不像从距离光线原点较远的点获得的样本那么嘈杂,因为从其中获得样本的空间的体积随着距离原点的距离的增大而增大。如果样本具有3D场景的距离光线的原点相对远的多个部分,可以在相对低的采样密度(如将产生噪声图像的采样密度)下进行光线采样。保持相对低的采样密度允许较低的光线追踪计算成本。
结合本光线追踪方法,进行与3D场景的距离光线原点较远(例如,在光线被追踪所到的最大距离以外)的多个子部分相关联的离散光传输记录的采样(以下进行了解释)。由于一处或多处光线相交和来自光线传输记录的数据两者引起的着色中的一个或多个的结果都可以用来得到最后的着色结果。
更详细地,光线追踪涉及对在3D场景中行进的光线与曲面之间的相交进行标识。然后,可以对该曲面进行着色以产生将用来确定从中发射光线的曲面的特征的点样本。对光线的相交进行标识会是一项计算上昂贵的操作。为了在计算上更加高效地进行相交测试,可以提供在3D场景中具有多个包围着曲面(其可以由图元形成)的各个部分的元素的几何体加速结构。例如,几何体加速结构可以包括一个轴对准包围盒的分层树,这些包围盒以叶节点结束,这些包围盒共同包围着形成3D场景中的曲面的所有图元。该几何体加速结构用来对可以与光线相交的更小曲面集合进行标识;因此,首先贯穿该加速结构对光线进行遍历,并且然后对光线进行与仍然是与该光线相交的候选者的任何曲面的相交测试。
一种提供用于对3D场景中的预先确定的空间体积内的光传输信息进行预计算的方法可以用来在这种3D场景的不同部分中对光传输信息进行表征。在渲染过程中,可能期望确定到达3D场景中的给定点处的光能量的特征,并且可以使用预计算的光传输信息。如以下解释的,体积元素栅格可以提供一种使具体光信息与3D场景的具体部分相关联的方式。
体积元素栅格的示例是对3D场景进行填充的“封装”体积集合,所述“封装”体积典型地具有均匀的形状。例如,可以封装给定维数的立方体的集合来填充3D场景。在一些情况下,可以限定多个体积元素栅格多次对3D场景进行填充。例如,可以使用多个体积元素栅格来填充该场景,每个栅格分别具有给定维度的立方体的集合。在功能上,这意味着一个栅格中的较大立方体将具有其中包含的较小尺寸的不同栅格的多个立方体(例如,如果沿着每一维将一个元素分开,则将产生8个组成元素)。然而,并非沿着从较大至较小体积元素的链路或路径对这些体积元素栅格进行遍历。而是在从一个点(例如,光线的原点)的前进过程中在穿过3D场景的方向上访问这些体积元素,并且对来自前进过程中相交的体积元素的数据进行访问。当多个不同大小的栅格填充3D场景时,可以在3D场景中有待进行采样所在的每个位置处向样本选择体积元素的具体大小。可以通过对预定义形状(例如,圆锥体)进行与体积元素序列的重叠测试来进行前进。体积元素可以重叠,如当所测试的体积元素的大小变化时。
举例来讲,可以产生一个体积元素集合,范围从小元素到包括较小元素的较大元素。每个体积元素可以是规则的6边形(例如,立方体)。该形状的每个面可以使行进穿过该面的光参数化。包括其他体积元素的体积元素将会与表示每个所包括的体积元素的光传输信息的混合的数据相关联。因此,每个体积元素可以使用相同的数据量来表示光传输信息,从而为在不同程度特异性下可用的给定空间体积产生光传输信息。换言之,可以产生多种大小的嵌套体积元素集合,如位于3D场景空间内的紧密封装的立方体元素(与被定位成和大小确定成用于包围场景几何体的体积元素的稀疏树形成对照),其中,每个体积元素包括从该体积元素的每个面发出的光线的表征。较大的体积元素表示来自位于其内的多个较小体积元素中的每个元素的光发射,但没那么精确。
在创建体积元素之后,体积元素可以用于通过使来自摄像机的圆锥截面或3D场景内的曲面相交以及对来自在该圆锥截面的路径上遇到的所有体积元素面的光发射进行收集从而进行渲染。离该圆锥体(在每个采样位置处截取其圆锥截面)的原点越近,则访问越小的体积元素并且使用光发射信息,而距离该原点越远,则访问越大的体积元素。对这种一个或多个体积元素进行采样的一个特征在于,体积元素结构内的每个较远的层次会需要八倍更大的内存(其中,在对于不同维度而言是同质的栅格内对每一维进行等分)。因此,不仅需要绝对的内存大小来存储增加的体积元素集合,而且渲染过程中所需的内存带宽也将增加,因为对更多的小体积元素进行采样比对更少的大体积元素进行采样需要更大的内存带宽(保持用于表示相关光照信息的数据量恒定)。因此,在层级中具有更多的层将产生更精确的结果,但引起高内存成本。此处的圆锥体是指一种围住体积的形状,并且其在垂直于该形状的纵轴的方向上具有递增的横截面面积,因为该形状在该轴上变得越来越细长。在一些情况下,该圆锥截面可以是绕着这种轴是对称的。在此,圆锥截面(体积的横截面)并不暗示这种横截面具有任何特定的形状。例如,该圆锥截面可以是圆形、椭圆形、矩形等。
在以下披露中,披露了使用点采样和体积采样技术两者(例如,光线追踪和体积元素采样)以便确定3D场景中的一个位置处的光照信息的示例。作为以下内容的总结,针对被限制到点的阈值距离内的一个或多个样品进行点采样。例如,可以对光线进行追踪以在点的阈值距离内确定相交(如果有的话)。在该阈值距离以外,可以执行体积采样。在一个示例中,通过使圆锥截面前进穿过体积元素的栅格来进行体积采样。可以根据到所述点的距离来确定所采样的体积元素的大小。还可以根据与圆锥体相关联的扩展因数选择这种大小,其中,该扩展因数作为距离的函数对圆锥体扩展速度进行指示。
图1描绘了混合光线追踪系统10的功能元件。系统10包括一个光线定义数据源12,该数据源向光线相交测试模块14提供输入。光线相交测试模块14还具有作为输入端的加速结构15和3D场景数据的一个或多个来源19。光线相交测试模块14将相交测试结果传至光线相交着色模块29。光线相交着色模块29将着色结果输出至样本缓冲区17。
体积渲染过程27通过体积数据访问模块25接收从体积元素获得的光传输信息。如以下更加详细描述的,体积数据访问模块25可以从光能量记录21和从体积栅格存储器23中的一个或多个接收输入,该光能量记录或该体积栅格存储器包含光传输数据。栅格生成器22可操作用于产生可以存储在栅格23或从其中提供的体积元素栅格。图1还描绘了可以提供光子查询过程28用于对存储为光子地图20的光子地图进行查询。可以结合体积元素栅格23的产生来产生光子地图20,作为用光能量记录21执行的处理的进一步的产物。体积渲染过程27可以用作一个用于体积采样任务的控制器,并控制有待对哪些体积元素进行采样,以及还对从这种采样中接收的结果进行处理。
图2描绘了体积元素栅格40,其中特别地对这些体积元素之一41进行了标识。图3描绘了体积元素栅格43,这些体积元素具有比栅格40更小且密度更大的体积元素。由于栅格43包含比栅格40更小的元素,所以栅格43中的多个元素可以存在于栅格40的一个元素内。图2和图3并不暗示栅格41和43的体积元素是分层的,或者体积元素41与占用体积元素41的多个部分的体积元素之间存在关系,(例如,并不暗示从较大的元素到较小的元素对这些栅格进行遍历,在被较大元素包含的体积内,而分层加速结构可能是这种情况)。
在图3中,特别地对体积元素50-52进行标识。体积元素与光传输表征数据相关联。用于给定体积元素的光传输表征数据对来自该元素的光能量的传输进行表征,可以在该体积元素内生成这种光能量,或者光能量可以源自该元素以外。在一个实现方式中,每个体积元素可以与来自该体积元素内的曲面的能量辐射的一条或多条记录相关联。可以基于从发射源开始的正向追踪来对这种辐射能量进行表征。
举例来讲,这种数据可以表示穿过体积元素的特定面的光传输。为了描述的清晰性,图3示出了元素50具有面90,该面与光传输表征82相关联。光传输表征82可以包括关于从元素50内部发射到元素50的外部的光的信息。光传输表征82还可以包括关于行进到元素50、穿过面90两者的信息,并且反之亦然。针对元素51的面91对类似的光传输表征83进行了标识。针对元素51的其他面示出了光传输表征84和85。在一个示例中,光传输表征81是一种较粗粒度的光传输表征。这种光传输表征81-85可以包括关于光方向性、光的颜色和强度的信息。该数据可以包括一条或多条方向和在那些方向的每个方向上行进的光能量的量化。光传输表征可以对在仅一个方向上(例如,在体积外)、在方向的一定范围上行进的、以及双向的光传输进行表征。在其他实现方式中,可以提供对光能量在每个面的曲面上的图案或分布进行定义的统计分布或曲线。
在一个示例中,可以使用同一分布函数提供光能量的分布,其中可以为每个表征完成各参数。可以根据发射的实际光能量来拟合该图案或分布。在一些示例中,一种单类型图案具有一个或多个可以针对每个面而被调谐的参数,并且然后选择那些参数用来与实际分布尽量匹配。如所解释的,光能量传播通过体积元素的多个面的关联性是一个示例,因为对这种体积元素内的光传输进行表达可能有多种方式。通常,将以一种允许对沿着圆锥体前进的光传输进行求值的方式来表达这种光传输。
体积元素41进而包括体积元素43,图3中描绘了其中(8个中的)4个。图3还描绘了该几何体,如图元45-46和形状47位于如体积元素43占用的同一体积内,即使可能没有对哪个这种几何体位于给定体积元素内进行指示的逻辑链接或连接。
在一个示例中,每个体积元素集合具有在3D场景中的均匀分布,因为该集合的体积元素被安排在一个规则的、非稀疏的结构内。光线追踪中使用的许多种类的数据结构是规则的,并且其被设计用来减少表示数据结构所需的存储空间。在一个方面中,每个集合内的体积元素在预先确定的对应位置中,并且每个体积元素与表示该体积的边界内的光能量的数据相关联(“包含”)。相比之下,用于在3D场景中抽象出(abstract)用于对光线进行相交测试中使用的几何体的加速结构具有根据该场景内的该几何体而定位和确定大小的体积元素。
对从灯到3D场景内的光能量进行正向追踪可以用于确定将在每个体积元素内展示的光能量。正向追踪可能涉及对来自每个光源的光线进行追踪,并且针对光线相交的每个地方,将存放表示光能量的数据。这种存放是附加的,因为随着存放更多的光能量,3D场景将变得更亮。这种正向追踪与光子贴图具有一些相似性,因为光子贴图也涉及到从灯进行正向追踪。然而,光子贴图提供一种当存放光子时保持场景内的光能量的总量恒定的规范化操作。该规范化操作产生具有多个光子的曲面,这些光子与光如何与该曲面相交的相对复杂程度相关。例如,无光涂墙可能仅存放了一些光子,而玻璃面的小平面可能具有许多光子。在一些方法中,最精细的体积元素栅格(例如,带有最小元素的栅格)可以具有大约个2^24量级的元素,其可以被表达为根下方的8个层次。如果在没有使用光线追踪的情况下使用体积元素栅格,则最细小的栅格可能需要大约2^40量级的元素,或在栅格结构的最细粒度等级下具有大约32000倍更多的量级下的栅格元素。这些示例是非限制性的,但是定性的。
图4描绘了一个示例几何体加速结构101,可以用存储在加速结构存储器15内的数据表示。几何体加速结构101包括一个与子元素104-106相关联的根元素102。每个子元素104-106进而可以与子元素107-109相关。此关系链可以继续,直到到达叶节点110-112的集合。在一些实现方式中,每个元素包围着3D空间的一部分,其中存在一个或多个几何体元素。在一些实现方式中,几何体加速结构101是稀疏的,从而使得3D场景中的不包含几何体的区域没有几何体加速结构元素。此外,每个加速结构元素(除了根)与一个或多个父元素、以及一个或多个子元素相关。多个子元素可以与同一个父元素相关,并且多个父元素也可以与一个单个子元素相关。举例来讲,父节点包围着空间的一给定子部分,该子部分内存在几何体的某些部分,并且子节点包围着该父节点中的几何体的选集。几何体加速结构可以具有在根与每个叶之间带有不同数量节点的分支,可以不具有显式定义的根,可以具有被仅包围图元或包围其他节点的节点所包围的所有图元。如此,图4就几何体加速结构的实现方式而言是示例性的并且是非限制性的。
例如,用于包围场景几何体的加速结构可以包括一个轴对准包围盒树(树在这里是指从该树中的起点到另一点进行遍历所可以沿着的元素之间存在一定关系)。例如,轴对准包围盒树可以是分层的,并且使该层级的叶节点包围所有几何体。加速结构的其他示例包括K-D树和球体层级。在功能上,可以通过以下步骤对分层加速结构进行遍历:在可以包围所有场景几何体的根节点处开始(作为整个3D场景的范围,该根节点可以是隐式的),并且然后找出该根节点的所有子节点,对它们进行相交测试,并且然后按照相同模式继续对所有与光线相交的子节点的分支进行遍历。因此,在对几何体的加速结构进行遍历中,可以在3D场景的多个不同部分中并行地对光线进行相交测试。光线相交测试模块14也对来自3D场景数据源19(图1)的3D场景数据进行访问。这种3D场景数据可以包括组成3D场景中的对象的多个图元,并且在一个示例中,当与叶节点相交时对该数据进行访问,从而对该叶节点内的几何体进行相交测试。
光线相交测试模块14使用几何体加速结构101将不必进行隐式相交测试的场景几何体子集清除。对于被发现与给定光线相交的叶节点,对那些叶节点内存在的几何体进行与该光线的相交测试,并且可以将最近相交的信息发送至光线相交着色模块29。一旦发现了相交曲面,则可以运行着色程序来确定该曲面将对产生的渲染具有什么影响。着色程序例如可以发射反射光线,并且还可以发射引向光源的光线,以便确定什么光碰撞该相交曲面。
图9描绘了根据本披露针对3D场景中的一个点产生光照信息的示例过程。图5至图7用于对图9的过程的各方面进行解释(出于简洁性,图5至图7描绘了2D展示,而不是3D模型)。在图9中,在265,将一个点(图5中的123)标识为针对有待获得光照信息的位置。例如,该位置可以是场景中的对象的曲面上的一个点,或者渲染中的像素的样本。在267,将一条光线(图5的光线124)定义成在一个方向上从该点附近发射出来并且其与扩展因数相关联。在图5中,将扩展因数的表达描绘(在2D下)成由对光线124进行划界的边界125和126限定的圆锥体。在269,对过渡区进行定义并且其包括最大和最小光线追踪距离(图5中的最小距离131和最大距离132)。在一个示例中,基于扩展因数来定义该过渡区。在一个示例中,宽扩展因数产生更靠近原点123的过渡区。
在271,使用几何体加速结构在3D场景中对光线进行追踪以对该过渡区的最大距离132内的交点进行标识(如果有的话)。在图5中,如以上解释的,从原点123到最大距离132对光线124进行追踪(图9中的271),从而试图对光线与曲面几何体的最近交点进行标识。在273,如果该过渡区前面存在相交(比图5中的最小距离131更近),则在275,对该交点进行着色的结果用来确定光照信息。
在277,从最小距离131开始,圆锥体开始前进。光线追踪继续通过该过渡区,并且在279,如果在该过渡区内没有光线相交,则在281,该圆锥体前进的结果将用于为该点产生光照信息。在279,如果该过渡区中存在光线相交,则在283,该圆锥体前进的结果与从该光线相交引起或由其引起的着色的结果(例如,着色输出)混合。
现在,图5用于解释图9中介绍的圆锥体前进的进一步的方面。该圆锥体前进包括边界125和126限定的圆锥截面从点123投射到空间内(在2D下,该圆锥截面变成一条在2D平面内移动的线)。图5描绘了与其他栅格的体积元素相比每个具有相对小的体积的体积元素栅格被选择用于比较靠近点123的采样。累积每个与该圆锥截面相交的体积元素的光表征信息(此处,该示例假设光表征信息与体积元素的面相关联,这是一种示例实现方式)。这种累积可以包括对累积在各频率光谱内的光能量的量进行追踪并且还累积与每个相交曲面相关联的不透明度值。可以从位于该体积元素内部的事物的特征推导出该不透明度值。不透明度值可以用来决定何时终止圆锥体前进。例如,黑色的墙将吸收光能量并且是不透明的,所以可以基于对指明这些特性的体积元素的光表征数据进行采样来停止圆锥体前进。
图5还描绘了当被采样的体积元素栅格尺寸增加时,可以提供过渡区在那里对两种尺寸的体积元素都被采样。以具体示例来讲,当在具有根据体积元素128的大小的体积元素的栅格到具有体积元素129例示的大小的体积元素的栅格之间切换时,在134和135之间对过渡区进行划界。以虚线形式勾划出的体积元素(例如140)描绘了发现累积的不透明度值使得不需要进一步的圆锥体前进。关于何时停止前进的决策准则可以根据应用而不同。
图6描绘了关于图5讨论的圆锥投影的横截面142。在图6中,这些体积元素的大小与体积元素127的大小相似。因此,图6描绘了一些体积元素全部在横截面142的区域内。一些体积元素仅部分地在横截面142内(例如,区域144)。对于那些体积元素,光表征信息的加权组合可以与其他光表征信息的加权组合相组合。图7类似地描绘了体积元素的大小增加(例如,现在这些体积元素的大小与体积元素128的大小相似),但圆锥截面的横截面143也已经增大。图7还描绘了,实际上,一些体积元素将在其他元素之前从圆锥体前进中退出;并且具体地,元素146没有参与圆锥体前进,但包围元素参与了。图6和图7还用来展示将在圆锥体前进过程中对多个体积元素进行采样,并且可以混合光表征信息以得出可以在着色点123中使用的结果、或视情况用于其他处理的结果。
图10描绘了对图9的过程的一部分的替代方案。不是执行穿过一个或多个预定义的体积元素栅格的圆锥体前进(图9中的277),而是可以组合(assemble)由离散的光能量记录组成的查询集合。可以针对沿着圆锥投影路径围住空间体积的不同空间区域生成这些查询,该圆锥投影沿着光线路径穿过场景。特别是,图10在314描绘了可以确定查询集合。在一个示例中,查询可以具有一个球形范围,在该范围中,可以基于光线的扩展因数和到点123(图5)的距离来确定这些查询的半径。所查询的体积的大小将随着查询到点123的距离的增加而增大。
在一种方法中,可以提供包含离散光记录的不同地图或数据结构供这种查询中使用。每张地图或每个数据结构可以具有不同抽象层次的光能量数据。例如,粗糙的地图可以包含离散光能量记录,每条记录表示多个这种离散光能量记录的混合。可以选择合适粒度的地图或数据结构来满足每个查询。因此,带有大体积的查询不一定返回更多记录,而是可以用来对具有光能量记录(每条记录表示更细粒度记录的混合)的数据结构进行查询(进而可以使用不同的数据结构对这些更细粒度记录进行查询)。在这种方法中,可能合适的是提供可以用于每个查询的单个数据结构,但选择合适粒度等级下的记录来满足给定的查询。可以基于多种因素来确定所述合适的等级,包括查询的体积或大小,其可以与到一点(为该点聚集光能量信息)的距离相关。
因此,离散光能量记录可以开始作为空间中一个点处的光能量的描述,但当与其他记录混合时,或抽象到体积元素时,可以针对所确定的体积生成结果光能量记录。可以提前完成或根据需要完成这种生成。在一种方法中,当根据需要完成这种生成时,可以缓存这种生成的结果。在一个示例中,可以对用于多个前进过程(如不同的圆锥体前进)的常见体积进行标识,并且然后可以生成合适粒度等级(见图4和图5,作为示例)下的光能量表征数据。在一个示例中,圆锥体可以从不同的原点开始前进,但这些全都需要来自3D场景的同一部分的相同粒度等级(可以根据到对应原点的距离和例如对应扩展因数来确定该粒度等级)下的光能量表征数据。
在另一种方法中,可以从多个重叠体积形成查询,并且可以应用布尔逻辑来确定最后查询结果。例如,可以进行球形查询以在一定程度上重叠,并且仅可以返回该重叠部分内存在的光子。这些技术可以用来逼近查询与体积元素栅格的曲面(见图3)相关联的光能量数据。如在图9中,当在过渡区中没有检测到光线相交时,则在318,光子查询结果可以用来针对该点产生着色输出。如果该过渡区内存在相交(不是在过渡区前面,见图9),则在320,可以使光子查询结果与来自对该交点进行着色的结果混合。
接着以上披露的更加特定的示例,图11描绘了可以在本披露的实现方式中实践的更一般的过程。图11描绘了,在345,对获得光照信息所针对的位置进行标识。例如,这个位置可以是3D场景中的一个点(例如,对象的曲面上的点)或针对渲染的2D图像所取的样本。光照信息用于本披露中以包括任何种类的渲染信息,并且将预期这种光照信息根据所产生的渲染的类型而不同。为了产生这种光照信息,在347,取到达该位置的照明的一个或多个点样本。在349,针对可能对获得照明信息所针对的位置产生影响的光照条件来确定一个或多个体积样本。在351,建立对这种体积采样的距离限制(到该位置的定义半径以外的距离),同时相反地,可以将点样本限制在该半径以内。在353,执行这些点和体积样本。在355,对来自相对近的点样本的结果的加权比获得的其他样本更高。在357,可以组合点和体积采样的结果以产生针对该位置的光照信息。因此,关于可以如何取点样本和体积样本,图11中描述的过程是通用的。可以将点样本限制到距离该位置相对近的距离,或者根据到该位置的距离按其他方式加权,同时从该位置在横扫3D场景的体积上累积体积样本。3D场景的衰减或范围例如可以支配进行体积采样所在的最大距离。
以上披露主要涉及从指定的数据源产生渲染输出(例如,相交结果的着色和从一个或多个体积元素栅格中的元素聚集数据)。图8提供了用于产生在产生渲染输出中使用的数据源的示例过程的概述。
图8描绘了一个示例过程205,通过该过程可以产生光传输数据以供3D场景的渲染过程中使用。图8描绘了该过程205在206提供了可以从灯到3D场景内对光线进行正向追踪。例如,当可以根据光线的强度或重要性确定每个集合内的多条光线时,可以针对每条光线确定对应的光线集合。在一种方法中,可以使用蒙特卡罗或准蒙特卡罗原理来指定这些光线。还可以基于对象在3D场景内的对象的已知位置来指定光线。美术师还可以直接指定有待正向追踪的光线或光线束。此正向追踪建立该场景中的对象对每条光的可见性。此外,一旦确定了每条光的可见性,则可以根据与这些对象中的每个对象相交的对应曲面的特征对光线的进一步生成进行正向追踪。在208,可以根据该曲面的特征将离散光能量记录存放在每个相交曲面处。例如,漫反射面可以具有散布在该曲面上的光能量记录的集合,而发光面可以具有更密集包装的光能量记录表示的镜面反射。并且,还将根据该曲面的性质确定从给定曲面追踪的光线。例如,可以根据斯涅尔定律从镜面开始对光线进行追踪。在一个示例中,漫反射面对光的散射程度更大,并且因此结果是射出更多的在不同方向上行进的但在较短距离上可以被追踪的光线。
在210,可以基于所存放的光能量记录的位置和合适的规范过程来产生用于在光线地图查询中使用的加速结构。该加速结构可以与用于在该场景中对光线进行追踪的加速结构分离开,并且还可以与体积元素的栅格不同。可以共享这些结构的多个部分或全部。
在214,可以通过将这些记录描述的光能量数据聚集到3D场景的位于这些体积元素的不同体积元素内的对应体积内来产生体积元素栅格。在一种方法中,可以从所聚集的数据产生光能量传播的面特定(face-specific)表示。在216,可以产生用于光线追踪的加速结构;可以根据常规方法继续进行所描绘的过程205的这个部分。然而,在一些示例中,被处理用于产生3D体积元素栅格(在214)的体积栅格元素可以被用作用于产生加速结构的元素的输入。例如,可以针对光能量记录和几何体两者对所处理的最小体积元素进行处理,尽管体积元素栅格的最终组成元素和加速结构的最终组成元素不同。在一些实现方式中,这些(用于光子查询、用于抽象场景几何体,和这些3D栅格)加速结构中的一个或多个加速结构可以是共享或部分共享的结构。例如,轴对准包围盒集合可以抽象场景几何体,并且离根节点更近,还用作栅格元素,而叶节点可以是稀疏的。
可以连续地描绘上述过程205的每个部分。然而,这些过程部分可以并行进行。例如,如果在3D场景的给定体积部分内工作,则可以执行多个过程部分(例如,210、212、214和216)中的一部分,并且然后可以接下来处理该3D场景的不同体积部分。此外,可以分配多个独立的线程(或处理单元)用于对该过程的不同部分进行处理,从而使得它们可以并行地进行。
图12描绘了一个示例系统401,该系统包括一个或多个可编程元件和固定功能元件中,其中可以实现以上所披露的各方面。系统401包括主机接口403,该主机接口可以向主要致力于针对所选定的处理功能性(如图形处理)执行可以使用系统401的应用程序的处理器提供接口。这种处理器可以整合在片上系统内。总线404在下述各组件之间提供通信。在一些方法中,应用程序处理器还可以连接到总线404上,并且因此,主机接口403不是一个必需的组件。多种数据管理器402可以用来设置有待在系统401上执行的计算。这种数据管理器402包括顶点数据管理器405、像素数据管理器406、计算数据管理器407和光线数据管理器408。顶点数据管理器405可以用来对有待在计算集群阵列410上执行的几何体处理进行设置。像素数据管理器406可以用来对有待在阵列410上执行的像素着色操作进行设置。计算数据管理器407可以用来对阵列410上的通用并行计算进行设置。光线数据管理器408可以用来对阵列410上的光线追踪操作进行设置,如光线相交测试和光线着色操作。
阵列410包括一组被标识为核心421-424的计算元件。每个核心421-424包括一个对应的本地内存435-438。在一个示例中,阵列410还可以包括共享纹理管线430和431。调度程序440可以在有待针对每个数据管理器405-408执行的工作之间进行仲裁。任务分配器441可以与调度程序440进行通信以便对有待在阵列410上执行的计算任务进行分配。可以提供光线协处理器445来帮助光线追踪计算。在一个示例中,光线协处理器445包括根据一个或多个分组准则将有待处理的光线收集到多个组内的收集器功能。系统401还可以包括多种其他可以是用于不同活动(如音频处理或其他数字信号处理)的特殊用途硬件的协处理器451-453。纹理载入器454可以用来将纹理信息作为卸载内容加载到纹理管线430-431。阵列410可以与高速缓存层次461通信,该高速缓存层次还可以与系统内存接口462耦合。可以通过对阵列410进行编程、通过使用光线协处理器445、使用一个或多个协处理器或其组合,在系统401中实现图1中所描绘的各元件。取决于实现方式,可以在根据图12的系统内提供不同的、更少的、或附加组件。例如,不是所有的系统可以在相同的物理计算资源上按照像素着色或光线处理来实施几何体处理。
可以对阵列410进行编程以执行图1中所示的过程或以其他方式实现所示的功能。还可以提供固定功能电路来执行这种功能或其中的多个部分。系统401的各部分可以执行在此所述的过程和操作的不同部分。例如,顶点数据管理器405可以操作用于获得创建抽象场景几何体的加速结构中所用的顶点数据,并且还在正向追踪过程中创建离散光数据记录。可以用响应于光线相交而激活的着色程序来对阵列410进行编程。还可以对阵列410进行编程以执行计算(所述计算用于使圆锥截面行进穿过所披露的体积元素栅格)和其他任务,例如,如光线相交测试。可以提供光线协处理器445用于执行针对光线操作的一些特定任务。例如,光线协处理器445可以操作用于对被提交到阵列410用于并行执行的光线进行收集,并且操作用于将开始不能充分使用阵列410的计算带宽或其可独立调度部分的光线处理任务换出。可以执行阵列410的各部分来并行地执行不同的任务。例如,阵列410的一部分可以产生用于前进的栅格的一部分,而另一部分使圆锥截面前进穿过该栅格的之前产生的部分。
图13描绘了一个示例系统的各方面,该系统可以接收并响应发现光线能量记录所涉及到的查询。在提供更加详细的解释之前,介绍了所描绘的系统的元件。通用处理集群475可以执行着色程序代码477-479。例如,可以实例化(instantiate)这些着色程序代码部分中的每个部分或者其响应于光线与曲面之间的标识相交而开始执行。通用处理集群475在执行过程中可以使用主内存471存储数据并且可以包括可以用于下述目的缓冲空间473。举例来讲,着色程序代码477发出与光能量记录的发现相关的查询480,查询解析器485将服务于该查询。可以通过提供一个或多个调用的API 484来接收本查询,该一个或多个调用可以指定有待在每个这种调用中制定的准则。API484向查询提供统一的格式并且可以提供用于在不同实现方式中可以具有不同能力的底层硬件的抽象。在一些实现方式中,API 484可以支持基线类型的一个或多个查询,并且在其他实现方式中,可以支持扩展的查询类型或格式。
查询解析器485可以从可以被实现为互连元件集合的图表的加速结构487中读取,这些互连元件抽象出位于3D场景中的光能量记录子集。可以将光能量记录489中的光能量记录子集标识为有待读取。工作内存491可以存储光子查询的中间结果。可以存储抽象建模过程493的描述并且查询解析器485可以使用这些描述来针对其接收的每个查询(如查询480)产生一个或多个结果。
当执行对光记录信息的着色代码请求(例如,发出一个查询以发现指定点的定义半径内的光子)时,该着色代码可以已经编码有与响应于给定查询可以返回多少光子相关的某种初步猜测或启发。然而,在仅返回所有满足给定规范的记录的查询中,对发现和返回的记录的数量没有先验限制。因此,着色程序代码可以预订一个缓冲空间(例如,缓冲区473)来接收从查询返回的记录。然而,将需要根据“最坏情况”情形确定这种缓冲空间预订的大小,其中,所述最坏情况下返回大量记录。此外,在内存受到限制的情况下,或者在希望减少数据流量(例如,针对功耗)的情况下,本方法可能不是令人希望的。以下披露提供了多种示例方法,其能够使着色程序代码能够具有更多的对这种查询的可预测响应,能够实现更多种查询的服务和对这种查询的有用响应的计算进行加速。这些查询还可以用于产生预计算光传输数据以供以上披露的技术和系统中使用。根据本披露的查询还可以用于查询和返回这种预计算光传输数据。
图14描绘了位于3D空间的定义体积元素内的光能量记录的示例。查询解析器485可以发现并处理这些光能量记录。图14描绘了光能量记录可以包含多种不同的信息。光能量记录中的信息可以结合不同种类的查询定义或其他处理方法一起使用以对给定的查询产生最终结果。光能量记录的示例包括光能量记录496和501。光能量记录496包括对具有光能量的方向特定分布的发射497进行定义的数据。发射497可以表示为参数化的分布,如为可选择的方向特定加权函数提供系数。光能量记录501的发射498示出了方向和强度向量的更简单的示例。
图15A描绘了一种示例情况,其中针对光能量记录的查询在查询轨迹502的半径504内。在图15A中,记录505-507位于半径504内。查询解析器485可以在包围着由查询围住的空间体积的一个或多个元素的加速结构内进行搜索。可以存在共同包围该体积的多个这种元素。查询解析器485可以搜索该加速结构的这些元素并以任何顺序对合适的记录进行标识(即,不保证查询解析器485以已知的顺序对记录进行标识,如按照到原点502距离递增进行的排序)。并且,位于该查询体积内的多条记录最初将是未知的。
然而,某些种类的查询可以受益于或需要多条记录之间的选定的相对排序或分类。例如,查询可以向一条轨迹请求指定的或最大数量的最近记录(“k最近邻居”(knn)查询),并且该轨迹还可以被限制到最大的搜索半径。在这种情况下,将需要对查询解析器485发现的结果进行比较或分类以便正确地对响应记录进行标识。查询解析器485可能不具有足够的工作内存来存储这些结果。因此,一种实现knn查询的方法是发出一系列最近邻居查询,但每个查询按照最小距离对之前标识的记录的距离进行追踪。此最小距离还可以包含关于之前标识的记录的标识信息。此信息允许对不位于相同距离处的两条记录进行区分(在测试的精度内)。
图15B描绘了可以如何实现knn(其中k=3)查询的更加具体的示例。最初,进行一个向轨迹502请求单个最近记录的查询。本查询返回记录504。进行后续查询,该查询包括关于到返回的之前最近记录的距离的信息(表示为半径510)。查询解析器485可以因此排除对到轨迹502比此距离更近的空间的任何部分进行搜索。查询解析器485可以发现记录507和记录506两者具有离轨迹502相同的距离。查询解析器485将操作用于根据每条记录的标识符信息从记录506和507选择一条记录来返回。例如,查询解析器485可以用顺序上更早的ID选择一条记录。例如,该第二查询可以返回记录506,该记录与半径512相关联。发出一个第三查询,并且其与半径512相关联并且对从记录506推导出来的信息(例如,来自ID的选定数量的低阶位)进行标识。如果查询解析器首先找到记录506,则其可以基于标识符位来排斥此记录,并且然后最终将找到记录507,并返回该记录。
当查询解析器485可能是一个当对每个查询进行求解时仅具有少量可用存储量(例如,可能具有仅用于对单个记录的信息进行标识的空间)的固定功能或有限可编程电路的情况下,这种方法是合适的。在这种情况下,查询解析器每次对可以响应于查询的记录进行标识时,其可能需要返回该记录或者替换现有的存储标识符。这种查询解析器可以确定性地响应于最近邻居查询,并且通过根据上述技术延伸至knn查询,k>1。
图16用于对抽象针对查询标识的记录并呈现组合结果的技术的各方面进行描述。这些技术可以用于增加对查询将生成的数据流量的确定性,减少查询缓冲要求,并提供用于处理查询结果的硬件加速,并且允许美术师控制查询结果的硬件加速过滤或抽象的各方面。更具体地说,图16描绘了具有作为自变量的多条光记录和作为应变量的贡献率的曲线530-534集合。在一些实现方式中,这些曲线用于通过增加到具体轨迹的距离而组织的光记录的集合。因此,在一些方法中,这些曲线中的每条曲线用于描述被组织成距离递增顺序的光记录集合的不同的总加权。例如,曲线532描述了所发现的每条增量光记录的贡献率的线性下降,而曲线534和533描述了贡献率的更快速的下降。
这些技术的暗示在于可以根据不同的策略和基于其他光记录的相对位置或密度对到轨迹不同距离处的光记录进行混合。例如,在线性曲线532中,可以对每条增量记录加权一个线性递减权重。在一些方法中,总加权可以是一个恒定值,例如,从而使得该混合不放大这些记录表示的总能量,而是混合以产生能量恒定的结果。可以结构化这些曲线,从而使得它们具有用于每条增量记录的预定义加权,假设预先确定一定数量的记录;还可以对它们进行参数化,从而使得基于发现的记录的总数量而确定每条记录的加权。可以通过在对每条记录进行加权和将该输出累积成总和之前首先确定记录的总数量,来实现基于发现的记录的总数量而确定每条记录的最终权重。
此外,可以将这些曲线中的两条或更多条曲线混合在一起以便得出一条内插曲线。例如,如果针对15条记录对曲线532进行加权,同时针对8条记录对曲线534进行加权,则如果针对给定的查询标识10条记录,则可以通过对这些曲线中的每条曲线描述的加权进行混合来确定用于那些记录的加权。
在一些实现方式中,可以在查询解析器485可访问的电路内对一组曲线进行预定义和存储或编码,并且其可以是抽象建模过程493的一部分。在一些实现方式中,可以由不同的多项式指定曲线的顺序和形状。可以用查询传递一个或多个多项式的选集与用于那些多项式的参数。查询可以用多种方式中的任一种方式指定有待针对记录搜索的体积,如一个或多个点的轨迹和距离那些点、突出物、盒、球体等的距离。一些查询可以不明示最大体积,但却可以指定最大记录数量。一些查询可以指定一个方向性来排除某些记录。例如,查询可以要求记录的方向与该查询指定的方向得到正的点积。图18提供了关于查询定义选项的示例的更多细节。
图17描绘了一个示例,其中不同的查询536、538和539具有距离原点540不同的最大半径,并且因此包括不同的记录集合。可以根据从图16选择的曲线来混合关于每个查询发现的记录。例如,如果根据曲线533混合针对查询538标识的记录,并且在2条和4条记录之间从高到低转变曲线533,则第5记录将对加权总和具有相对小的贡献,而第一记录将具有高得多的贡献。如果曲线534在大约6条记录处完成转变,并且曲线532在12完成转变,则曲线534和曲线532之间的混合可以用来混合查询539标识的10条记录的集合。
图18描绘了可以基于多种特征来对混合进行控制,这些特征可以包括该查询指定的那些特征,并其还包括记录本身的那些特征。图18示出了查询可以针对光能量记录的多个不同特征中的每个特征指定一条混合曲线。例如,方向的相似性可以是最终加权确定中的一个因素,光能量记录的颜色(或更普遍的,光谱含量)可以是另一个因素,并且离指定轨迹的距离是又另一个示例特征。这些曲线可以共同地指定一个最终加权函数。在一些示例中,可以对一条记录的不同通道进行不同的加权。可以通过查询来指定这些选项。这种查询可以参考预先安排的查询简档的惯例、搜索准则的组合的其他选择。可以提供查询解析器电路来对这种搜索进行加速。
图19描绘了示例系统401的修改版,其中提供了光线和光子协处理器550并且其包括解析器单元551-553的集合。每个解析器单元551-553包含相交测试单元、求值单元556和本地内存557。相交测试单元555可以为一种形状返回一个最近相交结果。该形状可以是组成场景几何体的图元、加速结构的元素、位移或隐式几何体、或可以被定义和进行与光线的相交测试的另一个曲面。求值单元556可以实现上述查询相关披露的各方面。求值单元556可以包括例如仅可以执行非分支指令流的电路。求值单元556可以包括可以针对系数集合和自变量值对指定多项式(如线性和二次多项式)集合进行求值的电路。求值单元556还可以包括一个乘法器单元(如整数)、固定点、单或双精度浮点单元。该乘法器可以使用一个或多个被乘数的块浮点展示。求值单元556还可以实现一个可以将这些计算的结果累积到缓冲区内的累加器。
求值单元556还可以用于对主要在相交测试单元555、阵列410中的核心或其组合上执行的算法的多个部分进行加速。例如,求值单元556可以返回函数求值流,其中根据步长增加该一个或多个自变量,如相交测试单元555设置的步长。此求值流可以用于执行体积渲染技术、光线前进、圆锥体前进等。在一个示例中,求值单元556可以被编程用于继续对表达式进行求值,直到该表达式的输出改变符号,并且然后报告一个或多个自变量的当前值。单元556可以在该符号变化的指定范围内输出多个值,如之前值和当前值,对该表达式的零交叉点进行划界。
图20描绘了可以总结在此披露的各方面的示例过程。在561,可以接收一个查询用于处理。在563,对该查询定义的体积内的记录进行标识。根据应用到记录上的抽象模型对这些记录进行抽象以产生查询结果。这种查询结果可以具有与将已经针对单条光能量记录返回的查询结果相同或相似的格式,或可以表达所标识的记录的分布的某个方面。在567,返回该查询结果。
图21描绘了查询抽象的示例过程。在569,可以基于拒绝准则(例如,方向性比较)拒绝体积内的一条或多条记录。当测试仪可以首先对指定体积内的记录进行标识但不对其他查询参数进行测试而是对这种记录进行标识以供进一步分析时,这是一种合适的方法。在571,可以对剩余的记录进行计数,并且在573,可以定义或选择相对加权或混合准则。在575,对这些记录进行加权,并且在577,对这些加权值进行求和以产生查询结果。在578,可以对这些加权或混合准则的不同准则的结果进行内插。在一个示例中,可以针对预先确定的记录数量来对每个加权函数进行调谐,并且在对确定响应于该查询的记录总数量进行确定之后,可以从这些加权或混合过程中的任一过程选择一个结果,如根据离实际记录数量最近的预先确定的数量。在一个实现方式中,可以内插来自不同加权或混合过程的结果其中的两个结果,如果它们的预先确定的数量对确定为响应的实际记录数量进行划界。
图22进一步描绘了这些披露的一种实现方式的各个方面。通用可编程单元591执行着色程序代码589。着色程序代码589发出查询480,该查询可以包括以下各项中的一项或多项:查询包围信息604、材料特性605、程序引用607和参数609。材料特性605的示例包括一个双向反射分布函数(BRDF)。在这种情况下,可以通过查询提供用于材料的BRDF,并且该BRDF可以用于响应于查询480而对返回的结果进行计算。以具体示例来讲,可以进行计算来确定在该BRDF定义的边界内有多少光能量记录定义的分布能量被发出。
着色程序代码589可以用应用程序接口(API)484支持的格式对查询进行表达。可以通过计算机可执行模块实现API 484,这些模块提供一个接受用于查询593的参数集合和其他信息的接口,用查询说明符模块595表示。查询说明符模块595可以产生适合于查询解析器597的能力的一个或多个组成查询说明,该查询解析器将提供查询593的结果。例如,API 484可以支持knn查询调用,其将这种查询转换成查询说明集合,底层硬件为每条查询说明进行服务,并且这些单独的查询说明的结果共同地对knn搜索的结果进行定义。图22还描绘了可以提供的从查询解析器485到查询说明符595的反馈回路。查询解析器485可以向简单的程序执行单元611提供当它们可用时的结果(例如,结果601-603)。当查询解析器485通过对所有响应查询进行标识来完成查询时,查询解析器485可以提供一个完成指示604。还可以与针对查询返回的最后结果一起提供这种指示。
简单的执行单元611可以配置有来自程序商店613的程序。这种程序可以具有适合于简单程序执行单元611的特征的特定限制。例如,举例来讲,一些执行单元可能不支持分支指令,可能仅执行按次序的指令执行,可能不支持条件句,或可能不支持循环。可以进行这些限制以便减少实现该执行单元所需的硅量,和/或避免或减少分支代码。在一个示例中,可以将程序实现为用于算法的一个增量或步骤的指令集。这种程序可以报告一个或多个增量的中间结果、或仅报告最后结果。然后,查询解析器485可以为后续步骤或增量提供信息。例如,简单程序执行单元611可以实施以下内容中的一个步骤:光线前进或圆锥体前进、体积渲染操作、纹理坐标内插、体积内插、增量自变量的函数求值等。可以通过与查询480一起提供的一个或多个程序引用607对简单程序执行单元611执行的一个或多个程序进行标识。简单程序执行单元611的另一种方法是提供可以选择性地被选择由执行单元611实施的数学函数模块615集合。举例来讲,这些模块可以包括多个多项式函数。可以用查询480提供参数和该一个或多个自变量的一个或多个当前值。还可以由查询说明符595提供或从初始值更新这些参数和当前值。例如,当执行单元611可以对函数进行求值,并将该求值结果返回到查询解析器485时,该查询解析器可以决定对变量进行增量或改变参数,并请求对该函数进行重新求值。
执行单元611还可以与从执行单元611接受多个值并将这些值累计到缓冲区位置内的本地累积函数617协作。在一个示例中,该累积可以包括一个简单的求和,如当执行单元611执行一个对已经累积在该缓冲区内的值进行解释的加权时。在其他情况下,本地累积可以对关于被累积的值的更多统计进行追踪。可以将本地累积617实现为到本地内存的特定部分的写指令;在一些实现方式中,不保护本内存受到不正确的程序执行,从而使得执行单元611可以在不需要访问仲裁的情况下对此值进行更新。在最后累积之后,可以将该本地累积值返回至全局结果缓冲区618。可以由查询480指定全局缓冲区位置。执行单元611还可以用于使其他渲染任务自动化或加速。举例来讲,微分可以与光线相关联。可以通过对通常在与原始光线相同的方向上行进的但不恰好共平行的两条或更多条附加光线进行追踪来对光线的微分进行建模。为了利用光线微分,可以制作这些附加光线相对于原始光线在哪儿相交的模型。执行单元611可以基于附加光线的方向和与原始光线相交的曲面的模型对逼近每条附加光线将会碰撞的地方的函数进行求值。在一个示例中,可以对交点处的切平面进行定义,并且基于每条微分光线和原始光线之间形成的角,执行单元611可以对函数进行求值以对这个切平面上的相交位置进行标识。因此,对于光线与曲面之间的给定交点,执行单元可以对这些微分光线的交点进行标识。可以在曲面(例如,切面)上参数地表达这些点。
术语“光能量表征”在此用于包括能量或其他材料的任何种类的导向流,如为了对能量传播的强度和/或方向性进行建模或量化。“光能量记录”是指与n维空间(例如,n=3)内的点相关联的数据,其对能量的传播进行表征。例如,该记录可以包括对辐亮度(如光的辐亮度)或电磁波能量的传播进行表征的数据。这种记录可以包括对输入(inbound)到曲面上的点或从其中输出(outbound)的能量或对定义轨迹或定义体积的区域内存在的能量进行表征的数据。不同的记录可以涵盖不同的空间体积并且可以具有重叠体积。不同的记录可以表示不同抽象层次下的同一或部分重叠体积。以一般示例来讲,如红外辐射能做的一样,可以使用这种能量表征数据对传播电磁波(如X光)、微波或无线电波进行建模。因此,使用术语“光”暗示关于能够被本披露的实现方式建模的能量的种类或其传输上没有限制。在本披露中,可以产生并可以访问光照和着色信息。一些光照和着色信息用作到最终产生最后渲染输出的其他过程的输入。因此,光照和着色信息可能不是最后的产物,而是其中间产物。这种中间数据可以采取多种形式并且不需要直接表达颜色、亮度、色度等等。在3D渲染的背景下,光能量记录的示例是如3D渲染应用背景下使用的“光子”,但光能量记录不需要符合“光子”的隐含或明确限制。
除了硬件实施例(例如,在中央处理单元(“CPU”)内或耦合到其上的微处理器、微控制器、数字信号处理器、处理器核心、片上系统(“SOC”),或任何其他可编程或电子器件),实现方式还可以体现在例如被配置用于存储软件的计算机可用(例如,可读)介质内所存放的软件(例如,计算机可读代码、程序代码、以任何形式存放的指令和/或数据,如源、对象或机器语言)内。这种软件可以例如能够实现在此描述的装置和方法的功能、制造、建模、仿真、描述和/或测试。例如,可以通过使用通用编程语言(例如,C语言、C++语言)、GDSII数据库、包括Verilog HDL、VHDL、系统C寄存器传输级(RTL)等的硬件描述语言(HDL)、或其他可用程序、数据库、和/或电路(即,示意图)捕捉工具来完成以上内容。实施例可以布置在计算机可用介质内,包括非瞬态内存,如使用半导体的内存、磁盘、光盘、铁基存储器、电阻内存等。
以特定示例来讲,应理解到,可以在硬件描述语言(HDL)中所体现的、可以用来产生特定集成电路实现方式的半导体知识产权核心或其中一部分(如微处理器核心)内实现所披露的装置和方法的实现方式。计算机可读介质可以体现或存储这种描述语言数据,并因此组成制造品。非瞬态机器可读介质是计算机可读介质的一个示例。其他实施例的示例包括存储可以被适配成用于在特定架构或微架构实现方式中使用的寄存器传送语言(RTL)的计算机可读介质。此外,在此所述的装置和方法可以体现为硬件与对硬件进行配置或编程的软件的组合。
如将从本披露中明显的,所披露的某些组件和功能性可以在硬件、软件、固件、或其任意组合中实现。如果在固件和/或软件中实现,则这些功能可以被存储为计算机可读介质上的一个或多个指令或代码,在一个示例中,该介质是非瞬态的。示例包括用数据结构编码的计算机可读介质和用计算机程序编码的计算机可读介质。机器可读介质包括非瞬态机器可读介质。其他种类的介质包括传输介质。非瞬态介质可以是如下介质,该介质不是传输介质并且可以被机器访问。举例来讲,但不具有限制性,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器、或其他磁存储装置、或任何可以用来以指令或数据结构的形式存储所希望的程序代码和可以被机器访问的其他介质。
本领域技术人员还将认识到结合在此披露的实施例描述的各说明性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机可读介质内的计算机软件、或两者的组合。为了清晰地展示硬件和软件的此可互换性,通常就其功能性,以上已经对各说明性组件、块、模块、电路和步骤进行了描述。这种功能性是否被实现为硬件或软件取决于强加在整个系统上的具体应用和设计约束条件。本领域技术人员可以针对每个具体应用以不同的方式实现所述的功能性,但不应将这种实现方式决定解释为引起对本发明的范围的偏离。
提供各方面的特征的描述用来使本领域的技术人员能够制作和使用这些系统和装置以及执行所披露的方法。各种修改将对本领域的技术人员是明显的,在不偏离本披露的精神和范围的情况下可以将本文件内描述的原理应用到其他方面。因此,本说明书并不旨在限制权利要求书。相反,权利要书求书是要符合与在此披露的原理和新颖性特征一致的范围。
附图包括结构的相对安排和过程组件的排序,仅作为帮助理解本说明书。这些相对安排和编号并非隐含公开对权利要求书中的元素和步骤的排序或安排的任何特定限制。在不背离本披露的范围的情况下可以顺序地互换过程限制,权利要求书并且装置加功能短语旨在涵盖被描述为执行所引用的功能、不仅包括结构等效物而且还包括等效的结构。
尽管使用了各种示例和其他信息来解释所附权利要求书的范围内的多个方面,但并非要基于这种示例中的具体特征或安排来暗示对权利要求书进行限制,因为普通技术人员将能够使用这些示例推导出很多种实现方式。进一步地,并且尽管以结构特征和/或方法步骤的示例专用的语言描述了某个主题,但应理解到,所附权利要求书中限定的主题不一定局限于这些描述的特征或动作。例如,功能性可以分布在与除了在此标识的组件以外的组件、附加的组件或更少的组件中,或在其中执行。相反,公开了所述特征和步骤是作为所附权利要求书的范围内的系统和方法的组件的示例。
Claims (10)
1.一种用于确定用于在对场景进行渲染中使用的光照信息的方法,所述方法包括:
标识光照信息将被获得的位置;
取得到达所述位置的照明的一个或多个点样本,所述一个或多个点样本是在距所述位置的预定距离内取得的;
针对影响所述位置的光照条件,确定一个或多个体积样本;
建立对所述体积样本的距离限制到距所述位置定义的半径以外的距离;
执行点采样和体积采样以及加权,对近的点样本的加权比获得的其他样本更高;以及
组合点采样和体积采样的结果,以产生针对所述位置的光照信息。
2.根据权利要求1所述的方法,其中所述位置是3D场景中的点或者针对要被渲染的2D图像所取得的样本。
3.根据权利要求1或2所述的方法,其中所述点样本根据它们距所述位置的距离而被加权。
4.根据权利要求1或2所述的方法,其中所述体积样本在横扫3D场景的体积上累积。
5.根据权利要求1或2所述的方法,其中体积采样被执行的最大距离是基于3D场景的衰减或范围。
6.一种用于确定用于在对场景进行渲染中使用的光照信息的装置,所述装置被配置为:
标识光照信息将被获得的位置;
取得到达所述位置的照明的一个或多个点样本,所述一个或多个点样本是在距所述位置的预定距离内取得的;
针对影响所述位置的光照条件,确定一个或多个体积样本;
建立对所述体积样本的距离限制到距所述位置定义的半径以外的距离;
执行点采样和体积采样以及加权,对近的点样本的加权比获得的其他样本更高;以及
组合点采样和体积采样的结果,以产生针对所述位置的光照信息。
7.根据权利要求6所述的装置,其中所述位置是3D场景中的点或者针对要被渲染的2D图像所取得的样本。
8.根据权利要求6或7所述的装置,其中所述点样本根据他们距所述位置的距离而被加权。
9.根据权利要求6或7所述的装置,其中所述体积样本在横扫3D场景的体积上被累积。
10.根据权利要求6或7所述的装置,其中体积采样被执行的最大距离是基于3D场景的衰减或范围。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910019117.7A CN109741437B (zh) | 2013-03-15 | 2014-03-14 | 用于进行渲染的方法和装置 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361787700P | 2013-03-15 | 2013-03-15 | |
US61/787,700 | 2013-03-15 | ||
CN201910019117.7A CN109741437B (zh) | 2013-03-15 | 2014-03-14 | 用于进行渲染的方法和装置 |
CN201410096436.5A CN104050707B (zh) | 2013-03-15 | 2014-03-14 | 使用点采样和预计算光传输信息进行渲染的系统和方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410096436.5A Division CN104050707B (zh) | 2013-03-15 | 2014-03-14 | 使用点采样和预计算光传输信息进行渲染的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109741437A CN109741437A (zh) | 2019-05-10 |
CN109741437B true CN109741437B (zh) | 2023-06-06 |
Family
ID=50482719
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910024219.8A Active CN109741435B (zh) | 2013-03-15 | 2014-03-14 | 用于产生渲染输出的系统和方法 |
CN201910026218.7A Active CN109754455B (zh) | 2013-03-15 | 2014-03-14 | 用于进行渲染的系统、方法和计算机可读介质 |
CN201910019117.7A Active CN109741437B (zh) | 2013-03-15 | 2014-03-14 | 用于进行渲染的方法和装置 |
CN201410096436.5A Active CN104050707B (zh) | 2013-03-15 | 2014-03-14 | 使用点采样和预计算光传输信息进行渲染的系统和方法 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910024219.8A Active CN109741435B (zh) | 2013-03-15 | 2014-03-14 | 用于产生渲染输出的系统和方法 |
CN201910026218.7A Active CN109754455B (zh) | 2013-03-15 | 2014-03-14 | 用于进行渲染的系统、方法和计算机可读介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410096436.5A Active CN104050707B (zh) | 2013-03-15 | 2014-03-14 | 使用点采样和预计算光传输信息进行渲染的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (6) | US9704283B2 (zh) |
CN (4) | CN109741435B (zh) |
DE (1) | DE102014003698A1 (zh) |
GB (4) | GB2544931B (zh) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9633458B2 (en) * | 2012-01-23 | 2017-04-25 | Nvidia Corporation | Method and system for reducing a polygon bounding box |
KR20150136348A (ko) * | 2014-05-27 | 2015-12-07 | 삼성전자주식회사 | 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법 |
KR102219289B1 (ko) * | 2014-05-27 | 2021-02-23 | 삼성전자 주식회사 | 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법 |
US10169909B2 (en) * | 2014-08-07 | 2019-01-01 | Pixar | Generating a volumetric projection for an object |
EP3178068B1 (de) * | 2014-09-23 | 2018-09-19 | Siemens Healthcare GmbH | Verfahren, visualisierungsvorrichtung und computerprogrammprodukt zur visualisierung eines dreidimensionalen objekts |
KR20160071774A (ko) * | 2014-12-12 | 2016-06-22 | 삼성전자주식회사 | 영상 처리를 위한 영상 처리 장치, 방법 및 기록 매체 |
US10565774B2 (en) * | 2015-09-03 | 2020-02-18 | Siemens Healthcare Gmbh | Visualization of surface-volume hybrid models in medical imaging |
US9928640B2 (en) * | 2015-12-18 | 2018-03-27 | Intel Corporation | Decompression and traversal of a bounding volume hierarchy |
EP3736775B1 (en) * | 2016-03-14 | 2023-10-11 | Imagination Technologies Limited | Methods and graphics processing units for determining differential data for rays of a ray bundle |
CN107273376B (zh) | 2016-04-07 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 目标位置搜索方法和装置 |
US10121277B2 (en) * | 2016-06-20 | 2018-11-06 | Intel Corporation | Progressively refined volume ray tracing |
CN117310741A (zh) * | 2017-01-03 | 2023-12-29 | 应诺维思科技有限公司 | 用于检测和分类物体的激光雷达系统和方法 |
US10311631B2 (en) * | 2017-05-12 | 2019-06-04 | Siemens Healthcare Gmbh | Light path fusion for rendering surface and volume data in medical imaging |
CN110087553B (zh) * | 2017-05-24 | 2022-04-26 | 深圳迈瑞生物医疗电子股份有限公司 | 超声设备及其三维超声图像显示方法 |
US11023596B2 (en) * | 2017-08-30 | 2021-06-01 | Go Ghost, LLC | Non-rasterized image streaming system that uses ray tracing samples |
US9990761B1 (en) * | 2017-08-30 | 2018-06-05 | Go Ghost, LLC | Method of image compositing directly from ray tracing samples |
US10127392B1 (en) * | 2017-08-30 | 2018-11-13 | Go Ghost, LLC | Secure rendering system that generates ray tracing samples with obfuscated position data |
US10410433B2 (en) * | 2017-08-30 | 2019-09-10 | Go Ghost, LLC | Method of modifying ray tracing samples after rendering and before rasterizing |
EP3462418B1 (en) * | 2017-09-28 | 2024-06-19 | Siemens Healthineers AG | Method and apparatus for rendering material properties |
WO2019195774A1 (en) | 2018-04-05 | 2019-10-10 | Nvidia Corporation | Shader binding management in ray tracing |
US10810785B2 (en) * | 2018-08-10 | 2020-10-20 | Nvidia Corporation | Method for forward progress tree traversal mechanisms in hardware |
US10885698B2 (en) * | 2018-08-10 | 2021-01-05 | Nvidia Corporation | Method for programmable timeouts of tree traversal mechanisms in hardware |
US10846917B2 (en) | 2019-01-03 | 2020-11-24 | Microsoft Technology Licensing, Llc | Iterating different camera representations in three-dimensional model |
JP7048539B2 (ja) | 2019-04-26 | 2022-04-05 | ファナック株式会社 | 振動表示装置、動作プログラム作成装置、およびシステム |
US20210090318A1 (en) * | 2019-09-23 | 2021-03-25 | Nvidia Corporation | Spatial search using ray tracing |
US11288856B2 (en) * | 2019-11-05 | 2022-03-29 | Intelligent Fusion Technology, Inc. | Method and system for wave propagation prediction |
US11017581B1 (en) * | 2020-01-04 | 2021-05-25 | Adshir Ltd. | Method for constructing and traversing accelerating structures |
US11380042B2 (en) * | 2020-06-26 | 2022-07-05 | Imagination Technologies Limited | Intersection testing in ray tracing systems using hierarchical acceleration structures with implicitly represented nodes |
US11335055B2 (en) | 2020-06-26 | 2022-05-17 | Imagination Technologies Limited | Intersection testing in ray tracing systems with skipping of nodes in sub-trees of hierarchical acceleration structures |
US11403803B2 (en) | 2020-06-26 | 2022-08-02 | Imagination Technologies Limited | Hierarchical acceleration structures for use in ray tracing systems |
CN112206517B (zh) * | 2020-10-22 | 2024-03-12 | 网易(杭州)网络有限公司 | 一种渲染方法、装置、存储介质及计算机设备 |
US20220335636A1 (en) * | 2021-04-15 | 2022-10-20 | Adobe Inc. | Scene reconstruction using geometry and reflectance volume representation of scene |
CN113628318B (zh) * | 2021-07-20 | 2023-09-15 | 北京智源人工智能研究院 | 一种基于光线追踪的分布式实时神经元渲染方法和系统 |
CN115731331A (zh) * | 2021-08-30 | 2023-03-03 | 华为云计算技术有限公司 | 一种对应用进行渲染的方法及相关装置 |
US11823319B2 (en) * | 2021-09-02 | 2023-11-21 | Nvidia Corporation | Techniques for rendering signed distance functions |
CN117455977B (zh) * | 2023-09-27 | 2024-07-09 | 杭州市交通工程集团有限公司 | 一种基于三维激光扫描的堆料体积计算方法及系统 |
CN118397166B (zh) * | 2024-06-27 | 2024-09-13 | 杭州群核信息技术有限公司 | 图像渲染方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101052882A (zh) * | 2004-07-28 | 2007-10-10 | 专家服务集团公司 | 自动流体处理筒、流体处理系统及方法 |
EP1890267A2 (en) * | 1998-07-16 | 2008-02-20 | The Research Foundation of the State University of New York | Apparatus and method for real-time volume processing and universal 3D rendering |
CN102037497A (zh) * | 2008-03-21 | 2011-04-27 | 柯斯提克绘图有限公司 | 用于光线追踪渲染的并行相交测试及着色的架构 |
CN102697523A (zh) * | 2011-03-25 | 2012-10-03 | 通用电气公司 | 用于显示体积超声图像上的交叉信息的方法和系统 |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5355442A (en) * | 1992-12-16 | 1994-10-11 | Loral Aerospace Corp. | Terrain visualization by ray tracing a conical height field transformation |
US6529193B1 (en) | 1996-06-25 | 2003-03-04 | Mental Images Gmbh & Co. Kg | System and method for generating pixel values for pixels in an image using strictly deterministic methodologies for generating sample points |
US6023279A (en) | 1997-01-09 | 2000-02-08 | The Boeing Company | Method and apparatus for rapidly rendering computer generated images of complex structures |
US7102646B1 (en) | 1997-11-25 | 2006-09-05 | Nvidia U.S. Investment Company | Demand-based memory system for graphics applications |
WO2000011603A2 (en) | 1998-08-20 | 2000-03-02 | Apple Computer, Inc. | Graphics processor with pipeline state storage and retrieval |
US6380935B1 (en) | 1999-03-17 | 2002-04-30 | Nvidia Corporation | circuit and method for processing render commands in a tile-based graphics system |
US6801203B1 (en) | 1999-12-22 | 2004-10-05 | Microsoft Corporation | Efficient graphics pipeline with a pixel cache and data pre-fetching |
AU2001239926A1 (en) * | 2000-02-25 | 2001-09-03 | The Research Foundation Of State University Of New York | Apparatus and method for volume processing and rendering |
US7952583B2 (en) | 2000-06-19 | 2011-05-31 | Mental Images Gmbh | Quasi-monte carlo light transport simulation by efficient ray tracing |
US7184042B2 (en) | 2000-06-19 | 2007-02-27 | Mental Images Gmbh | Computer graphic system and computer-implemented method for generating images using a ray tracing methodology that makes use of a ray tree generated using low-discrepancy sequences and ray tracer for use therewith |
US7405734B2 (en) | 2000-07-18 | 2008-07-29 | Silicon Graphics, Inc. | Method and system for presenting three-dimensional computer graphics images using multiple graphics processing units |
GB2387094B (en) | 2002-03-26 | 2005-12-07 | Imagination Tech Ltd | 3-D Computer graphics rendering system |
US7009608B2 (en) | 2002-06-06 | 2006-03-07 | Nvidia Corporation | System and method of using multiple representations per object in computer graphics |
US7071983B2 (en) | 2002-06-19 | 2006-07-04 | Hewlett-Packard Development Company, L.P. | System and method for controlling photosensitive charge transfers |
US6853377B2 (en) | 2002-06-26 | 2005-02-08 | Nvidia Corporation | System and method of improved calculation of diffusely reflected light |
US7962760B2 (en) | 2002-12-20 | 2011-06-14 | The Invention Science Fund I | Method and apparatus for selectively enabling a microprocessor-based system |
JP3826893B2 (ja) | 2003-03-26 | 2006-09-27 | ソニー株式会社 | 無線通信システム |
US6904815B2 (en) * | 2003-10-28 | 2005-06-14 | General Electric Company | Configurable multi-point sampling method and system for representative gas composition measurements in a stratified gas flow stream |
US7483024B2 (en) | 2003-12-31 | 2009-01-27 | Autodesk, Inc. | Accelerated ray-object intersection |
US7145562B2 (en) | 2004-05-03 | 2006-12-05 | Microsoft Corporation | Integration of three dimensional scene hierarchy into two dimensional compositing system |
US20060111099A1 (en) | 2004-11-19 | 2006-05-25 | Research In Motion Limited | Method and system for self-terminating a media service due to an out-of-coverage condition |
US7969437B2 (en) | 2004-12-28 | 2011-06-28 | Intel Corporation | Method and apparatus for triangle representation |
US7348975B2 (en) | 2004-12-28 | 2008-03-25 | Intel Corporation | Applications of interval arithmetic for reduction of number of computations in ray tracing problems |
US20070132754A1 (en) | 2005-12-12 | 2007-06-14 | Intel Corporation | Method and apparatus for binary image classification and segmentation |
WO2008011391A2 (en) | 2006-07-21 | 2008-01-24 | University Of Utah Research Foundation | Ray tracing a three-dimensional scene using a hierarchical data structure |
US8018457B2 (en) | 2006-09-19 | 2011-09-13 | Caustic Graphics, Inc. | Ray tracing system architectures and methods |
US7969434B2 (en) | 2006-09-19 | 2011-06-28 | Caustic Graphics, Inc. | Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering |
US20080088619A1 (en) * | 2006-10-17 | 2008-04-17 | Robert Allen Shearer | Branch Prediction for Acceleration Data Structure Traversal |
US8384711B2 (en) | 2006-11-29 | 2013-02-26 | The University Of Utah Research Foundation | Ray tracing a three dimensional scene using a grid |
US7969438B2 (en) * | 2007-01-23 | 2011-06-28 | Pacific Data Images Llc | Soft shadows for cinematic lighting for computer graphics |
US8237711B2 (en) * | 2007-11-19 | 2012-08-07 | Caustic Graphics, Inc. | Tracing of shader-generated ray groups using coupled intersection testing |
US8497861B2 (en) * | 2008-05-30 | 2013-07-30 | Siemens Aktiengesellschaft | Method for direct volumetric rendering of deformable bricked volumes |
US8593458B2 (en) * | 2008-09-22 | 2013-11-26 | Caustic Graphics, Inc. | Systems and methods of multidimensional query resolution and computation organization |
GB0819570D0 (en) * | 2008-10-24 | 2008-12-03 | Advanced Risc Mach Ltd | Methods of and apparatus for processing computer graphics |
US8952961B2 (en) * | 2009-06-29 | 2015-02-10 | Imagination Technologies, Limited | Systems and methods for photon map querying |
CN102947865B (zh) * | 2010-04-29 | 2016-10-05 | 想象技术有限公司 | 用于光线跟踪中的图元相交的系统和方法 |
US8638331B1 (en) * | 2011-09-16 | 2014-01-28 | Disney Enterprises, Inc. | Image processing using iterative generation of intermediate images using photon beams of varying parameters |
DE112012003243T5 (de) * | 2011-08-05 | 2014-04-30 | Caustic Graphics, Inc. | Systeme und Verfahren für die Erzeugung und Aktualisierung für 3D-Szenenbeschleunigungsstrukturen |
US9123162B2 (en) * | 2012-06-11 | 2015-09-01 | Disney Enterprises, Inc. | Integration cone tracing |
CN102855655A (zh) * | 2012-08-03 | 2013-01-02 | 吉林禹硕动漫游戏科技股份有限公司 | Gpu并行光线追踪渲染方法 |
-
2014
- 2014-02-25 GB GB1703717.7A patent/GB2544931B/en active Active
- 2014-02-25 GB GB1712746.5A patent/GB2550091B/en active Active
- 2014-02-25 GB GB1403240.3A patent/GB2513698B/en active Active
- 2014-02-25 GB GB1609754.5A patent/GB2541084B/en active Active
- 2014-03-10 US US14/203,094 patent/US9704283B2/en active Active
- 2014-03-13 DE DE102014003698.7A patent/DE102014003698A1/de active Pending
- 2014-03-14 CN CN201910024219.8A patent/CN109741435B/zh active Active
- 2014-03-14 CN CN201910026218.7A patent/CN109754455B/zh active Active
- 2014-03-14 CN CN201910019117.7A patent/CN109741437B/zh active Active
- 2014-03-14 CN CN201410096436.5A patent/CN104050707B/zh active Active
-
2017
- 2017-06-09 US US15/618,548 patent/US10453245B2/en active Active
-
2019
- 2019-09-05 US US16/562,319 patent/US11288855B2/en active Active
- 2019-09-05 US US16/562,279 patent/US11574434B2/en active Active
-
2022
- 2022-12-14 US US18/081,591 patent/US11861786B2/en active Active
-
2023
- 2023-12-31 US US18/401,537 patent/US20240233243A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1890267A2 (en) * | 1998-07-16 | 2008-02-20 | The Research Foundation of the State University of New York | Apparatus and method for real-time volume processing and universal 3D rendering |
CN101052882A (zh) * | 2004-07-28 | 2007-10-10 | 专家服务集团公司 | 自动流体处理筒、流体处理系统及方法 |
CN102037497A (zh) * | 2008-03-21 | 2011-04-27 | 柯斯提克绘图有限公司 | 用于光线追踪渲染的并行相交测试及着色的架构 |
CN102697523A (zh) * | 2011-03-25 | 2012-10-03 | 通用电气公司 | 用于显示体积超声图像上的交叉信息的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
GB2544931B (en) | 2017-10-18 |
GB201703717D0 (en) | 2017-04-19 |
GB201403240D0 (en) | 2014-04-09 |
GB2541084A (en) | 2017-02-08 |
US20200005519A1 (en) | 2020-01-02 |
GB2513698B (en) | 2017-01-11 |
CN109754455B (zh) | 2023-06-06 |
GB2550091B (en) | 2018-04-04 |
US11288855B2 (en) | 2022-03-29 |
CN104050707B (zh) | 2019-01-29 |
DE102014003698A1 (de) | 2014-09-18 |
US11861786B2 (en) | 2024-01-02 |
US20190392629A1 (en) | 2019-12-26 |
GB2513698A (en) | 2014-11-05 |
GB201712746D0 (en) | 2017-09-20 |
CN104050707A (zh) | 2014-09-17 |
CN109741437A (zh) | 2019-05-10 |
US10453245B2 (en) | 2019-10-22 |
US20230154103A1 (en) | 2023-05-18 |
US20170278297A1 (en) | 2017-09-28 |
US11574434B2 (en) | 2023-02-07 |
US20240233243A1 (en) | 2024-07-11 |
CN109741435A (zh) | 2019-05-10 |
US9704283B2 (en) | 2017-07-11 |
GB2550091A (en) | 2017-11-08 |
GB2541084B (en) | 2017-05-17 |
GB2544931A (en) | 2017-05-31 |
CN109741435B (zh) | 2023-06-06 |
CN109754455A (zh) | 2019-05-14 |
GB201609754D0 (en) | 2016-07-20 |
US20140333623A1 (en) | 2014-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109741437B (zh) | 用于进行渲染的方法和装置 | |
US11861787B2 (en) | 3-D graphics rendering with implicit geometry | |
EP3435335B1 (en) | Hybrid hierarchy for ray tracing | |
US20230016561A1 (en) | Systems and methods for 3-d scene acceleration structure creation and updating | |
US9940687B2 (en) | Dynamic graphics rendering scheduling | |
Zhao et al. | Physics-based differentiable rendering: from theory to implementation | |
GB2549217A (en) | 3-D Graphics rendering with implicit geometry | |
Seibert et al. | Fast optical monte carlo simulation with surface-based geometries using chroma | |
Köster et al. | Screen Space Particle Selection. | |
Biedert et al. | Direct Raytracing of Particle-based Fluid Surfaces Using Anisotropic Kernels. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |