射线锥追踪和纹理过滤的技术

文档序号:1817789 发布日期:2021-11-09 浏览:24次 >En<

阅读说明:本技术 射线锥追踪和纹理过滤的技术 (Techniques for ray cone tracing and texture filtering ) 是由 T·阿肯宁-莫勒 J·博克尚斯基 O·莱特 于 2021-03-08 设计创作,主要内容包括:本发明公开了射线锥追踪和纹理过滤的技术。一种用于计算纹理颜色的方法的一个实施例,包括通过图形场景追踪射线锥,在射线锥撞击第一表面的点,基于与所述点相关联的微分重心坐标,确定所述点处图形场景内的第一表面的曲率,基于所述第一表面的曲率确定射线锥撞击图形场景内的第二表面的后续点处的射线锥的宽度,并根据射线锥的宽度计算纹理颜色。(The invention discloses a technology of ray cone tracing and texture filtering. One embodiment of a method for computing texture color includes tracking a ray cone through a graphical scene, at a point where the ray cone strikes a first surface, determining a curvature of the first surface within the graphical scene at the point based on differential barycentric coordinates associated with the point, determining a width of the ray cone at a subsequent point where the ray cone strikes a second surface within the graphical scene based on the curvature of the first surface, and computing a texture color from the width of the ray cone.)

射线锥追踪和纹理过滤的技术

相关申请的交叉引用

本申请要求于2020年5月26日提交的、申请号为63/030162名称为“用于射线追踪的纹理过滤技术(Texture Filtering Technologies for Ray Tracing)”的美国临时专利申请的权益,该美国临时专利申请要求于2020年5月8日提交的、申请号为63/022033、题为“用于射线追踪的纹理过滤技术(Texture Filtering Technologies for Ray Tracing)”的临时专利申请的权益。这些相关申请的主题在此通过引用并入本文中。

技术领域

本公开的实施例总体上涉及计算机科学和计算机图形,并且更具体地,涉及用于射线锥追踪和纹理滤波的技术。

背景技术

在三维(3D)计算机图形学中,射线追踪是用于渲染图像(例如电影或视频游戏的帧)的流行技术。射线追踪技术追踪光线的路径并模拟光线与虚拟场景中的虚拟对象交互的效果。射线锥追踪技术与射线追踪技术类似,不同之处在于射线锥追踪技术可追踪整个场景中的视锥。射线锥追踪技术可以解决各种影响射线追踪技术的采样和混叠问题。

用于实现射线锥追踪的一种方法是使用初始G缓冲区光栅化通道(pass)来确定和存储表面扩散角,该表面扩散角表示场景内物体表面上的曲率,并用于确定射线锥在将其追踪通过场景时如何生长和收缩。但是,就确定和存储表面扩展角所需的计算和存储资源而言,G缓冲区光栅化通道非常昂贵。

另外,常规的射线锥追踪技术针对具有不同大小的多个纹理分别计算纹理映射采样级别。纹理映射是处于不同“级别”的预先计算的图像,它们是同一图像的分辨率逐渐降低的表示形式。一般而言,根据常规的射线锥追踪技术,单独计算纹理映射采样级别在计算上是昂贵的。

如前所述,在本领域中需要使用射线锥追踪来渲染图形场景的更有效的技术。

发明内容

本公开的一个实施例阐述了一种用于计算纹理颜色的计算机实现的方法。该方法包括通过图形场景追踪射线锥。该方法还包括在射线锥撞击图形场景内的第一表面的点处,基于与该点相关联的微分重心坐标确定第一表面的曲率。该方法还包括基于第一表面的曲率来确定在射线锥击中图形场景内的第二表面的后续点处的射线锥的宽度。另外,该方法包括基于射线锥的宽度计算纹理颜色。

本公开的另一个实施例阐述了一种用于计算纹理颜色的计算机实现的方法。该方法包括确定与撞击点相关的一组微分重心坐标,在该重击点处射线锥与图形场景内的第一表面相交。所述方法还包括基于所述一组重心坐标确定与所述撞击点相关联的第一表面扩展角,以及基于所述第一表面扩展角来确定在后续的撞击点处所述射线锥的宽度,其中所述射线锥与图形场景内的第二个表面相交。该方法还包括基于射线锥的宽度确定第一细节水平参数值,以及基于第一细节级别参数值执行一个或更多个纹理过滤操作。另外,该方法包括基于一个或更多个纹理过滤操作的结果来计算纹理颜色。

本公开的其他实施例包括但不限于一个或更多个计算机可读介质,其包括用于执行所公开的技术的一个或更多个方面的指令以及用于执行所公开的技术的一个或更多个方面的一个或更多个计算系统。

相对于现有技术,所公开的技术的至少一个技术优势在于,确定用于确定纹理映射采样级别的微分法线,无需单独的G缓冲区光栅化通道。结果,所公开的技术比常规的射线锥追踪技术更快并且需要更少的存储空间。此外,公开了用于确定表面扩展角的技术,与使用常规技术确定的表面扩展角相比该表面扩展角产生更正确渲染的图像。另外,所公开的技术允许比常规射线锥追踪技术更有效地确定具有不同分辨率的多个纹理的纹理映射采样级别。这些技术优势代表相对于现有技术方法的一种或多更种技术进步。

附图说明

可以通过参考各个实施例,其中一些在附图中示出,来获得详细理解各个实施例的上述特征的方式,对以上简要概述的发明构思进行更具体的描述。然而,应注意,附图仅示出了发明构思的典型实施例,因此不应以任何方式被认为是对范围的限制,并且还有其他等效的实施例。

图1是示出配置为实现本实施例的一个或更多个方面的计算机系统的框图。

图2是根据各种实施例的包括在图1的并行处理子系统中的并行处理单元的框图。

图3是根据各种实施例的包括在图2的并行处理单元中的通用处理集群的框图。

图4示出了根据各种实施例的通过虚拟三维场景追踪的示例性射线锥。

图5示出了根据各种实施例的在不同类型的表面几何形状下的示例性反射交互作用。

图6示出了根据各种实施例的用于确定微分重心坐标的方法。

图7是根据各个实施例的用于通过射线锥追踪技术计算像素的颜色的方法步骤的流程图。

具体实施方式

在以下描述中,阐述了许多具体细节以提供对各种实施例的更彻底的理解。然而,对于本领域的技术人员将显而易见的是,可以在没有一个或更多个这些具体细节的情况下实践本发明构思。

通用概览

本公开的实施例提供了用于纹理过滤的改进的射线锥追踪技术。改进的射线锥追踪技术具有许多实际应用,包括视频游戏、电影制作渲染、建筑和设计应用以及可以使用射线锥追踪渲染图像的任何其他应用。在改进的射线锥追踪技术中,当通过虚拟三维(3D)场景追踪的射线锥撞击场景中的表面时,将根据微分重心坐标确定表面的曲率。然后,当射线锥撞击场景中的另一个表面时,可以使用表面的曲率确定射线锥的宽度。进而,射线锥的宽度用于确定可以应用于正在渲染的图像的像素的纹理颜色。

公开了用于确定射线锥撞击表面的点处的表面曲率的各种技术。通常,表面的曲率是基于与该点处的表面相关的微分法线确定的,而这些法线本身是基于微分重心坐标确定的。此外,可以将表面的曲率确定为沿着不同尺寸的两个曲率的绝对值中的较大者。另外,如果表面与具有不同分辨率的多个纹理相关联,则可以确定与分辨率无关的参数值以及取决于分辨率的参数值。

本公开的射线锥追踪技术具有许多实际应用。例如,射线锥追踪技术可以用于有效地渲染视频游戏中的图像和/或帧。特别地,所公开的射线锥追踪技术比常规的射线锥追踪技术需要更少的存储空间并产生更多正确渲染的图像。与使用某些其他渲染技术(例如栅格化)渲染的图像和/或帧相比,渲染的图像和/或帧也可能看起来更逼真。

作为另一个示例,射线锥追踪技术可以用于对电影进行渲染的制作质量中。动画电影以及计算机生成的图像(CGI)的制作以及真人电影中的特殊效果通常需要对这些电影的帧进行高质量地渲染。所公开的射线锥追踪技术可用于比某些其他技术,例如常规射线锥追踪技术,更有效和正确地渲染电影的帧。

作为又一个示例,所公开的射线锥追踪技术可以用于渲染建筑结构和其他物体的设计。建筑和设计应用程序通常会提供渲染图,以显示特定设计在现实生活中的外观。所公开的射线锥追踪技术可用于比某些其他技术,例如常规射线锥追踪技术,更有效和正确地渲染设计的图像。

上面的示例绝非旨在进行限制。如本领域技术人员将理解的,作为一般事项,本文描述的射线锥追踪技术可以在当前采用常规射线追踪和/或射线锥追踪技术的任何应用中实施。

系统概览

图1是示出配置为实现本实施例的一个或更多个方面的计算机系统100的框图。如本领域技术人员将理解的,计算机系统100可以是任何类型的技术上可行的计算机系统,包括但不限于服务器机器、服务器平台、台式机器、膝上型计算机或手持/移动设备。在一些实施例中,计算机系统100是在数据中心或云计算环境中操作的服务器机器,其通过网络提供可扩展计算资源作为服务。

在各个实施例中,计算机系统100包括但不限于中央处理单元(CPU)102和经由存储器桥105和通信路径113耦合到并行处理子系统112的系统存储器104。存储器桥105还经由通信路径106耦合到I/O(输入/输出)桥107,并且I/O桥107又耦合到交换机116。

在一个实施例中,I/O桥107配置为从诸如键盘或鼠标的可选输入设备108接收用户输入信息,并将输入信息转发给CPU 102以经由通信路径106和存储器桥105进行处理。在一些实施例中,计算机系统100可以是云计算环境中的服务器机器。在这样的实施例中,计算机系统100可以不具有输入设备108。相反,计算机系统100可以通过接收通过网络发送并经由网络适配器118接收的消息形式的命令来接收等效输入信息。在一个实施例中,交换机116配置为在I/O桥接器107和计算机系统100的其他组件(例如网络适配器118和各种附加卡120和121)之间提供连接。

在一个实施例中,I/O桥107耦合到系统盘114,该系统盘114可以配置为存储供CPU102和并行处理子系统112使用的内容和应用以及数据。在一个实施例中,系统盘114提供用于应用程序和数据的非易失性存储器,可能包括固定或可移动硬盘驱动器、闪存设备以及CD-ROM(紧凑型光盘只读存储器)、DVD-ROM(数字多功能光盘-ROM)、蓝光、HD-DVD(高清晰度DVD)或其他磁性、光学或固态存储设备。在各种实施例中,诸如通用串行总线或其他端口连接、光盘驱动器、数字多功能磁盘驱动器、电影记录设备等的其他组件也可以连接至I/O桥107。

在各个实施例中,存储器桥105可以是北桥芯片,并且I/O桥107可以是南桥芯片。另外,通信路径106和113以及计算机系统100内的其他通信路径可以使用任何技术上合适的协议来实现,包括但不限于AGP(加速图形端口)、超传输或任何其他总线或本领域已知的点对点通信协议。

在一些实施例中,并行处理子系统112包括将像素传送到可选显示设备110的图形子系统,该可选显示设备可以是任何常规的阴极射线管、液晶显示器、发光二极管显示器等。在这样的实施例中,并行处理子系统112包括为图形和视频处理而优化的电路,包括例如视频输出电路。如下面结合图2更详细描述的,这样的电路可以跨在并行处理子系统112中包括的一个或更多个并行处理单元(PPU)(在本文中也称为并行处理器)中并入。在其他实施例中,并行处理子系统112包括为通用和/或计算处理而优化的电路。再次,可将这样的电路并入包括在并行处理子系统112中的一个或更多个PPU中,所述PPU配置为执行这种通用和/或计算操作。在其他实施例中,并行处理子系统112中包括的一个或更多个PPU可以配置为执行图形处理、通用处理和计算处理操作。系统存储器104包括至少一个设备驱动器,其配置为管理并行处理子系统112内的一个或更多个PPU的处理操作。此外,系统存储器104包括渲染应用程序130。渲染应用程序130可以是使用本文公开的射线锥描影技术渲染虚拟3D场景的任何技术上可行的应用程序。例如,渲染应用程序130可以是游戏应用程序或在电影制作中使用的渲染应用程序。尽管此处主要针对渲染应用程序130进行了描述,但本文所公开的技术也可以全部或部分地在其他软件和/或硬件(例如并行处理子系统112)中实现。

在各个实施例中,并行处理子系统112可以与图1的一个或更多个其他元件集成在一起以形成单个系统。例如,并行处理子系统112可以与CPU 102和其他连接电路集成在单个芯片上,以形成片上系统(SoC)。

在一个实施例中,CPU 102是计算机系统100的主处理器,其控制和协调其他系统组件的操作。在一实施例中,CPU 102发出控制PPU的操作的命令。在一些实施例中,通信路径113是PCI快速链路,如本领域所公知的,其中专用通道被分配给每个PPU。也可以使用其他通信路径。PPU有利地实现了高度并行的处理架构。PPU可以配备有任何数量的本地并行处理存储器(PP存储器)。

将意识到,本文所示的系统是说明性的,并且可以进行变化和修改。可以根据需要修改连接拓扑,包括桥的数量和布置、CPU 102的数量以及并行处理子系统112的数量。例如,在一些实施例中,系统存储器104可以直接而不是通过存储器桥105连接到CPU 102,并且其他设备将通过存储器桥105和CPU 102与系统存储器104通信。在其他实施例中,并行处理子系统112可以将其连接到I/O桥107或直接连接到CPU 102,而不是连接到存储器桥105。在其他实施例中,I/O桥107和存储器桥105可以集成到单个芯片中,而不是以一个或更多个分立设备的形式存在。最后,在某些实施例中,可能不存在图1所示的一个或更多个组件。例如,可以省去交换机116、网络适配器118和附加卡120、121将直接连接到I/O桥107。

图2是根据各种实施例的包括在图1的并行处理子系统112中的并行处理单元(PPU)202的框图。尽管图2描绘了一个PPU 202,但是如上所述,并行处理子系统112可以包括任意数量的PPU 202。如图所示,PPU202耦合到本地并行处理(PP)存储器204。PPU 202和PP存储器204可以是使用一个或更多个集成电路设备(例如可编程处理器、专用集成电路(ASIC)或存储设备)或以任何其他技术上可行的方式来实现。

在一些实施例中,PPU 202包括图形处理单元(GPU),其可以配置为实现图形渲染管线以基于由CPU 102和/或系统存储器104提供的图形数据执行与生成像素数据有关的各种操作。当处理图形数据时,PP存储器204可以用作存储一个或更多个常规帧缓冲器以及如果需要的话还存储一个或更多个其他渲染目标的图形存储器。其中,PP存储器204可用于存储和更新像素数据,并将最终像素数据或显示帧传送到可选的显示设备110以进行显示。在一些实施例中,PPU 202也可以配置用于通用处理和计算操作。在一些实施例中,计算机系统100可以是云计算环境中的服务器机器。在这样的实施例中,计算机系统100可以不具有显示设备110。相反,计算机系统100可以通过经由网络适配器118通过网络以消息的形式发送命令来生成等效的输出信息。

在一些实施例中,CPU 102是计算机系统100的主处理器,其控制和协调其他系统组件的操作。在一个实施例中,CPU 102发出控制PPU 202的操作的命令。在一些实施例中,CPU 102将用于PPU 202的命令流写入可能位于CPU 102和PPU 202均可访问的系统存储器104、PP存储器204或另一个存储位置中的数据结构(图1或图2中未明确示出)。指向数据结构的指针被写入命令队列(在本文中也称为推入缓冲区),以启动对数据结构中的命令流的处理。在一个实施例中,PPU 202从命令队列中读取命令流,然后相对于CPU 102的操作异步地执行命令。在生成多个推缓冲区的实施例中,应用程序可以通过设备驱动程序为每个推缓冲区指定执行优先级以控制对不同推送缓冲区的调度。

在一个实施例中,PPU 202包括I/O(输入/输出)单元205,其经由通信路径113和存储器桥105与计算机系统100的其余部分通信。在一个实施例中,I/O单元205生成分组(或其他信号)以在通信路径113上传输,并且还从通信路径113接收所有传入的分组(或其他信号),将传入的分组定向到PPU 202的适当组件。例如,可以定向与处理任务有关的命令到主机接口206的命令,而与存储器操作有关的命令(例如,从PP存储器204读取或向PP写入存储器204命令)可以被定向到交叉开关单元210。在一个实施例中,主机接口206读取每个命令队列并发送存储的在命令队列中的命令流到达前端212。

如以上结合图1所述,PPU 202到计算机系统100其余部分的连接可以改变。在一些实施例中,包括至少一个PPU 202的并行处理子系统112被实现为可以插入计算机系统100的扩展槽中的附加卡。在其他实施例中,PPU 202可以集成在具有总线桥(例如存储器桥105或I/O桥107)的单个芯片上。再次,在其他实施例中,PPU 202的某些或全部元素可以与CPU102一起包含在单个集成电路或芯片系统中(SoC)。

在一个实施例中,前端212将从主机接口206接收的处理任务发送到任务/工作单元207内的工作分配单元(未示出)。在一个实施例中,工作分配单元接收指向已编码的处理任务的指针作为任务元数据(TMD)并存储在存储器中。指向TMD的指针包含在命令流中,该命令流存储为命令队列并由前端单元212从主机接口206接收。可以编码为TMD的处理任务也包括与要处理的数据相关的索引作为定义如何处理数据的状态参数和命令。例如,状态参数和命令可以定义要在数据上执行的程序。同样,例如,TMD可以指定一组CTA的数量和配置。通常,每个TMD都对应一个任务。任务/工作单元207从前端212接收任务,并确保在启动由每个TMD指定的处理任务之前,将GPC 208配置为有效状态。可以为每个TMD指定一个优先级,该优先级用于安排处理任务的执行。还可以从处理集群阵列230接收处理任务。可选地,TMD可以包括控制是否将TMD添加到处理任务列表的头部或尾部(或指向处理任务的指针的列表)的参数,从而提供对执行优先级的另一级控制。

在一个实施例中,PPU 202基于处理集群阵列230实现高度并行的处理架构,该处理集群阵列230包括一组C个通用处理集群(GPC)208,其中C≥1。每个GPC 208能够执行大型并发线程数(例如数百或数千),其中每个线程是程序的一个实例。在各种应用中,可以分配不同的GPC 208用于处理不同类型的程序或用于执行不同类型的计算。GPC 208的分配可以根据每种类型的程序或计算产生的工作量而变化。

在一个实施例中,存储器接口214包括一组D个分区单元215,其中D≥1。每个分区单元215耦合到驻留在PPM存储器204中的一个或更多个动态随机存取存储器(DRAM)220。在一些实施例中,分区单元215的数量等于DRAM 220的数量,并且每个分区单元215耦合到不同的DRAM 220。在其他实施例中,分区单元215的数量可以与DRAM 220的数量不同。本领域普通技术人员将理解,可以将DRAM 220替换为任何其他技术上合适的存储设备。在操作中,可以在DRAM 220上存储各种渲染目标,例如纹理映射和帧缓冲区,从而允许分区单元215并行写入每个渲染目标的部分,以有效地使用PP存储器204的可用带宽。

在一个实施例中,给定的GPC 208可以处理要写入PP存储器204中的任何DRAM 220的数据。在一个实施例中,交叉开关单元210配置为将每个GPC 208的输出路由到任何GPC208的输入分区单元215或任何其他GPC 208进行进一步处理。GPC 208经由交叉开关单元210与存储器接口214通信以读取或写入各种DRAM 220。在一些实施例中,交叉开关单元210除了经由存储器接口214与PP存储器204的连接之外,还具有与I/O单元205的连接,从而使不同的GPC 208内的处理核心能够与系统存储器104或不是PPU 202本地的其他存储器进行通信。在图2的实施例中,交叉开关单元210直接与I/O单元205连接。在不同的实施例中,交叉开关单元210可以使用虚拟通道来分离GPC 208和分区单元215之间的业务流。

在一个实施例中,可以将GPC 208编程为执行与各种各样的应用有关的处理任务,包括但不限于线性和非线性数据变换、视频和/或音频数据的过滤、建模操作(例如,应用确定物体的位置、速度和其他属性的物理定律)、图像渲染操作(例如曲面细分着色器、顶点着色器、几何着色器和/或像素/片段着色器程序)、常规计算操作等。在操作中,PPU 202配置为将数据从系统存储器104和/或PP存储器204传输到一个或更多个片上存储器单元、处理数据,并将结果数据写回到系统存储器104和/或PP存储器204。结果数据可以然后由其他系统组件访问,包括CPU 102、并行处理子系统112中的另一个PPU 202或计算机系统100中的另一个并行处理子系统112。

在一个实施例中,并行处理子系统112中可以包括任意数量的PPU 202。例如,可以在单个插入卡上提供多个PPU 202,或者可以将多个插入卡连接到通信路径113,或者一个或更多个PPU 202中的可以集成到桥芯片中。多PPU系统中的PPU 202可以彼此相同或不同。例如,不同的PPU 202可能具有不同数量的处理核心和/或不同数量的PP存储器204。在存在多个PPU 202的实现中,这些PPU可以并行运行以比单个PPU 202更高的吞吐量处理数据。包含一个或更多个PPU 202的系统可以以各种配置和形式实现,包括但不限于台式机、笔记本电脑、手持式个人计算机或其他手持式设备、服务器、工作站、游戏机、嵌入式系统等等。

图3是根据各种实施例的包括在图2的并行处理单元(PPU)202中的通用处理集群(GPC)208的框图。如图所示,GPC 208包括但不限于管线管理器305、一个或更多个纹理单元315、preROP单元325、工作分配交叉开关330和L1.5高速缓存335。

在一个实施例中,GPC 208可以配置为并行执行大量线程以执行图形、通用处理和/或计算操作。如本文所使用的,“线程”是指在特定的一组输入数据上执行的特定程序的实例。在一些实施例中,单指令多数据(SIMD)指令发布技术用于支持大量线程的并行执行而无需提供多个独立指令单元。在其他实施例中,使用单指令多线程(SIMT)技术来支持并行执行大量一般同步的线程,方法是使用配置为向GPC 208中的一组处理引擎发出指令的通用指令单元。不同于所有处理引擎通常执行相同指令的SIMT执行机制的情况,SIMT执行允许不同的线程更容易地通过给定程序遵循发散的执行路径。本领域普通技术人员将理解,SIMD处理方案代表SIMT处理方案的功能子集。

在一个实施例中,GPC 208的操作经由管线管理器305来控制,该管线管理器305将从任务/工作单元207内的工作分配单元(未示出)接收的处理任务分配给一个或更多个流式多处理器(SM)310。管理器305也可以配置为通过指定SM 310输出的处理数据的目的地来控制工作分配交叉开关330。

在各个实施例中,GPC 208包括一组M的SM 310,其中M≥1。而且,每个SM 310包括一组功能执行单元(未示出),例如执行单元和负载存储单元。可以对特定于任何功能执行单元的处理操作进行管线处理,这使得能够在前一条指令完成执行之前发出新指令以执行。可以提供给定SM 310内的功能执行单元的任何组合。在各种实施例中,功能执行单元可以配置为支持各种不同的操作,包括整数和浮点算术(例如,加法和乘法)、比较操作、布尔运算(AND、OR、5OR)、移位和各种代数函数(例如,平面插值和三角函数,指数函数和对数函数等)计算。有利地,相同的功能执行单元可以配置为执行不同的操作。

在一个实施例中,每个SM 310配置为处理一个或更多个线程组。如本文所使用的,“线程组”或“线程束”是指在不同的输入数据上同时执行相同程序的一组线程,将该组中的一个线程分配给SM 310内的不同执行单元。可能包括的线程数量少于SM 310中执行单元的数量,在这种情况下,某些执行可能在处理该线程组的周期中处于空闲状态。线程组还可以包括比SM 310中的执行单元数量更多的线程,在这种情况下,处理可以在连续的时钟周期内进行。由于每个SM 310可以同时支持多达G个线程组,因此可以在任何给定时间在GPC208中执行多达G*M个线程组。

另外,在一个实施例中,多个相关线程组可以在SM 310中同时处于活动状态(处于不同的执行阶段)。线程组的这种集合在本文中称为“合作线程阵列”(“CTA”)或“线程数组”。特定CTA的大小等于m*k,其中k是线程组中同时执行的线程数,通常是SM 310中执行单元数的整数倍,而m是在SM 310中同时活跃的线程组的数量。在某些实施例中,单个SM 310可同时支持多个CTA,其中此类CTA具有将工作分配给SM 310的粒度。

在一个实施例中,每个SM 310包含一级(L1)高速缓存,或使用SM 310外部的对应的L1高速缓存中的空间来支持(除其他以外)执行单元执行的加载和存储操作。每个SM 310还可以访问在PPU 202中的所有GPC208之间共享的二级(L2)高速缓存(未示出)。L2高速缓存可以用于在线程之间传输数据。最终,SM 310也可以访问片外“全局”存储器,其可以包括PP存储器204和/或系统存储器104。应当理解,PPU 202外部的任何存储器都可以用作全局存储器。此外,如图3所示,一点五级(L1.5)高速缓存335可以包含在GPC 208中,并配置为接收和保存SM 310经由存储器接口214从存储器请求的数据。这些数据可以包括但不限于指令、统一数据和常量数据。在GPC 208内具有多个SM 310的实施例中,SM 310可以有益地共享高速缓存在L1.5高速缓存335中的公共指令和数据。

在一个实施例中,每个GPC 208可以具有关联的存储器管理单元(MMU)320,该存储器管理单元配置为将虚拟地址映射为物理地址。在各种实施例中,MMU 320可以驻留在GPC208内或存储器接口214内。MMU320包括一组页面表项(PTE),其用于将虚拟地址映射到图块或存储器页面的物理地址,并且可选地高速缓存行索引。MMU 320可以包括地址转换后备缓冲器(TLB)或可以驻留在SM 310中,一个或更多个L1高尚缓存中或GPC 208中。

在一个实施例中,在图形和计算应用中,GPC 208可以配置为使得每个SM 310耦合到纹理单元315,用于执行纹理映射操作,诸如确定纹理样本位置、读取纹理数据以及过滤纹理数据。

在一个实施例中,每个SM 310将处理后的任务发送到工作分配交叉开关330,以便将处理后的任务提供给另一GPC 208以进行进一步处理或将处理后的任务经由交叉开关单元210存储在L2高速缓存(未示出)、并行处理存储器204或系统存储器104中。另外,预光栅操作(preROP)单元325配置为从SM 310接收数据,将数据引导至分区单元215内的一个或更多个光栅操作(ROP)单元,执行颜色混合优化、组织像素颜色数据以及执行地址转换。

将意识到,本文描述的架构是说明性的,并且可以进行变化和修改。其中,GPC 208内可以包括任意数量的处理单元,例如SM 310、纹理单元315或preROP单元325。此外,如以上结合图2所述,PPU 202可以包括任意数量配置为在功能上彼此相似的GPC208,以使执行行为不取决于哪个GPC 208接收特定的处理任务。此外,每个GPC 208独立于PPU 202中的其他GPC 208操作以执行用于一个或更多个应用程序的任务。

射线锥追踪和纹理滤波技术

图4示出了根据各种实施例的通过虚拟三维场景追踪的示例性射线锥。如图所示,作为射线402的增强的射线锥400穿过屏幕空间中的像素401追踪到包含三个对象410、412和414的场景中。当射线锥400撞击对象410、412、414中的一个时,射线锥400的反射方向取决于对象的材料特性。另外,射线锥402的角度基于对象的表面曲率而增大或缩小(或保持不变)。通常,如果射线402与对象的几何形状相交的碰撞点处的表面曲率是凸的,则射线锥400的角度增大,反之亦然。

图5示出了根据各种实施例的在不同类型的表面几何形状下的示例性反射相互作用。在实施例中,表面扩展角β用于对由于撞击点处的表面的曲率导致的射线锥足迹如何增长/收缩进行建模。直观地讲,表面扩展角β对由撞击处的曲率引起的额外扩展进行建模。如下面更详细地描述的,表面扩展角可以用于估计稍后的撞击点处的射线锥的宽度,其可以对应于在纹理过滤期间使用的过滤器的尺寸。纹理过滤技术通过平均纹理中附近的像素来确定纹理映射像素的纹理颜色。然后可以使用纹理颜色来确定渲染图像中的像素颜色。当射线锥击中场景中的纹理化表面(与没有纹理的金属表面相对)时,可以通过对撞击点处射线锥宽度内的附近像素取平均来执行纹理过滤。可以使用例如贴图分级细化(纹理映射)来执行平均。

如面板A所示,在无曲率的平面502上,当射线锥500在平面502上的撞击点处反射时,射线锥500的角度既不增大也不缩小。在这种情况下,表面扩展角β为零。

如面板B中所示,在具有正曲率的凸表面512上,当射线锥510在凸表面512上的碰撞点处反射时,射线锥510的角度尺寸增大。在这种情况下,表面扩展角β>0。

如面板C中所示,在具有负曲率的凹表面522处,当射线锥520在凹表面上的碰撞点处反射时,射线锥520的角度尺寸减小。在这种情况下,表面扩展角β<0。

返回图4,由于撞击点420处的表面曲率为负,因此射线锥400的角度在撞击物体410之后缩小。在缩小到零尺寸之后,射线锥400的尺寸再次增大。然后,由于在撞击点422处的表面曲率是凸的,因此在射线锥400撞击物体412之后,射线锥400的角度增大。

假设矩形对象414具有纹理并且其他对象410和412具有完美的反射性,则可以根据圆锥体400的覆盖区和撞击点424的法线在对象414的撞击点424上执行纹理查找。尽管作为示例描述了关于在撞击点424处的纹理查找,但是通常可以在第二撞击点(例如,撞击点422)处执行纹理查找,并且此后所有撞击点都可以进行纹理查找。在一些实施例中,渲染应用130基于使用在撞击点处的射线锥的宽度确定的纹理映射等级指示GPU中的纹理单元(例如,上面结合图3描述的纹理单元315)在撞击点(例如,撞击点424)处执行纹理过滤,并且将纹理过滤的结果用于在最左边的对象410上渲染纹理反射,如下面更详细描述的。尽管在本文中主要是关于纹理映射来描述的,但是在一些实施例中,射线锥可以与其他纹理过滤技术一起使用,例如各向异性过滤。射线锥400分别从物体410和412反射离开的撞击点420和422处的表面扩展角可用于计算射线锥400增长或收缩多少,并确定在撞击点424处的射线锥400的宽度,撞击点424也称为射线锥的“足迹”,并在纹理过滤中用于确定纹理颜色。在一些实施例中,渲染应用程序130通过使用在撞击处的微分重心坐标确定微分法线并且随后基于微分法线来确定在撞击处的表面扩展角,如下文结合图6更详细地描述。通过动态确定微分法线,可以避免在传统的射线锥追踪技术中用于计算和存储表面扩展角的G缓冲区光栅化通道,从而提高了计算效率。

图6示出了根据各种实施例的用于确定微分重心坐标的方法。如图所示,三角形600示出为代表三角形,在三角形处,与射线锥相关联的射线在撞击点(未示出)处与对象的几何形状相交,包括三个顶点602、604和606。还显示了重心坐标(u,v)。如上所述,计算微分重心坐标,即相对于x和y求出的重心坐标u和v,以确定微分法线,然后可将其用于确定射线锥与场景几何相交的撞击点处的表面扩展角。使三角形600的法线由f表示,并且顶点602、604和606分别由P0、P1和P2表示。可以使用平面方程来计算微分重心坐标,该平面方程经过三角形600的边缘,并且对边缘上的点评估为(1)零,对于不是边缘顶点的顶点评估为(2)一。

假设平面方程经过P0和P1,如图所示,它们与重心坐标u相连。然后,也可以垂直于三角形法线f的边的法线608(表示为mu)可以计算为:

mu=(P2-P0)×f=e2×f (1)

类似地,对于其他重心坐标v,可以将法线my计算为:

mv=(P1-P0)×f=e1×f (2)

平面方程为mu·(X-P0)=0,其中X是平面上法线为mu的任意点。假设平面方程被归一化使得eu(P1)=1,平面方程可以获得为e′u(X)=eu(X)/eu(P1),则可以将边缘方程改写为eu(X)=mu·(X-P0)。前述计算仅需要平面方程的法线向量,并且该法线向量(在此表示为Iu)为:

类似地,对于其他重心坐标v,Iv可以计算为:

另外,由于平面方程式(3)和(4)已经被归一化,因此可以将三角平面法线f计算为f=e1×e2,而不必将其归一化。不需要计算第三重心坐标w的平面方程。特别是w=1-u-v,因此可以根据重心微分将重心微分计算为:

使用平面方程Iu和Iv可以计算出重心微分坐标,从中可以计算出微分法线,可以使用微分法线来计算表面扩展角,可以从表面扩展角确定下一个碰撞点处的射线锥的宽度,并且可以根据射线锥的宽度确定作为细节级别参数值的纹理映射采样级别。如上所述,纹理映射包含不同级别的预先计算的图像,这些图像是可以通过低通滤波获得的同一图像的分辨率逐渐降低的表示形式。在一些实施例中,可以将微分重心坐标计算为:

微分重心坐标然后可以用于计算(非归一化的,由在n以上的条指示)在撞击点处的微分法线为:

并且针对进行类似的计算。反过来,微分法线可以用于确定表面扩展角,而无需G缓冲区光栅化通道。方程(6)来自于对顶点法线ni的插值的微分。给定重心坐标(u,v),可以将顶点法线ni插值为:

其中n上方的条用于指示未归一化。然后可以将归一化的法线微分为

参考x方向,类似地,针对y方向对于进行计算。在等式(8)中,来自等式(7),并且可以使用微分重心坐标计算根据等式(6),类似地对于进行计算。

给定等式(6)在撞击点的微分法线,可以以各种方式确定表面扩展角β。在一些实施例中,表面扩展角β可以确定为:

其中,根据微分法线将βx和βy计算为:

其中(v,u,r)是相机帧,包括视角方向v、向上矢量u和垂直于v和u二者的右侧矢量r。等式(9)的表面扩展背后的原理是为每个x和y计算一个角度。如果表面是凸形的,则两个角度都将为正。另一方面,如果表面是凹面的,那么两个角度都将为负。在这种情况下,将使用幅度最大的角度。否则,如果一个角度为正,而另一个角度为负(可能在双曲线抛物面的表面上发生),则使用这些角度的总和。该总和背后的直觉是,如果一个表面点的“凸”与“凹”一样多,那么总和将为零,其行为就是平面。

在另一个实施例中,表面扩展角β可以确定为:

等式(10)的表面扩展角使用最大角度βx或βy,这意味着具有最大量值的曲率决定了表面扩展角β的值。选择最大幅度的曲率可确保基于表面扩展角的纹理过滤是保守的,即,纹理过滤往往会比混叠产生更多的模糊。通常,过度模糊优于过度混叠,因为混叠会产生嘈杂的闪烁结果。

在其他实施例中,表面扩展角β可以确定为:

等式(11)的表面扩展是平均曲率的近似值。

在其他实施例中,表面扩展角β可以确定为:

如果βx的绝对值大于或等于βy的绝对值,则括号内的方程式(12)的部分会使左括号左侧的部分与βx的符号相乘,否则该部分使左括号左侧的乘以βy的符号。

如所描述的,渲染应用程序130可以使用表面扩展角β来确定在稍后的撞击点(例如,撞击点424)处的射线锥的宽度,随后可以将其用于确定纹理映射采样级别,并且然后,渲染应用程序130可以指示GPU中的纹理单元执行纹理过滤,其中以采样级别对纹理映射进行采样。应当理解,纹理过滤的GPU实现是众所周知的。例如,GPU可以在最接近的纹理映射级别执行双线性插值。作为另一个示例,纹理映射的采样级别可以是介于两个级别之间的非整数,在这种情况下,GPU可以根据使用在撞击点处的射线锥宽度确定的非整数值的一部分,混合来自两个纹理映射级别的双线性滤波结果。

更正式地说,让纹理映射采样级别由参数λ表示。众所周知,第i个撞击点的参数λ可以计算为:

λi=Δi+log2|Wi|-log2|ni·di| (13)

其中,Δi定义为:

其中,ta=wh|(t1x-t0x)(t2y-t0y)-(t2x-t0x)(t1y-t0y)|=whtt,以及pa=|(p1x-p0x)(p2y-p0y)-(p2x-p0x)(p1y-p0y)|,其中,w×h是纹理分辨率。此外,第i个撞击点处的射线锥的宽度Wi可以计算为:

Wi=Wi-1iti (15)

其中,γi=γi-1i-1。返回至图4所示的示例,在撞击点422处的射线锥400的宽度为W0=αt0=γ0t0,其中引入α为α=γ0;在撞击点424处的射线锥400的宽度为W1=W01t0=αt0+(α+β0)t1,其中,β0是在第一撞击点处的表面扩展角等。

在一些实施例中,渲染应用程序130可以使用对等式(14)的修改,该修改更有效地处理每个三角形具有不同大小的多个纹理,其在本文中也称为分辨率。例如,一个纹理可以是基础颜色纹理,另一个纹理可以是指示光泽的镜面颜色纹理,另一个纹理可以是指示法线在表面上如何变化的法线贴图,另一个纹理可以是发光纹理,等等,并且多个纹理可能具有不同的分辨率。等式(14)将纹理分辨率w×h烘烤为Δi,当将具有不同分辨率的多个纹理应用于三角形时,这是不理想的,因为每个纹理需要使用单独的纹理映射采样级别参数值λi。但是,公式(14)可以重写为:

在等式(16)中,是包括纹理图像的宽度和高度的与依赖于纹理分辨率的项,而是与纹理分辨率无关的项(尽管仍然取决于纹理坐标)。进一步,代替计算纹理映射采样级别参数值λi,渲染应用程序130可以首先计算与纹理分辨率无关的纹理映射采样级别参数值λit的一部分:

其可以在三角形的所有纹理之间共享。然后,就在对特定纹理j进行采样之前,渲染应用程序130可以将该纹理的最终λij计算为:

总体上参考图4-6,本领域技术人员将理解,为了清楚起见给出了前述示例,并且不意味着限制本发明的范围。通常,可以采用任何技术上可行的方法来修改或置换图形对象,并且可以同等采用任何技术上可行的方法来检测修改或置换图形对象。

图7是根据各种实施例的用于射线锥追踪的方法步骤的流程图。尽管结合图1-3的系统描述了方法步骤,但是本领域技术人员将理解,配置成以任何顺序执行方法步骤的任何系统都落在本实施例的范围内。尽管相对于追踪单条射线进行了描述,但是在渲染图像时可以重复方法步骤以追踪多条射线。

如图所示,方法700在步骤702开始,其中渲染应用程序130通过屏幕空间中的像素将射线锥追踪至场景,直到第二个撞击点。第二个撞击点发生在射线锥击中并在第一个撞击点处反射出场景内的几何形状,然后反射的射线锥在第二个撞击点处再次击中场景内的几何形状。步骤702假定存在这样的第二撞击点。如果没有第二撞击点,则方法700结束。

在步骤704中,渲染应用程序130确定撞击点处的微分重心坐标。在一些实施例中,渲染应用130基于根据等式(1)-(5)的平面等式来确定微分重心坐标。

在步骤706中,渲染应用程序130基于微分重心坐标确定微分法线。在一些实施例中,渲染应用130根据等式(6)确定微分法线。

在步骤708中,渲染应用程序130基于微分法线确定表面扩展角度。在一些实施例中,渲染应用程序130可以根据等式(9)确定表面扩展角。在其他实施例中,渲染应用130可以根据等式(10)确定表面扩展角。在其他实施例中,渲染应用程序130可以根据等式(11)确定表面扩展角。在另外的实施例中,渲染应用130可以根据等式(12)确定表面扩展角。

在步骤710,如果在撞击点处的表面没有纹理,则方法700继续到步骤712,在步骤712,渲染应用程序130应用着色计算,计算反射的射线锥,并利用反射的射线锥追踪反射的射线,直到下一个撞击点。在一些实施例中,取决于表面扩展角,反射的射线锥可增长或收缩,所述表面扩展角是基于微分法线以多种方式之一确定的,微分法线本身是基于撞击点的微分重心坐标来计算的,如所述上面结合6进行了描述。假设存在下一个撞击点,则方法700返回到步骤704,在步骤704中,渲染应用130确定在下一个撞击点处的微分重心坐标。

另一方面,如果在步骤710中渲染应用程序130确定在撞击点处的表面具有纹理,则方法700直接进行到步骤714,在步骤714中,渲染应用程序130基于在先前的撞击点确定的表面扩展角来确定纹理映射采样级别,先前的撞击点确定的表面扩展角可以用于确定当前撞击点处射线锥的宽度。在一些实施例中,渲染应用程序130根据等式(13)-(15)来确定纹理映射采样级别参数值λi。在一些实施例中,渲染应用130还根据等式(16)-(17),基于纹理本身的值通过首先计算独立于纹理分辨率的纹理映射采样级别参数值的一部分,然后计算纹理映射采样级别参数的其余部分,来处理具有不同尺寸并将应用于三角形的多个纹理,。

在步骤716中,渲染应用程序130使GPU中的纹理单元(例如,以上结合图3描述的纹理单元315)基于纹理映射采样级别和撞击点执行纹理过滤。在一些实施例中,纹理单元可以执行三线性纹理映射并以纹理映射采样级别对纹理映射进行采样。

在步骤718中,在纹理单元已经基于纹理映射采样级别和撞击点执行了纹理滤波之后,渲染应用130从纹理单元接收纹理滤波值。

在步骤720中,渲染应用程序130将纹理过滤器值应用于或累积到在步骤702中射线锥所追踪的像素。所应用或累积的纹理过滤器值有助于渲染图像中像素的颜色。如上所述,渲染的图像可以是例如视频游戏或电影中的图像或帧,由建筑或设计应用程序或任何其他应用程序生成的图像等。

尽管在此相对于将滤波器值应用于或累积纹理滤波器值到像素进行了描述,但是在其他实施例中,可以以任何技术上可行的方式来使用纹理滤波器值。

在步骤722中,渲染应用程序130应用着色计算、计算反射的射线锥、并利用反射的射线锥追踪反射射线,直到下一个撞击点。类似于步骤706,反射的射线锥增长或收缩的速率取决于在步骤712确定的表面扩散角。假定存在下一个撞击点,方法700返回到步骤704,在此渲染应用程序130确定在下一个撞击点的微分重心坐标。

总而言之,所公开的技术通过确定撞击点处的微分重心坐标来避免在射线锥追踪期间单独的G缓冲区光栅化通道,该微分重心坐标用于确定微分法线,该微分法线然后用于确定表面扩展角,该表面扩展角用于计算射线锥的宽度,可以从中确定纹理映射采样级别,并在纹理过滤操作期间将其用于对纹理映射进行采样。公开了用于基于针对x和y轴计算的不同角度来计算表面扩展角的各种技术。另外,公开了以下技术:通过首先计算与分辨率无关的纹理映射采样级别参数值的一部分,然后基于多个纹理来计算纹理映射采样级别参数值的其余部分,来确定具有不同大小的多个纹理的纹理映射采样级别参数值。

相对于现有技术,所公开的技术的至少一个技术优势在于,用于确定纹理映射采样级别的微分法线无需使用单独的G缓冲区光栅化通道即可确定。结果,所公开的技术比常规的射线锥追踪技术更快并且需要更少的存储空间。此外,公开了用于确定产生与使用常规技术确定的表面扩展角相比更正确渲染的图像的表面扩展角的技术。另外,所公开的技术允许比常规射线锥描迹技术更有效地确定具有不同分辨率的多个纹理的纹理映射采样级别。这些技术优势代表相对于现有技术方法的一种或更多种技术进步。

1.在一些实施例中,一种计算机实现的方法,用于计算纹理颜色,包括:追踪射线锥穿过图形场景,在射线锥撞击第一表面的点处,基于与该点关联的微分重心坐标确定图形场景内的第一表面的曲率,基于第一表面的曲率,确定射线锥撞击图形场景中的第二表面的后续点处的射线锥的宽度,并基于射线锥的宽度计算纹理颜色。

2.根据条款1所述的计算机实现的方法,其中通过确定与第一尺寸相关联的第一曲率的绝对值是否大于与第二尺寸相关联的第二曲率的绝对值,确定所述第一表面的所述第一曲率。

3.根据条款1或2所述的计算机实现的方法,其中计算所述纹理颜色包括:基于所述射线锥的宽度确定细节级别参数值;以及基于所述细节级别参数值执行一个或更多个纹理过滤操作。

4.根据条款1至3中的任一项所述的计算机实现的方法,进一步包括生成经渲染的图像,其中生成所述经渲染的图像包括将所述纹理颜色应用后累积至所述经渲染的图像中的像素。

5.根据条款1至4中的任一项所述的计算机实现的方法,其中所述经渲染的图像包括与视频游戏、电影、或建筑或设计应用程序相关联的图像或帧中的一个。

6.在一些实施例中,一种计算机实现的方法,用于计算纹理颜色,所述方法包括:确定与射线锥与图形场景中的第一表面相交的撞击点相关联的一组微分重心坐标;基于所述一组微分重心坐标确定与所述撞击点相关联的第一表面扩展角;基于所述第一表面扩展角,确定所述射线锥与所述图形场景中的第二表面相交的后续的撞击点处的所述射线锥的宽度;基于所述射线锥的宽度,确定第一细节级别参数值;基于所述第一细节级别参数值执行一个或更多个纹理过滤操作;以及基于所述一个或更多个纹理过滤操作的结果计算纹理颜色。

7.根据条款6所述的计算机实现的方法,其中确定所述第一表面扩展角包括:基于所述微分重心坐标确定所述点处与所述第一表面相关联的一组微分法线;以及基于所述一组微分法线,确定所述第一表面扩展角。

8.根据条款6或7所述的计算机实现的方法,其中确定所述第一表面扩展角包括:确定与第一尺寸相关联的第二表面扩展角和与第二尺寸相关联的第三表面扩展角;以及基于所述第二表面扩展角和第三表面扩展角确定所述第一表面扩展角。

9.根据条款6至8中的任一项所述的计算机实现的方法,其中确定所述第一表面扩展角包括选择所述第二表面扩展角或所述第三表面扩展角中的具有较大绝对值的一个。

10.根据条款6至9中的任一项所述的计算机实现的方法,其中通过确定所述第二表面扩展角和所述第三表面扩展角的平均值来确定所述第一表面扩展角。

11.根据条款6至10中的任一项所述的计算机实现的方法,其中基于所述第二表面扩展角和所述第三表面扩展角来确定所述第一表面扩展角包括:如果所述第二表面扩展角和所述第三表面扩展角均是正角,则选择所述第二表面扩展角和所述第三表面扩展角中较大的角;如果所述第二表面扩展角和所述第三表面扩展角均是负角,则选择所述第二表面扩展角和所述第三表面扩展角中较小的角;或者如果所述第二表面扩展角或者所述第三表面扩展角中只有一个是正角,则确定所述第二表面扩展角和所述第三表面扩展角的和。

12.根据条款6至11中的任一项所述的计算机实现的方法,其中基于所述第二表面扩展角和所述第三表面扩展角来确定所述第一表面扩展角包括:如果所述第二表面扩展角的绝对值大于所述第三表面扩展角的绝对值,则确定所述第二表面扩展角的符号和项的乘积;如果所述第三表面扩展角的绝对值大于所述第二表面扩展角的绝对值,则确定所述第三表面扩展角的符号和所述项的乘积,其中,所述项等于二与所述第二表面扩展角的平方和所述第三表面扩展角的平方的和的平方根的乘积。

13.根据条款6至12中的任一项所述的计算机实现的方法,其中所述第二表面与具有不同分辨率的多个纹理相关联,以及确定所述第一细节级别参数包括:确定独立于纹理分辨率的第二细节级别参数值;以及基于所述第二细节级别参数值确定所述第一细节级别参数值。

14.在一些实施例中,一个或更多个非暂时性计算机可读介质,用于存储程序指令,当通过至少一个处理器执行所述程序指令时,使至少一个处理器执行:确定与射线锥与图形场景中的第一表面相交的撞击点相关联的一组微分重心坐标;基于所述一组微分重心坐标确定与所述撞击点相关联的第一表面扩展角;基于所述第一表面扩展角,确定所述射线锥与所述图形场景中的第二表面相交的后续的撞击点处的所述射线锥的宽度;基于所述射线锥的宽度,确定第一细节级别参数值;基于所述第一细节级别参数值执行一个或更多个纹理过滤操作;以及基于所述一个或更多个纹理过滤操作的结果计算纹理颜色。

15.根据条款14所述的一个或更多个非暂时性计算机可读介质,其中至少一个处理器包括图形处理单元(GPU)、以及经由包括在所述GPU中的纹理单元执行一个或更多个纹理过滤操作。

16.根据条款14或15所述的一个或更多个非暂时性计算机可读介质,其中确定所述第一表面扩展角包括:基于所述一组微分重心坐标,确定在所述撞击点处的与所述第一表面相关联的一组微分法线;以及基于所述一组微分法线确定所述第一表面扩展角。

17.根据条款14至16中的任一项所述的一个或更多个非暂时性计算机可读介质,其中确定所述第一表面扩展角包括:确定与第一尺寸相关联的第二表面扩展角和与第二尺寸相关联的第三表面扩展角;以及选择所述第二表面扩展角或所述第三表面扩展角中的具有较大绝对值的一个。

18.根据条款14至17中的任一项所述的一个或更多个非暂时性计算机可读介质,其中确定所述第一表面扩展角包括:确定与第一尺寸相关联的第二表面扩展角和与第二尺寸相关联的第三表面扩展角;以及确定所述第二表面扩展角和所述第三表面扩展角的平均值。

19.根据条款14至18中的任一项所述的一个或更多个非暂时性计算机可读介质,其中确定所述第一表面扩展角包括:确定与第一尺寸相关联的第二表面扩展角和与第二尺寸相关联的第三表面扩展角;如果所述第二表面扩展角和所述第三表面扩展角均是正角,则选择所述第二表面扩展角和所述第三表面扩展角中较大的角;如果所述第二表面扩展角和所述第三表面扩展角均是负角,则选择所述第二表面扩展角和所述第三表面扩展角中较小的角;或者如果所述第二表面扩展角或者所述第三表面扩展角中只有一个是正角,则确定所述第二表面扩展角和所述第三表面扩展角的和。

20.根据条款14至19中的任一项所述的一个或更多个非暂时性计算机可读介质,其中确定所述第一表面扩展角包括:确定与第一尺寸相关联的第二表面扩展角和与第二尺寸相关联的第三表面扩展角;如果所述第二表面扩展角的绝对值大于所述第三表面扩展角的绝对值,则确定所述第二表面扩展角的符号和项的乘积;如果所述第三表面扩展角的绝对值大于所述第二表面扩展角的绝对值,则确定所述第三表面扩展角的符号和所述项的乘积,其中,所述项等于二与所述第二表面扩展角的平方和所述第三表面扩展角的平方的和的平方根的乘积。

21.根据条款14至20中的任一项所述的一个或更多个非暂时性计算机可读介质,其中所述第二表面与具有不同分辨率的多个纹理相关联,以及确定所述第一细节级别参数包括:确定独立于纹理分辨率的第二细节级别参数值;以及基于所述第二细节级别参数值确定所述第一细节级别参数值。

22.根据条款14至21中的任一项所述的一个或更多个非暂时性计算机可读介质,其中所述第一细节级别参数值指示纹理映射采样级别。

23.在一些实施例中,一种系统,包括:一个或更多个存储器,存储有指令;以及一个或更多个处理器,耦合至所述一个或更多个存储器以及,当执行所述指令时,配置成:确定与射线锥与图形场景中的第一表面相交的撞击点相关联的一组微分重心坐标;基于所述一组微分重心坐标确定与所述撞击点相关联的第一表面扩展角;基于所述第一表面扩展角,确定所述射线锥与所述图形场景中的第二表面相交的后续的撞击点处的所述射线锥的宽度;基于所述射线锥的宽度,确定第一细节级别参数值;基于所述第一细节级别参数值执行一个或更多个纹理过滤操作;以及基于所述一个或更多个纹理过滤操作的结果计算纹理颜色。

以任何方式,在任何权利要求中记载的任何权利要求要素和/或在本申请中描述的任何要素的任何和所有组合都落入本公开和保护的预期范围内。

已经出于说明的目的给出了各种实施例的描述,但并不意图是穷尽的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变型对于本领域普通技术人员将是显而易见的。

本实施例的各方面可以体现为系统、方法或计算机程序产品。因此,本公开的方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或结合了所有通常在本文中称为“模块”或“系统”的软件和硬件方面的实施例的形式。此外,本公开的方面可以采取体现在其上体现有计算机可读程序代码的一个或更多个计算机可读介质中的计算机程序产品的形式。

可以利用一个或更多个计算机可读介质的任何组合。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁性、光学、电磁、红外或半导体系统、装置或设备,或前述的任何合适的组合。计算机可读存储介质的更具体示例(非详尽列表)将包括以下内容:具有一根或更多根电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光学存储设备、磁存储设备或任何其他前述的适当组合。在本文的上下文中,计算机可读存储介质可以是任何有形介质,其可以包含或存储供指令执行系统、装置或设备使用或与其结合使用的程序。

上面参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各方面。将理解的是,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机程序指令来实现。可以将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机器。当经由计算机或其他可编程数据处理设备的处理器执行指令时,这些指令使得能够实现在流程图和/或框图方框中指定的功能/动作。这样的处理器可以是但不限于通用处理器、专用处理器、专用处理器或现场可编程门阵列。

附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能的实现的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以代表代码的模块、段或部分,其包括用于实现指定的逻辑功能的一个或更多个可执行指令。还应注意,在一些替代实现方式中,方框中指出的功能可以不按图中指出的顺序发生。例如,取决于所涉及的功能,实际上可以基本上并发地执行连续示出的两个框,或者有时可以以相反的顺序执行这些框。还应注意,框图和/或流程图说明的每个方框以及框图和/或流程图说明中的方框的组合可以由执行指定功能或动作的基于专用硬件的系统来实现,或专用硬件和计算机指令的组合。

尽管前述内容针对本公开的实施例,但是可以在不脱离本公开的基本范围的情况下设计本公开的其他和进一步的实施例,并且本公开的范围由所附权利要求书确定。

29页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:使用射线锥进行各向异性纹理滤波的技术

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!