CN115731332A - 用于渲染符号距离函数的技术 - Google Patents

用于渲染符号距离函数的技术 Download PDF

Info

Publication number
CN115731332A
CN115731332A CN202211055928.0A CN202211055928A CN115731332A CN 115731332 A CN115731332 A CN 115731332A CN 202211055928 A CN202211055928 A CN 202211055928A CN 115731332 A CN115731332 A CN 115731332A
Authority
CN
China
Prior art keywords
computer
voxel
ray
cubic function
calculating
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.)
Pending
Application number
CN202211055928.0A
Other languages
English (en)
Inventor
H·汉松·瑟德兰德
A·埃文斯
T·阿肯宁-莫勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US17/674,792 external-priority patent/US11887245B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN115731332A publication Critical patent/CN115731332A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/90Determination of colour characteristics

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Generation (AREA)

Abstract

本公开涉及用于渲染符号距离函数的技术。用于渲染一个或更多个图形图像的方法的一个实施例包括:在图形场景中追踪一条或更多条光线;计算与所述一条或更多条光线和一个或更多个表面的交点相关联的一个或更多个表面法线,其中计算每个表面法线包括:计算与网格的多个相邻体素相关联的多个中间表面法线,并对所述多个中间表面法线进行插值;以及基于所述一个或更多个表面法线渲染一个或更多个图形图像。

Description

用于渲染符号距离函数的技术
相关申请的交叉引用
本申请要求于2021年9月7日提交的序列号为63/241,472的题为“快速SDF网格相交和正态计算的技术”(TECHNIQUES FOR FAST SDF GRID INTERSECTION AND NORMALCOMPUTATIONS)的美国临时专利申请的权益,并且还要求于2021年9月2日提交的序列号为63/240,317的题为“快速SDF网格相交和正态计算的技术”(TECHNIQUES FOR FAST SDFGRID INTERSECTION AND NORMAL COMPUTATIONS)的美国临时专利申请的权益。这些相关申请的主题在此通过引用并入本文。
技术领域
本公开的实施例总体上涉及计算机科学和计算机图形学,并且更具体地涉及用于渲染符号距离函数的技术。
背景技术
在三维(3D)计算机图形学中,符号距离函数(SDF)通常用于表示对象的虚拟3D几何形状。SDF指定空间中的一个或更多个点到3D图形场景中一个或更多个对象的表面的距离。从空间中的给定点,正距离表示该点在对象外,负距离表示该点在对象内。虽然非常有用,但SDF在用于渲染3D图形图像时会带来多重挑战。
首先,用于渲染SDF的传统方法包括将球体从3D场景的观察者追踪到与由3D场景内的SDF表示的几何体表面的交点。在不穿透该表面的步骤中追踪连续的球体,直到达到与表面的交点。但是,追踪靠近表面或远离表面的球体可能是一个非常缓慢的过程。
当朝向由SDF表示的表面追踪球体时,球体和该表面之间的交点可以通过求解表示到该表面的距离的三次函数的根来求得。一般来说,三次函数可以通过计算该三次函数的系数来从SDF导出。然而,用于计算该三次函数的系数的传统技术需要重复许多相同的计算,这在计算上是低效的。
此外,用于确定图像内的阴影和反射的渲染操作需要计算由SDF表示的表面的法线。然而,根据传统技术计算的表面法线在用于存储SDF的值的网格的体素上是不连续的。特别是,根据传统技术计算的表面法线可能会突然改变方向。因此,使用传统技术来计算表面法线渲染的图像可能包括对象表面上光照的突然变化,这看起来像锐利的边缘,即使那些表面在外观上应该是光滑的。这些类型的伪影会降低整体图像质量。
如前文所述,本领域需要用于在计算机图形应用程序中渲染SDF的更有效的技术。
发明内容
本公开的一个实施例阐述了一种用于渲染一个或更多个图形图像的计算机实现的方法。该方法包括在图形场景中追踪一条或更多条光线。该方法还包括计算与一条或更多条光线与一个或更多个表面的交点相关联的一个或更多个表面法线,其中计算每个表面法线包括:计算与网格的多个相邻体素相关联的多个中间表面法线,以及对多个中间表面法线进行插值。此外,该方法包括基于一个或更多个表面法线渲染一个或更多个图形图像。
本公开的另一个实施例阐述了一种用于计算像素颜色的计算机实现的方法。该方法包括在图形场景中追踪光线到光线与几何体表面相交的命中点。该方法还包括基于与网格的多个对应体素相关联的多个几何体表面来计算多个中间表面法线。该方法还包括基于多个中间表面法线执行一个或更多个插值操作以计算命中点处的表面法线。此外,该方法包括基于表面法线计算第一像素颜色。
本公开的另一个实施例阐述了一种用于计算像素颜色的计算机实现的方法。该方法包括在图形场景中追踪光线到光线与网格体素的交点。该方法还包括基于一个或更多个系数的因式分解公式来计算与体素相关联的三次函数的一个或更多个系数的一个或更多个值。该方法还包括基于三次函数计算光线与体素内的几何体表面的交点。此外,该方法包括基于光线与几何体表面的交点计算第一像素颜色。
本公开的另一个实施例阐述了一种用于计算像素颜色的计算机实现的方法。该方法包括在图形场景中追踪阴影光线。该方法还包括确定三次函数的一个或更多个转折点,其中三次函数表示到网格体素内的几何体的一个或更多个表面的多个距离。该方法还包括基于一个或更多个转折点确定三次函数在与体素相关联的区间的一个或更多个子区间的多个边界处的多个值。该方法还包括基于多个值确定另一光线与几何体的另一表面相交的命中点是否位于阴影内。此外,该方法包括基于该命中点是否位于阴影内来计算第一像素颜色。
本公开的其他实施例包括但不限于一种或更多种计算机可读介质,包括用于执行所公开技术的一个或更多个方面的指令以及用于执行所公开技术的一个或更多个方面的一个或更多个计算系统。
所公开的技术相对于现有技术的至少一个技术优势在于,当确定光线与由SDF表示的3D物体的表面的交点时,所公开的技术性需要更少操作以计算三次函数的系数。此外,所公开的技术并不总是需要在阴影光线测试期间计算阴影光线和表面之间的精确交点,这相对于需要计算这种交点的传统技术而言在计算上更加高效。此外,使用根据所公开技术计算的表面法线渲染的图像包括通常比使用传统技术渲染的图像中发现的光照变化更平滑的光照变化,这相对于用传统技术可以实现的提高整体图像质量。这些技术优势代表了对现有技术方法的一项或更多项技术改进。
附图说明
为了能够详细理解各种实施例的上述特征,可以通过参考各种实施例(其中一些在附图中示出)对上述简要总结的发明概念进行更具体的描述。然而,应当注意,附图仅示出了本发明概念的典型实施例,因此不应被视为以任何方式限制范围,并且存在其他同样有效的实施例。
图1是示出被配置为实现本实施例的一个或更多个方面的计算机系统的框图;
图2是根据各种实施例的在图1的并行处理子系统中包括的并行处理单元的框图;
图3是根据各种实施例的在图2的并行处理单元中包括的通用处理集群的框图;
图4是示出根据各种实施例的示例性云计算系统的框图;
图5示出了根据各种实施例的在虚拟三维场景中追踪的示例性光线;
图6示出了根据各种实施例的使用三次函数的转折点的示例性阴影光线测试;
图7A-B示出了根据各种实施例的用于对解析法线进行插值的方法;
图8A示出了根据各种实施例的使用解析法线渲染的示例性图像;
图8B示出了根据各种实施例的使用解析法线插值渲染的示例性图像;
图9是根据各种实施例的用于追踪光线到由符号距离函数表示的几何体表面的方法步骤的流程图;
图10是根据各种实施例的用于阴影光线测试的方法步骤的流程图;以及
图11是根据各种实施例的用于基于解析法线插值来确定像素颜色的方法步骤的流程图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对各种实施例的更透彻的理解。然而,对于本领域的技术人员将显而易见的是,可以在没有一个或更多个这些具体细节的情况下实践本发明构思。
总体概述
本公开的实施例提供用于渲染SDF的改进技术。用于渲染SDF的改进技术具有许多实际应用,包括视频游戏、电影制作渲染、建筑和设计应用,以及可以使用光线追踪渲染图像的任何其他应用。在用于渲染SDF的改进技术中,系数的因式分解公式用于确定三次函数,以找到被追踪的光线与由SDF表示的几何体的表面的交点。当被追踪的光线是阴影光线时,使用三次函数的转折点来确定阴影光线是否与表面相交。此外,在确定了光线与表面的命中点之后,通过从网格的相邻体素对表面法线进行插值来计算表面法线。
本公开的用于渲染SDF的技术具有许多实际应用。例如,用于渲染SDF的技术可用于有效地渲染视频游戏中的图像和/或帧。作为一个特定示例,用于渲染SDF的技术可以由基于云的图形处理平台执行,例如基于云的游戏平台,该平台执行视频游戏并将游戏会话的视频流式传输到客户端设备。所公开的用于渲染SDF的技术比用于渲染SDF的传统技术在计算上更有效。与使用一些其他传统渲染技术渲染的图像和/或帧相比,渲染的图像和/或帧也可能看起来更真实,具有更少的伪影。
作为另一个示例,用于渲染SDF的技术可以用于电影的生产质量渲染。动画电影以及真人电影中的特殊效果和计算机生成图像(CGI)的制作通常需要对这些电影的帧进行高质量渲染。所公开的用于渲染SDF的技术可用于比一些其他传统渲染技术更有效和/或更正确地渲染电影的帧。
作为又一个示例,所公开的用于渲染SDF的技术可用于渲染建筑结构和其他对象的设计。建筑和设计应用程序通常会提供渲染以显示特定设计在现实生活中的外观。与一些其他常规渲染技术相比,所公开的用于渲染SDF的技术可用于更有效和/或更正确地渲染设计图像。
上述示例不以任何方式旨在限制。如本领域技术人员将理解的,作为一般事项,本文描述的用于渲染SDF的技术可以在当前采用常规光线追踪和/或用于渲染SDF的技术的任何应用中实现。
系统总览
图1是示出被配置为实现各种实施例的一个或更多个方面的计算机系统100的框图。如本领域技术人员将理解的,计算机系统100可以是任何类型的技术上可行的计算机系统,包括但不限于服务器机器、服务器平台、台式机、膝上型计算机、手持/移动设备或可穿戴设备。在一些实施例中,计算机系统100是在数据中心或云计算环境中操作的服务器机器,其通过网络提供可伸缩计算资源作为服务。
在各种实施例中,计算机系统100包括但不限于经由存储器桥(memory bridge)105和通信路径113耦合到并行处理子系统112的中央处理单元(CPU)102和系统存储器104。存储器桥105经由通信路径106进一步耦合到I/O(输入/输出)桥107,并且I/O桥107又耦合到交换机116。
在一个实施例中,I/O桥107被配置为从任选的输入设备108(诸如键盘或鼠标)接收用户输入信息,并且将输入信息经由通信路径106和存储器桥105转发到CPU 102以进行处理。在一些实施例中,计算机系统100可以是云计算环境中的服务器机器。在这些实施例中,计算机系统100可以不具有输入设备108。相反,计算机系统100可以通过接收通过网络传输并经由网络适配器118接收的消息形式的命令来接收等效的输入信息。在一个实施例中,交换机116被配置为提供I/O桥107和计算机系统100的其他组件之间的连接,诸如网络适配器118和各种插件卡120和121。
在一个实施例中,I/O桥107耦合到系统盘114,系统盘114可以被配置为存储内容、应用程序和数据,以供CPU 102和并行处理子系统112使用。在一个实施例中,系统盘114提供应用程序和数据的非易失性存储,并可包括固定或可移动硬盘驱动器、闪存设备和CD-ROM(光盘只读存储器)、DVD-ROM(数字多功能光盘-ROM)、蓝光、HD-DVD(高清DVD)或其他磁性、光学或固态存储设备。在各种实施例中,诸如通用串行总线或其他端口连接、光盘驱动器、数字多功能光盘驱动器、胶片记录设备等的其他组件也可以连接到I/O桥107。
在各种实施例中,存储器桥105可以是北桥(Northbridge)芯片,并且I/O桥107可以是南桥(Southbridge)芯片。此外,通信路径106和113以及计算机系统100内的其他通信路径可以使用任何技术上合适的协议来实现,包括但不限于AGP(加速图形端口)、超级传输(HyperTransport)或本领域已知的任何其他总线或点对点通信协议。
在一些实施例中,并行处理子系统112包括图形子系统,该图形子系统将像素传送到任选的显示设备110,该显示设备110可以是任何常规阴极光线管、液晶显示器、发光二极管显示器等。在这些实施例中,并行处理子系统112结合了针对图形和视频处理优化的电路,包括例如视频输出电路。如以下在图2-3中更详细地描述的,这种电路可以跨并行处理子系统112内包括的一个或更多个并行处理单元(PPU)(本文也称为并行处理器)合并。在其他实施例中,并行处理子系统112包括为通用和/或计算处理而优化的电路。同样,这种电路可跨并行处理子系统112内包括的一个或更多个PPU被合并,其被配置为执行此类通用和/或计算操作。在又一其它实施例中,并行处理子系统112内包括的一个或更多个PPU可被配置为执行图形处理、通用处理和计算处理操作。系统存储器104包括至少一个设备驱动器,其被配置为管理并行处理子系统112内的一个或更多个PPU的处理操作。此外,系统存储器104包括渲染应用程序130。渲染应用程序130可以是渲染虚拟三维场景的任何技术上可行的应用,并且渲染该场景可以包括根据本文所公开的技术渲染SDF。例如,渲染应用程序130可以是游戏应用程序或在电影制作中使用的渲染应用程序。尽管本文主要针对渲染应用程序130进行了描述,但本文公开的技术也可以全部或部分地在其他软件和/或硬件中实现,诸如在并行处理子系统112中。
在各种实施例中,并行处理子系统112可以与图1的一个或更多个其他元件集成以形成单个系统。例如,并行处理子系统112可以与CPU102和其他连接电路集成在单个芯片上,以形成片上系统(SoC)。
在一个实施例中,CPU 102是计算机系统100的主处理器,用于控制和协调其他系统组件的操作。在一个实施例中,CPU 102发出控制PPU的操作的命令。在一些实施例中,如本领域已知的,通信路径113是PCI Express链路,在该链路中,将专用通道分配给每个PPU。也可以使用其他通信路径。PPU有利地实现了高度并行处理体系结构。PPU可以配备有任意数量的本地并行处理存储器(PP存储器)。
应当理解,本文所示的系统是说明性的,并且可以进行变更和修改。可以根据需要修改连接拓扑,包括桥的数量和布置、CPU 102的数量以及并行处理子系统112的数量。例如,在一些实施例中,系统存储器104可以直接连接到CPU 102,而不是通过存储器桥105,并且其他设备将经由存储器桥105和CPU 102与系统存储器104通信。在其他实施例中,并行处理子系统112可以连接到I/O桥107或直接连接到CPU 102,而不是连接到存储器桥105。在其他实施例中,I/O桥107和存储器桥105可以集成到单个芯片中,而不是作为一个或更多个分立设备存在。在某些实施例中,可能不存在图1中所示的一个或更多个组件。例如,可以去掉交换机116,并且网络适配器118和插件卡120、121将直接连接到I/O桥107。最后,在某些实施例中,图1中所示的一个或更多个组件可被实现为虚拟计算环境(诸如云计算环境)中的虚拟化资源。具体地,在一些实施例中,并行处理子系统112可以被实现为虚拟化并行处理子系统。例如,并行处理子系统112可以被实现为虚拟图形处理单元(GPU),该虚拟图形处理单元在虚拟机(VM)上渲染图形,所述虚拟机在其GPU和其他物理资源跨多个VM共享的服务器机器上执行。
图2是根据各种实施例的在图1的并行处理子系统112中包括的并行处理单元(PPU)202的框图。尽管图2描绘了一个PPU 202,但如上所述,并行处理子系统112可以包括任意数量的PPU 202。如图所示,PPU 202耦合到本地并行处理(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的操作的命令。在一些实施例中,CPU102将用于PPU 202的命令流写入数据结构(图1或图2中未明确示出),该数据结构可位于系统存储器104、PP存储器204或CPU 102和PPU 202均可访问的另一存储位置。指向数据结构的指针被写入在本文也称为推送缓冲区(pushbuffer)的命令队列,以启动对数据结构中命令流的处理。在一个实施例中,PPU 202从命令队列读取命令流,然后相对于CPU 102的操作异步地执行命令。在生成多个推送缓冲区的实施例中,应用程序可以经由设备驱动器为每个推送缓冲区指定执行优先级,以控制不同推送缓冲区的调度。
在一个实施例中,PPU 202包括I/O(输入/输出)单元205,该单元经由通信路径113和存储器桥105与计算机系统100的其余部分通信。在一个实施例中,I/O单元205生成用于在通信路径113上传输的分组(或其他信号),并且还从通信路径113接收所有传入分组(或其他信号),将传入分组定向到PPU 202的适当组件。例如,与处理任务相关的命令可以被定向到主机接口206,而与存储器操作(例如,从PP存储器204读取或写入)相关的命令可以被定向到交叉开关单元210。在一个实施例中,主机接口206读取每个命令队列,并将存储在命令队列中的命令流发送到前端212。
如上文结合图1所述,PPU 202与计算机系统100的其余部分的连接可以改变。在一些实施例中,包括至少一个PPU 202的并行处理子系统112被实现为可以插入到计算机系统100的扩展槽中的插件卡。在其他实施例中,PPU 202可以集成在具有总线桥的单个芯片上,例如存储器桥105或I/O桥107。同样,在其他实施例中,PPU 202的部分或全部元件可以与CPU 102一起被包括在单个集成电路或芯片系统(SoC)中。
在一个实施例中,前端212将从主机接口206接收的处理任务发送到任务/工作单元207内的工作分配单元(未示出)。在一个实施例中,工作分配单元接收指向处理任务的指针,这些任务被编码为任务元数据(TMD)并存储在存储器中。指向TMD的指针被包括在命令流中,该命令流存储为命令队列并由前端单元212从主机接口206接收。可以被编码为TMD的处理任务包括与要处理的数据相关联的索引以及定义如何处理数据的状态参数和命令。例如,状态参数和命令可以定义要在数据上执行的程序。此外,例如,TMD可以指定CTA集合的数量和配置。通常,每个TMD对应一个任务。任务/工作单元207从前端212接收任务,并确保GPC 208被配置为在启动由每个TMD指定的处理任务之前的有效状态。可以为用于调度处理任务的执行的每个TMD指定优先级。还可以从处理集群阵列230接收处理任务。可选地,TMD可以包括一个参数,该参数控制TMD是添加到处理任务列表的头部还是尾部(或指向处理任务的指针列表),从而提供对执行优先级的另一级控制。
在一个实施例中,PPU202实现基于处理集群阵列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内的任何DRAM220的数据。在一个实施例中,交叉开关单元210被配置为将每个GPC 208的输出路由到任何分区单元215的输入,或路由到任何其他GPC 208以进行进一步处理。GPC 208经由交叉开关单元210与存储器接口214通信,以从各种DRAM 220读取或写入数据。在一些实施例中,交叉开关单元210具有到I/O单元205的连接,还有经由存储器接口214到PP存储器204的连接,从而使得不同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内的一组处理引擎发出指令。与所有处理引擎通常执行相同指令的SIMD执行机制不同,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内的功能执行单元的任何组合。在各种实施例中,功能执行单元可以被配置为支持各种不同的运算,包括整数和浮点运算(例如,加法和乘法)、比较运算、布尔运算(和、或、异或)、位移位和各种代数函数的计算(例如,平面插值和三角函数、指数函数和对数函数等)。有利的是,相同的功能执行单元可以被配置为执行不同的运算。
在一个实施例中,每个SM 310被配置为处理一个或更多个线程组。如本文所使用的,“线程组”或“线程束”是指在不同输入数据上同时执行同一程序的一组线程,组中的一个线程被分配给SM 310内的不同执行单元。线程组可以包括比SM 310内的执行单元的数量更少的线程,在这种情况下,一些执行可能在正在处理该线程组的周期期间空闲。线程组还可以包括比SM 310内的执行单元的数量更多的线程,在这种情况下,处理可以在连续的时钟周期内进行。由于每个SM 310可以同时支持多达G个线程组,因此可以在任何给定时间在GPC 208中执行多达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还可以访问二级(L2)高速缓存(未显示),所述二级(L2)高速缓存在PPU 202中的所有GPC 208之间共享。L2高速缓存可以用于在线程之间传输数据。最后,SM 310还可以访问片外“全局”存储器,其可以包括PP存储器204和/或系统存储器104。应当理解,PPU 202外部的任何存储器均可用作全局存储器。此外,如图3所示,1.5级(L1.5)高速缓存335可以被包括在GPC 208内,并且被配置为接收和保存由SM 310经由存储器接口214从存储器请求的数据。这样的数据可以包括,但不限于指令、统一数据和常量数据。在GPC 208内具有多个SM 310的实施例中,SM 310可以有益地共享缓存在L1.5高速缓存335中的公共指令和数据。
在一个实施例中,每个GPC 208可以具有相关联的存储器管理单元(MMU)320,其被配置为将虚拟地址映射到物理地址。在各种实施例中,MMU 320可驻留在GPC 208内或存储器接口214内。MMU 320包括一组页表条目(PTE),该页表条目用于将虚拟地址映射到块或存储器页的物理地址,并且可选地高速缓存行索引。MMU 320可包括地址转换后备缓冲区(TLB)或高速缓存,其可驻留在SM 310内、一个或更多个L1高速缓存内或GPC 208内。
在一个实施例中,在图形和计算应用程序中,GPC 208可以被配置为使得每个SM310耦合到纹理单元315,以用于执行纹理映射操作,诸如确定纹理样本位置、读取纹理数据和过滤纹理数据。
在一个实施例中,每个SM 310向工作分配交叉开关330发送已处理任务,以便将已处理的任务提供给另一GPC 208以供进一步处理,或将已处理的任务存储在L2高速缓存(未示出)、并行处理存储器204中或经由交叉开关单元210的系统存储器104中。此外,预光栅操作(preROP)单元325被配置为从SM 310接收数据、将数据定向到分区单元215内的一个或更多个光栅操作(ROP)单元、执行颜色混合优化、组织像素颜色数据以及执行地址转换。
应当理解,本文描述的架构是说明性的,并且可以进行变更和修改。除其他事项外,任何数量的处理单元(诸如SM 310、纹理单元315或preROP单元325)可被包括在GPC 208内。此外,如上文结合图2所述,PPU 202可包括任意数量的GPC 208,这些GPC 208被配置为在功能上彼此相似,以便执行行为不依赖于哪个GPC 208接收特定处理任务。此外,每个GPC208独立于PPU 202中的其他GPC 208操作,以执行一个或更多个应用程序的任务。
图4是示出了根据各种实施例的示例性云计算系统的框图。如图所示,计算系统400包括经由网络406与客户端设备404通信的(一个或更多个)服务器402。每个服务器402可以包括与如上文结合图1-3所述的示例计算机系统100类似的组件、特征和/或功能。每个服务器402可以是任何技术上可行的计算机系统类型,其包括但不限于服务器机器或服务器平台。每个客户端设备402还可以包括与计算机系统100类似的组件、特征和/或功能,除了每个客户端设备402执行客户端应用程序422而不是渲染应用程序130。每个客户端设备402可以是任何技术上可行的计算机系统类型,包括但不限于台式机、膝上型计算机、手持/移动设备和/或可穿戴设备。在一些实施例中,服务器402和/或客户端设备404中的一个或更多个可以被一个或更多个虚拟化处理环境替换,诸如由一个或更多个VM提供的一个或更多个虚拟化处理环境和/或在一个或更多个底层硬件系统上执行的容器。一个或更多个网络406可以包括任何类型的一个或更多个网络,诸如一个或更多个局域网(LAN)和/或广域网(WAN)(例如,因特网)。
在一些实施例中,一个或更多个服务器400可以被包括在云计算系统中,诸如公共云、私有云或混合云和/或分布式系统中。例如,一个或更多个服务器400可以实现提供游戏流服务的基于云的游戏平台,有时也称为“云游戏”、“按需游戏”或“游戏即服务”。在这种情况下,在一个或更多个服务器400上存储和执行的游戏作为视频经由在客户端设备402上运行的客户端应用程序422而流式传输到客户端设备402。在游戏会话期间,客户端应用程序422处理用户输入,并将这些输入发送到服务器400,以用于游戏内执行。尽管本文将基于云的游戏平台描述为参考示例,但是本领域技术人员将理解,作为一般事项,一个或更多个服务器400可以执行任何技术上可行的一个或更多个应用类型,诸如以上描述的设计应用。
如图所示,一个或更多个客户端设备404中的每一个包括一个或更多个输入设备426、客户端应用程序422、通信接口420和显示器424。一个或更多个输入设备426可以包括用于接收用户输入的任何类型的一个或更多个设备,诸如键盘、鼠标、操纵杆和/或游戏控制器。客户端应用程序422响应于用户在一个或更多个输入设备426处的输入而接收输入数据,经由通信接口420(例如,网络接口控制器)和通过一个或更多个网络406(例如,互联网)将输入数据发送到一个或更多个服务器402之一,从服务器402接收编码的显示数据,以及解码并使显示数据显示在显示器424上(例如,阴极光线管、液晶显示器、发光二极管显示器等)。因此,可以将计算强度更高的计算和处理卸载到一个或更多个服务器402。例如,游戏会话可以从一个或更多个服务器402流式传输到一个或更多个客户端设备404,从而降低一个或更多个客户端设备404对图形处理和渲染的要求。
如图所示,一个或更多个服务器402中的每一个包括通信接口418、一个或更多个CPU 408、并行处理子系统410、渲染组件412、渲染捕获组件414和编码器416。由客户端设备404发送到一个或更多个服务器402之一的输入数据经由通信接口418(例如,网络接口控制器)被接收,并且经由该服务器402中包括的一个或更多个CPU 408和/或并行处理子系统410进行处理,该服务器402分别对应于上面结合图1-3描述的计算机系统100的CPU 102和并行处理子系统112。在一些实施例中,一个或更多个CPU 408可以接收输入数据,处理输入数据,并将数据发送到并行处理子系统410。反过来,并行处理子系统410基于传输的数据渲染一个或更多个独立图像和/或图像帧,诸如视频游戏的帧。
举例来说,渲染组件412采用并行处理子系统112来渲染处理输入数据的结果,并且渲染捕获组件414捕获渲染作为显示数据(例如,作为捕获独立图像和/或图像帧的图像数据)。由渲染组件412执行的渲染可以包括使用服务器402的一个或更多个并行处理单元(诸如GPU,其可以进一步使用一个或更多个专用硬件加速器或处理核来执行光线或路径追踪技术)计算的光线或路径追踪照明和/或阴影效果。在一些实施例中,渲染组件412使用本文公开的渲染SDF的技术来执行渲染。此后,编码器416对捕获渲染的显示数据进行编码,以生成经编码的显示数据,该显示数据通过一个或更多个网络406经由通信接口418发送到一个或更多个客户端设备422以显示给一个或更多个用户。在一些实施例中,渲染组件412、渲染捕获组件414和编码器416可以被包括在渲染应用程序130中,如上文结合图1所述。
回到云游戏的示例,在游戏会话期间,由一个或更多个服务器402之一接收到的输入数据可以表示用户角色在游戏中的移动、发射武器、重新加载、传球、转动车辆等。在这种情况下,渲染组件412可以生成表示输入数据的结果的游戏会话的渲染,并且渲染捕获组件414可以捕获游戏会话的渲染作为显示数据(例如,作为捕获游戏会话的渲染帧的图像数据)。并行处理(例如,GPU)资源可以专用于每个游戏会话,或者可以采用资源调度技术来跨多个游戏会话共享并行处理资源。此外,可以使用本文公开的渲染SDF的技术来渲染游戏会话。然后,可以由编码器416对渲染的游戏会话进行编码,以生成经编码的显示数据,该显示数据通过一个或更多个网络406传输到一个或更多个客户端设备404中的一个以解码,并且经由该客户端设备404的显示器424进行输出。
应当理解,本文描述的架构是说明性的,并且可以进行变更和修改。除其他事项外,任何数量的处理单元,诸如如上文结合图3所述的SM 310、纹理单元315或preROP单元325,可被包括在GPC 208内。
渲染符号距离函数
图5示出了根据各种实施例的在虚拟三维场景中追踪的示例光线。如图所示,光线520和522从观察者504处通过屏幕空间中的像素(未示出)被追踪到包括两个对象506和508的场景中。在一些实施例中,对象506和508的几何形状用一个或更多符号距离函数(SDF)来指定。如上所述,SDF指定从空间中的点到一个或更多个对象的边界的距离。在给定点处,正距离表示该点在对象之外,负距离表示该点在对象内部。
在一些实施例中,用于表示SDF的数据结构是包括nx×ny×nz个位置的3D网格,每个位置都保存有符号距离值。这种数据结构在本文中也称为“SDF网格”,或简称为“网格”。如本文所使用的,网格的体素是3D空间中的网格的单元,在单元的角处指定2×2×2有符号距离值。例如,在一些实施例中,SDF基元和算子被采样到网格上,并且每个体素角存储来自采样的有符号距离值。
如图5所示,体素500的每个角502-2和502-3处的正值表示从角502-2或502-3到角502-2或502-3在其外部的最近对象的表面的距离。相反,在每个角502-1和502-4处的负值表示从角502-1或502-4到角502-1或502-4在其内部的最近对象的表面的距离。
当在图形场景中追踪光线时,可以确定光线与对象表面的交点。说明性地,光线520在命中点530处与对象508的表面相交,并且光线522在命中点532处与对象508的该表面相交。在一些实施例中,并行处理子系统112可以包括执行一个或更多个本文公开的渲染技术的专用硬件,包括确定光线与对象表面的交叉点的操作。例如,在一些实施例中,专用硬件可以是一个或更多个PPU 202中的光线追踪单元。在一些其他实施例中,本文公开的一种或更多种技术可以在软件中实现。例如,在一些实施例中,渲染应用程序130(或其他软件)可以实现本文公开的渲染技术。在这种情况下,渲染期间的计算可以在并行处理子系统112和/或其他地方(例如,CPU 102)上执行。在一些其他实施例中,本文公开的一种或更多种技术可以以硬件和/或软件的任何技术上可行的组合来实现。
在一些实施例中,可以使用三线性插值来确定SDF网格的每个体素内的对象的表面。该表面由体素内的SDF的零水平集定义。给定2×2×2有符号距离值sijk,其中i,k,k∈[0,1],在单个体素中,三线性插值方程为:
Figure BDA0003824888800000161
其中x,y,z∈[0,1]。在等式(1)中,体素内的表面由f(x,y,z)=0定义,
Figure BDA0003824888800000162
其是有理双线性补丁。在等式(2)中,常数ki是距离sijk的函数:
Figure BDA0003824888800000171
其中a=s101-s001。等式(2)可以被重写为:
f(x,y,z)=z(k4+k5x+k6y+k7xy)-(k0+k1x+k2y+k3xy)=0, (4)
这是三次多项式,也就是三次函数,因为最高阶项是xyz。
光线(例如,光线520或522)可以由下式定义:
r(t)=o+td, (5)
其中o=(ox,oy,oz),对d同理。由方程(1)和(4)给出的表面与由方程(5)给出的光线之间的交点可以通过用光线的分量替换x,y,和z来找到。例如,在等式(4)中rx(t)=ox+tdx可以取代x,等等。这样的替换会导致:
(oz+tdz)(k4+k5(ox+tdx)+k6(oy+tdy)+k7(ox+tdx)(oy+tdy))-(k0+k1(ox+tdx)+k2(oy+tdy)+k3(ox+tdx)(oy+tdy))=0 (6)
等式(6)可以被重写为:
c3t3+c2t2+c1t+c0=0, 7)
其中
Figure BDA0003824888800000172
并且
Figure BDA0003824888800000173
等式(7)的三次函数表示沿被追踪光线到对象的一个或更多个表面的距离。值得注意的是,根据等式(8)-(9)计算等式(7)的系数仅需要37次操作,这比可能需要161次操作的传统技术少四倍多。等式(8)-(9)中的因式分解可以减少操作数量,从而避免执行重复操作。特别地,常数m0,m1,m2,m3,m4和m5被分解出来,并且可以预先计算一次,使得当等式(7)的系数c0,c1和c2被计算时不执行重复操作。相比之下,当根据传统技术计算等式(7)的系数时,重复许多被执行以计算c0的相同操作以计算c1和c2。相对于用于计算三次函数的系数的常规技术,等式(8)-(9)的因式分解中的减少数量的操作可以更快地执行。此外,在一些实施例中,减少数量的操作可以在硬件中使用很少的指令和/或更少的硅来实现。
在一些实施例中,为了使光线与体素内部的表面相交,PPU 202首先确定该光线和该体素之间的交点,然后PPU 202使用等式(7)计算该光线与该表面的交点。可以以任何技术上可行的方式来确定该光线和该体素之间的交点,例如通过将网格的体素提供给执行稀疏体素集(SVS)技术的PPU 202中的专用硬件,或者通过使用网格球体追踪(GST)技术、稀疏砖集(SBS)技术或稀疏体素八叉树(SVO)技术追踪光线到体素。假设光线不起源于体素内部,则在一些实施例中,在计算体素内部的表面与光线之间的交点时,将光线与体素之间的交点用作光线的新起点。此外,新的原点可以变换到为规范的体素空间,即[0,1]3,其中也导出了等式(7)的表面函数。从新的原点到体素上光线的出射点的距离在此用tfar表示。
如所描述的,在确定光线和体素之间的交点之后,PPU 202可以使用等式(7)和在等式(3)和(8)-(9)中的常数计算光线与在体素内定义的对象的表面的交点的距离t。假设对象是实心的(即不是半透明的,也不是像云这样的体积物体),唯一需要的解是体素内方程(7)的三次函数的第一实根,即t∈[0,tfar]的第一实根。在一些实施例中,三次函数可以以任何技术上可行的方式求解第一实根。例如,可以使用解析三次多项式求解器来求解三次函数。作为另一个示例,三次函数可以使用数值方法来求解。在一些实施例中,可以使用以下数值方法来求解三次函数。首先,PPU 202可以计算三次函数的转折点,此处三次函数的导数等于0,即g′(t)=3c3t2+2c2t+c1=0。转折点可用于将与体素关联的区间[0,tfar]划分为子区间[tstart,tend],其中tstart可以为0或转折点,tend可以为转折点或tfar。然后,PPU 202可以处理从t=0到t=tfar的[0,tfar]的子区间,以识别三次函数的起始值g(tstart)具有与三次函数的结束值g(tend)不同符号的子区间[tstart,tend],即g(tstart)g(tend)≤0。如果识别出这样的子区间,则在该子区间内将存在三次函数g(t)的根。在这种情况下,PPU 202可以使用数值求解器来找到子区间中的根。例如,可以应用重复的线性插值来找到根。作为另一个例子,当前距离t可以被细化为
Figure BDA0003824888800000191
它可以用作Newton-Raphson技术中的初始猜测以找到根。在一些实施例中,可以在使用三次求解器之前应用使体素表面固形(solid)的附加测试。在这样的情况下,当光线原点位于体素的面上时,则PPU 202可以在光线原点处评估等式(4)一次。如果f(ox,oy,oz)<0,则认为光线已经命中体素的一侧,并且PPU 202在那里返回命中。此附加测试的一个优点是,由于例如浮点不精确,两个相邻体素的表面之间的光线可能会立即命中体素面并返回命中,这避免了渲染的图像中的可见裂缝。
在一些实施例中,可以通过寻找由三次函数具有不同符号的边界点定义的[0,tfar]的子区间来优化阴影光线测试。阴影光线用于测试另一条光线(例如,眼睛光线)与对象表面相交所处的命中点是否在阴影中。PPU202将阴影光线从命中点射向光源,并确定阴影光线在到达光源之前是否与任何对象相交。如果阴影光线在到达光源之前与对象相交,则命中点处于阴影中,因为该对象阻止了光源产生的光到达命中点。在一些实施例中,一旦识别出其中tstart和tend具有不同符号的子区间[tstart,tend],如果光源不在该子区间内(即,tend≤tfar)则可以终止阴影光线测试,因为阴影光线将在该子区间中与对象相交。需要注意的是,定义子区间使得三次函数g(t)在每个子区间内单调递增或递减,因此当三次函数在子区间的边界处的值有不同的符号时,可以确定与对象的相交。另外,需要注意的是,不计算阴影光线与对象的精确命中点,从而节省了计算资源。此外,用于确定三次函数是否在子区间的边界处具有不同符号的符号比较操作执行的计算成本并不昂贵。然而,如果该光源在子区间内,这对应于tfar>tend的情况,则可以通过解析方式或数值方式计算三次函数的第一个实三次根,以确定阴影光线与对象的交点。
说明性地,从命中点530向光源510追踪阴影光线540,从命中点540向光源510追踪阴影光线542。阴影光线540可以到达光源510,这意味着命中点530不在阴影中。相比之下,对象506阻挡了阴影光线542到达光源510,这意味着命中点532处于阴影中。命中点(例如命中点530或532)在阴影中的事实可以根据如上所述的有效阴影光线测试技术来确定。
图6示出了根据各种实施例的使用三次函数的转折点的示例性阴影光线测试。如图所示,三次函数g(t),602,其表示沿着被追踪的光线到几何体表面的距离,具有转折点604和606。如所述,PPU 202可以通过对三次函数602的导数的零点求解来确定转折点604和606,其计算相对不昂贵。示例性地,对应于体素的区间[0,tfar]可以划分为分别在0和转折点604之间、转折点604和606之间、转折点606和tfar处的点608之间的子区间610、612和614。为了确定阴影光线是否在每个子区间610、612和614内命中对象的表面,PPU 202确定在0处和在点604、606和608处的三次函数602的值,这些值计算成本也不昂贵。当子区间的边界点处的三次函数值的符号不同时,然后三次函数602将在子区间内具有根,这意味着阴影光线将在该子区间内与对象的表面相交。例如,三次函数602在转折点604和606都为正,因此三次函数在子区间612内没有根。一般而言,当三次函数602在子区间的两个边界点处都为正或在两个边界点处都为负且光源不在该子区间内时,则在该子区间内阴影光线不会与对象表面相交。相反,三次函数602在转折点606处为正且在转折点608处为负,因此三次函数602在子区间614内具有根。在这种情况下,PPU 202可以确定,如果光源比tfar更远,则命中点被遮蔽,无需计算在子区间614内阴影光线与对象的精确交点,从而节省计算资源。应注意,当三次函数602在子区间的边界点处具有不同符号时,光源可能在某些情况下位于子区间内。在这种情况下,需要计算在该子区间内阴影光线与对象的交点。
图7A-B示出了根据各种实施例的用于对解析法线进行插值的方法。在确定光线在命中点处与网格体素内的对象表面相交之后,如上面结合图5所描述的,PPU 202可以确定在命中点处垂直于表面的向量。该法线向量在本文中也称为“表面法线”或简称为“法线”。表面法线可用于着色、反射和/或其他渲染操作,以确定图像中像素的颜色。然而,用于为SDF网格确定表面法线的常规技术不计算跨体素连续的法线。使用此类表面法线渲染的图像可能包括对象表面上光照的突然变化,这可能看起来像使该表面看起来多面的锐利边缘,其中表面在外观上应该是光滑的。当观察者靠近该体素时,光照的突然变化特别明显。
在一些实施例中,PPU 202插值相邻体素表面的法线,该法线在体素内被解析计算,在本文中也被称为“解析法线”。尽管在此关于以特定方式作为参考示例计算的解析法线进行了描述,但在一些实施例中,中间表面法线可以以任何技术上可行的方式计算并根据本文公开的技术进行插值。如图7A所示,在一些实施例中,双体素704可用于从相邻体素中插值解析法线。应当注意,尽管图7A-B出于说明性目的示出了二维示例,但是在一些实施例中可以针对3D图形在三个维度上对解析法线插值。双体素704是位置偏移了体素尺寸的一半的体素。任何命中点都将落在单个双体素内,该双体素在三个维度上与2×2×2体素重叠。说明性地,命中点706落在与体素702-2、702-4、702-6和702-8重叠的双体素704内。在三个维度上,双体素将重叠八个(2×2×2)体素。在一些实施例中,PPU202在命中点706处评估八个体素中的每一个中的解析法线并且使用三线性插值对结果进行插值。通过对解析计算的相邻体素表面的法线进行插值,PPU 202可以生成(插值的)法线,这些法线在体素上是连续的。然后可以使用这样的法线来渲染具有在对象表面上相对平滑地变化的光照的图像。
为了解析计算表面法线,可以将法线向量n计算为定义体素内对象表面的隐函数f的梯度,即
Figure BDA0003824888800000211
等式(1)对x的微分给出:
Figure BDA0003824888800000212
等式(10)是x方向上的距离差的双线性插值,其可以被重写为:
Figure BDA0003824888800000218
其中lerp(u,a,b)=a+u(b-a)是一种融合多加(FMA)友好形式的线性插值。相似地,
Figure BDA0003824888800000214
Figure BDA0003824888800000215
可以被如下计算:
Figure BDA0003824888800000219
Figure BDA00038248888000002110
使用等式(11)-(13),体素内表面的解析法线可以计算为
Figure BDA0003824888800000221
Figure BDA0003824888800000222
上述计算表面法线的方法需要大约30次操作(无归一化),而以前计算表面法线的一些技术需要54次操作。
如所描述的,PPU 202对相邻体素的表面的法线进行插值,这些法线被解析地计算以生成在体素上连续的表面法线。图7B示出了可以如何对相邻体素702-2和702-4的表面710和712的法线720和722进行插值的示例。如图所示,每个体素702-2和702-4分别与它自己的表面710和712相关联,表面710和712由体素702-2和702-4的角处的有符号距离值定义。对于命中点706,PPU 202(1)计算与命中点706落入其中的双体素704重叠的八个体素中的每一个的解析表面法线,并且(2)基于双体素704内的命中点706的位置使用权重对该表面法线进行插值。说明性地,可以基于由在体素702-2和702-4的角处的有符号距离值定义的隐函数,分别为体素702-2和702-4计算命中点706处的表面法线720和722。举例来说,法线720和722可以根据方程(11)-(13)解析计算,如上结合图7A所描述的。然后,可以对法线720和722(以及与双体素704重叠的其他体素的法线)进行插值以确定插值法线(未示出)。在插值中,法线720和722(以及其他法线)基于双体素704内的命中点706的位置进行加权。在图7B的示例中,命中点706的x分量可以被用于加权,并且法线722将获得比法线720更大的权重,因为相比于双体素704的左边界,命中点702更靠近双体素704的右边界。
更正式地说,PPU 202评估与双体素704重叠的每个体素中的命中点706处的解析法线nijk。然后,PPU 202使用用双体素704表示命中点706位置的三元组权重(u,v,w)∈[0,1]3来对双体素704内的解析法线nijk进行内插。在一些实施例中,插值法线n可以如下计算:
Figure BDA0003824888800000223
其中下标索引表示法线是根据哪个体素计算而来的。等式(14)可以以更有效的形式重写,类似于等式(1)。等式(14)的插值与传统的三线性插值不同之处在于,不在双体素704的角处计算法线。相反,使用等式(11)-(13)在命中点706处计算(可能归一化的)解析法线。值得注意的是,在八种情况中的七种情况下,法线是在体素的通常域(usual domain)之外计算的,并且仅在命中点706所在的体素内计算法线。例如,法线720不在表面710上计算,而是在表面712上的命中点706处计算。
图8A示出了根据各种实施例的使用解析法线渲染的示例图像。如图所示,使用解析法线渲染的图像802包括看起来像对象表面上锐利边缘的光照的突然变化。如上所述,光照的突然变化可能是由于跨SDF网格的体素计算的不连续表面法线导致的,这可能导致将不同的光照应用于与这些体素对应的表面的部分。结果,在诸如图像802之类的渲染的图像中,表面可能看起来是多面的。此外,当观察者靠近SDF网格的体素时,光照的突然变化尤其明显。
图8B示出了根据各种实施例的使用解析法线的插值渲染的示例图像。如图所示,上面结合图7A-B描述的使用解析法线的插值渲染的图像804包括比图像802更平滑的光照过渡。更平滑的光照过渡相对于图像802提高了图像804的质量并且当观看者更接近SDF网格的体素时尤其明显。此外,更平滑的光照过渡不会导致某些传统技术产生的模糊。在一些实施例中,解析法线的插值可以在观察者在SDF网格的体素的阈值距离内时执行,并且计算成本较低的技术,例如图8A的解析法线计算,可以在观察者更远离时执行。
图9是根据各种实施例的用于追踪光线到由符号距离函数表示的几何表面的方法步骤的流程图。尽管结合图1-4的系统描述了该方法步骤,但是本领域技术人员将理解被配置为以任何顺序执行该方法步骤的任何系统都落入本实施例的范围内。尽管针对追踪单条光线描述,但是在一些实施例中,可以重复该方法步骤以在渲染图像时追踪多条光线。
如图所示,方法900开始于步骤902,其中渲染应用程序130使得在场景中追踪光线,直到光线与具有在体素的角处指定的SDF值的网格的体素相交。可以以任何技术上可行的方式创建网格和体素,包括在运行时或预先使用众所周知的技术。在一些实施例中,PPU202以任何技术上可行的方式确定光线和体素之间的交点,例如通过SVS、GTS、SBS或SVO技术,如上面结合图5所描述的。
在步骤904处,PPU 202使用三次函数的系数的因式分解确定三次函数,该三次函数可用于找到体素内由SDF表示的几何体表面与光线的交点。在一些实施例中,PPU 202通过根据等式(8)-(9)计算三次函数的系数来确定等式(7)的三次函数,如以上结合图5所描述的。如上所述,等式(8)-(9)中的因式分解允许使用比用于确定三次函数的常规技术所需的更少的操作来计算系数。
在步骤908处,PPU 202使用三次函数确定光线与体素内的对象表面的交点。即,PPU 202使用三次函数执行体素内的三线性内插SDF表面与光线之间的相交测试以确定与对象表面的交点。可以使用任何技术上可行的相交测试。在一些实施例中,可以使用解析三次根计算技术来找到对应于光线与对象表面的交点的三次函数的第一实根。在一些实施例中,可以使用数值技术来找到三次函数的这种第一实根。在这些情况下,三次函数的转折点可以通过计算三次函数的导数的零点来确定。在与体素相关的区间的边界和三次函数的转折点之间的子区间内,或在三次函数的两个转折点之间的子区间内,求数值根技术可用于找到对应于光线与对象表面的交点的三次函数的第一实根,其中三次函数在子区间的边界处具有不同符号。在一些实施例中,求数值根技术可以是重复线性插值技术或Newton-Raphson技术,如上文结合图5所述。
图10是根据各种实施例的用于阴影光线测试的方法步骤的流程图。尽管结合图1-4的系统描述了方法步骤,但本领域技术人员将理解,被配置为以任何顺序执行方法步骤的任何系统都落入本实施例的范围内。尽管针对追踪单个阴影光线进行了描述,但是在一些实施例中,在渲染图像时可以重复该方法步骤以追踪多个阴影光线。
如图所示,方法1000开始于步骤1002,其中PPU 202使用三次函数的系数的因子公式确定三次函数,该三次函数可用于找到体素内的由SDF表示的几何体表面与阴影光线的交点。步骤1002类似于以上结合图9描述的步骤904。
在步骤1004处,PPU 202确定三次函数的转折点。在一些实施例中,PPU 202通过计算三次函数的导数的零点来确定转折点。
在步骤1006处,PPU 202选择与体素相关联的区间的子区间。在一些实施例中,子区间可以在与体素相关联的区间的边界与三次函数的转折点之间,或者在三次函数的两个转折点之间,如以上结合图5-6所描述的。
在步骤1008处,如果子区间边界处的三次函数的值具有相同的符号,则方法1000继续到步骤1010。在步骤1010处,如果有更多子区间要考虑,则方法1000返回到步骤1006,其中PPU 202选择另一个子区间。另一方面,如果没有更多子区间要考虑,则方法1000继续到步骤1012,其中PPU 202确定从其中追踪阴影光线的命中点不在阴影中。
另一方面,如果子区间边界处的三次函数的值在步骤1008处具有不同的符号,则方法1000继续到步骤1014处,其中PPU 202确定光源是否在子区间内。在一些实施例中,PPU202通过检查是否tend≤tfar来确定到光的距离是否超过子区间的端点。
如果光源不在子区间内,则在步骤1016处,PPU 202确定从其追踪阴影光线的命中点(即,阴影光线的原点)在阴影中。值得注意的是,不需要计算精确的命中点。
另一方面,如果光源在子区间内(即,tend>tfar),则在步骤1018处,PPU使用三次函数确定阴影光线与对象表面的交点。步骤1018类似于以上结合图9所描述的方法900的步骤906。
在步骤1020处,PPU 202确定在步骤1018处确定的阴影光线与对象表面的交点是否小于到体素tfar上阴影光线出口点的距离。如果相交的距离不小于到该出口点的距离,则在步骤1022处,PPU 202确定从其追踪阴影光线的命中点不在阴影中。另一方面,如果相交的距离小于到出口点的距离,则在步骤1024处,PPU 202确定从其追踪阴影光线的命中点在阴影中。
图11是根据各种实施例的用于基于解析法线的插值来确定像素颜色的方法步骤的流程图。尽管结合图1-4的系统描述了方法步骤,但本领域技术人员将理解,被配置为以任何顺序执行方法步骤的任何系统都落入本实施例的范围内。尽管针对追踪单条光线进行了描述,但是在一些实施例中,在渲染图像时可以重复该方法步骤以追踪多条光线。
如图所示,方法1100开始于步骤1102,其中PPU 202针对与命中点所在的双体素相关联的体素确定光线和对象表面之间的命中点处的解析法线。在一些实施例中,PPU 202可以根据以上结合图7A描述的等式(10)-(13)或以任何其他技术上可行的方式来计算解析法线。
在步骤1104,PPU 202基于解析法线的插值确定命中点处的表面法线,解析法线是基于命中点在双体素内的位置加权的。在一些实施例中,PPU 202可以根据上面结合图7B描述的等式(14)对解析法线进行内插。
在步骤1106,PPU 202基于表面法线确定像素颜色。在一些实施例中,PPU 202可以使用表面法线来执行任何技术上可行的渲染操作以确定像素颜色。例如,在一些实施例中,PPU 202可以使用表面法线执行一个或更多个着色操作、反射操作等。
总之,公开了用于渲染SDF的技术。在一些实施例中,PPU 202使用因式分解公式来计算三次函数的系数,以在SDF网格的体素中找到光线与由SDF表示的几何体表面的交点。当被追踪的光线是阴影光线时,PPU 202计算三次函数的转折点,并在与体素相关联的区间的子区间的边界处的三次函数的值具有不同符号时确定命中点在阴影中。此外,在确定光线与表面的命中点之后,PPU 202可以通过使用基于相邻体素重叠的双体素内命中点的位置的加权对来自相邻体素的法线进行插值来计算命中点处的表面法线。
所公开的技术相对于现有技术的至少一个技术优势在于,所公开的技术在确定光线与由SDF表示的3D对象的表面的交点时需要更少的操作来计算三次函数的系数。此外,所公开的技术并不总是需要在阴影光线测试期间计算阴影光线和表面之间的精确交点,这相对于需要计算这种交点的传统技术而言在计算上更加有效。此外,使用根据所公开技术计算的表面法线渲染的图像包括通常比使用传统技术渲染的图像中发现的光照变化更平滑的光照变化,这相对于使用传统技术可以实现的提高了整体图像质量。这些技术优势代表了对现有技术方法的一项或更多项技术改进。
1.在一些实施例中,一种用于计算像素颜色的计算机实现的方法包括:在图形场景中追踪光线到所述光线与网格体素的交点;基于所述一个或更多个系数的因式分解公式计算与所述体素相关联的三次函数的一个或更多个系数的一个或更多个值;基于所述三次函数计算所述光线与所述体素内几何体表面的交点;以及基于所述光线与所述几何体表面的所述交点计算第一像素颜色。
2.根据条款1所述的计算机实现的方法,其中计算所述三次函数的所述一个或更多个系数的所述一个或更多个值包括:计算一个或更多个参数,以及基于所述一个或更多个参数计算被包括在一个或更多个系数中的每个系数的值。
3.根据条款1或2所述的计算机实现的方法,其中计算所述光线与所述几何体表面的所述交点包括计算所述体素内的所述三次函数的第一实根。
4.根据条款1-3中的任一项所述的计算机实现的方法,其中计算所述三次函数的所述第一实根包括执行一个或更多个解析根计算操作或一个或更多个数值根计算操作。
5.根据条款1-4中的任一项所述的计算机实现的方法,其中计算所述三次函数的所述第一实根包括执行一个或更多个线性插值运算或一个或更多个Newton-Raphson运算。
6.根据条款1-5中的任一项所述的计算机实现的方法,还包括执行一个或更多个稀疏体素集(SVS)操作、一个或更多个网格球体追踪(GST)操作、一个或更多个稀疏砖集(SBS)操作、或一个或更多个稀疏体素八叉树(SVO)操作来计算所述光线与所述体素的所述交点。
7.根据条款1-6中的任一项所述的计算机实现的方法,还包括:根据所述光线与所述体素的交点设置所述光线的原点,以及将所述原点转换为与所述体素相关的规范空间。
8.根据条款1-7中的任一项所述的计算机实现的方法,其中所述表面基于在所述体素的多个角处的多个有符号距离值被定义在所述体素内。
9.根据条款1-8中的任一项所述的计算机实现的方法,还包括:基于与所述网格的多个对应体素相关联的多个几何体表面计算多个中间表面法线,以及基于所述多个中间表面法线执行一个或更多个插值操作以计算所述命中点处的表面法线,其中,所述第一像素颜色是基于所述表面法线进一步计算的。
10.根据条款1-9中的任一项所述的计算机实现的方法,还包括:从所述命中点开始在所述图形场景中追踪阴影光线,在所述图形场景中追踪阴影光线,确定表示到一个或更多个其他几何体表面的多个距离的另一个三次函数的一个或更多个转折点,基于所述一个或更多个转折点,确定在与网格的另一体素相关联的区间的一个或更多个子区间的多个边界处的另一个三次函数的多个值,以及基于所述多个值确定所述光线与所述表面的所述交点是否位于阴影内。
11.在一些实施例中,一个或更多个非暂时性计算机可读介质存储程序指令,所述程序指令当由至少一个处理器执行时,使所述至少一个处理器执行以下所述步骤:在图形场景中追踪光线到所述光线与网格体素的交点,基于所述一个或更多个系数的因式分解公式计算与所述体素相关联的三次函数的一个或更多个系数的一个或更多个值,基于所述三次函数计算所述光线与所述体素内几何体表面的交点,以及基于所述光线与所述几何体表面的交点计算第一像素颜色。
12.根据条款11所述的一个或更多个非暂时性计算机可读介质,其中计算所述三次函数的所述一个或更多个系数的所述一个或更多个值包括:计算一个或更多个参数,以及基于所述一个或更多个参数计算被包括在所述一个或更多个系数中的每个系数的值。
13.根据条款11或12所述的一个或更多个非暂时性计算机可读介质,其中计算所述光线与所述几何体表面的所述交点包括计算所述体素内的所述三次函数的第一实根。
14.根据条款11-13中的任一项所述的一个或更多个非暂时性计算机可读介质,其中计算所述三次函数的所述第一实根包括执行一个或更多个解析根计算操作或一个或更多个数值根计算操作。
15.根据条款11-14中的任一项所述的一个或更多个非暂时性计算机可读介质,其中计算所述三次函数的所述第一实根包括执行一个或更多个线性插值运算或一个或更多个Newton-Raphson运算。
16.根据条款11-15中的任一项所述的一个或更多个非暂时性计算机可读介质,其中所述指令,在由所述至少一个处理器执行时,进一步使所述至少一个处理器执行以下步骤:执行一个或更多个稀疏体素集(SVS)操作、一个或更多个网格球体追踪(GST)操作、一个或更多个稀疏砖集(SBS)操作,或一个或更多个稀疏体素八叉树(SVO)操作以计算所述光线与所述体素的所述交点。
17.根据条款11-16中的任一项所述的一个或更多个非暂时性计算机可读介质,其中所述表面基于在所述体素的多个角处的多个有符号距离值被定义在所述体素内。
18.在一些实施例中,一种系统包括:存储指令的一个或更多个存储器,以及耦合到所述一个或更多个存储器的一个或更多个处理器,并且在执行指令时,该处理器被配置为:在图形场景中追踪光线到所述光线与网格体素的交点,基于一个或更多个系数的因式分解公式计算与所述体素相关联的三次函数的所述一个或更多个系数的一个或更多个值,基于所述三次函数计算所述光线与所述体素内几何体表面的交点,并且基于所述光线与所述几何体的所述表面的所述交点计算第一像素颜色。
19.根据条款18所述的系统,其中计算所述三次函数的所述一个或更多个系数的所述一个或更多个值包括:计算一个或更多个参数,以及基于所述一个或更多个参数计算包括在所述一个或更多个系数中的每个系数的值。
20.根据条款18或19所述的系统,其中计算所述光线与所述几何体表面的所述交点包括计算所述体素内的所述三次函数的第一实根。
21.在一些实施例中,一种用于计算像素颜色的计算机实现的方法包括:在图形场景中追踪阴影光线,确定三次函数的一个或更多个转折点,其中三次函数表示到网格体素内的一个或更多个几何体表面的多个距离;基于所述一个或更多个转折点,确定与所述体素相关联的区间的一个或更多个子区间的多个边界处的所述三次函数的多个值;基于所述多个值确定另一光线与几何体的另一表面相交的命中点是否位于阴影内;以及基于所述命中点是否位于阴影内计算第一像素颜色。
22.根据条款21所述的计算机实现的方法,其中当包括在所述一个或更多个子区间中的子区间的一对边界处的所述三次函数的至少第一对值具有不同符号时,所述命中点位于阴影内。
23.根据条款21或22所述的计算机实现的方法,其中当所述一个或更多个子区间中包括的每个子区间的每一对边界处的三次函数的每一对值具有相同符号时,所述命中点不位于阴影内。
24.根据条款21-23中的任一项所述的计算机实现的方法,其中所述三次函数在包括在所述一个或更多个子区间中的每个子区间内单调递增或单调递减。
25.根据条款21-24中的任一项所述的计算机实现的方法,还包括:确定阴影光线所指向的光源位于包括在所述一个或更多个子区间中的子区间内;以及计算阴影光线与包括在所述子区间内的一个或更多个表面中的表面的交点。
26.根据条款21-25中的任一项所述的计算机实现的方法,还包括确定所述阴影光线所指向的光源不位于所述体素内。
27.根据条款21-26中的任一项所述的计算机实现的方法,其中所述一个或更多个表面基于在所述体素的多个角处的多个有符号距离值被定义在所述体素内。
28.根据条款21-27中的任一项所述的计算机实现的方法,还包括:基于一个或更多个系数的因式分解公式确定三次函数的一个或更多个系数的一个或更多个值,该三次函数表示到所述几何体表面的多个距离;以及基于所述三次函数确定所述命中点。
29.根据条款21-28中的任一项所述的计算机实现的方法,还包括:基于与所述网格的多个对应体素相关联的多个几何体表面计算多个中间表面法线;以及基于所述多个中间表面法线执行一个或更多个插值操作以计算所述命中点处的表面法线,其中,所述第一像素颜色是基于所述表面法线进一步计算的。
30.在一些实施例中,一种或更多种存储程序指令的非暂时性计算机可读介质,程序指令在由至少一个处理器执行时,使该至少一个处理器执行以下步骤:在图形场景中追踪阴影光线;确定三次函数的一个或更多个转折点,其中所述三次函数表示到网格体素内的一个或更多个几何体表面的多个距离;基于所述一个或更多个转折点,确定与所述体素相关联的区间的一个或更多个子区间的多个边界处的所述三次函数的多个值;基于所述多个值确定另一光线与另一几何体表面相交的命中点是否位于阴影内;以及基于所述命中点是否位于阴影内计算第一像素颜色。
31.根据条款30所述的一个或更多个非暂时性计算机可读介质,其中当包括在一个或更多个子区间中的子区间的一对边界处所述三次函数的至少第一对值有不同的符号时,所述命中点位于阴影内。
32.根据条款30或31所述的一个或多个非暂时性计算机可读介质,其中当包含在所述一个或多个子区间中的每个子区间的每一对边界处的所述三次函数的每一对值具有相同的符号时,所述命中点不位于阴影内。
33.根据条款30-32中的任一项所述的一个或更多个非暂时性计算机可读介质,其中所述三次函数在包括在所述一个或更多个子区间中的每个子区间内单调递增或单调递减。
34.根据条款30-33中的任一项所述的一个或更多个非暂时性计算机可读介质,其中所述指令在由所述至少一个处理器执行时进一步使所述至少一个处理器执行以下步骤:确定所述阴影光线所指向的光源位于包括在所述一个或更多个子区间中的子区间内;以及计算所述阴影光线与包括在所述子区间内的所述一个或更多个表面中的表面的交点。
35.根据条款30-34中的任一项所述的一个或更多个非暂时性计算机可读介质,其中所述指令在由所述至少一个处理器执行时进一步使所述至少一个处理器执行以下步骤:确定所述阴影光线指向的光源不位于所述体素内。
36.根据条款30-35中的任一项所述的一个或更多个非暂时性计算机可读介质,其中所述一个或更多个表面基于在所述体素的多个角处的多个有符号距离值被定义在所述体素内。
37.根据条款30-36中的任一项所述的一个或更多个非暂时性计算机可读介质,其中所述指令在由所述至少一个处理器执行时进一步使所述至少一个处理器执行以下步骤:基于所述一个或更多个系数的因式分解公式确定三次函数的一个或更多个系数的一个或更多个值,该三次函数表示到所述几何体表面的多个距离;以及基于所述三次函数确定所述命中点。
38.根据条款30-37中的任一项所述的一个或更多个非暂时性计算机可读介质,其中所述指令在由所述至少一个处理器执行时进一步使所述至少一个处理器执行以下步骤:基于与所述网格的多个对应体素相关联的多个几何体表面计算多个中间表面法线;以及基于多个中间表面法线执行一个或更多个插值操作以计算所述命中点处的表面法线,其中,所述第一像素颜色是基于所述表面法线进一步计算的。
39.在一些实施例中,一种系统包括:存储指令的一个或更多个存储器;以及耦合到所述一个或更多个存储器的一个或更多个处理器,在执行所述指令时,一个或更多个处理器被配置为:在图形场景中追踪阴影光线;确定三次函数的一个或更多个转折点,其中所述三次函数表示到网格体素内的一个或更多个几何体表面的多个距离;基于所述一个或更多个转折点,确定与所述体素相关联的区间的一个或更多个子区间的多个边界处的所述三次函数的多个值;基于所述多个值,确定另一光线与另一几何体表面相交的命中点是否位于阴影内;以及基于所述命中点是否位于阴影内计算第一像素颜色。
40.根据条款39所述的系统,其中当包括在所述一个或更多个子区间中的子区间的一对边界处的所述三次函数的至少第一对值具有不同符号时,所述命中点位于阴影内。
任何权利要求中记载的任何权利要求要素和/或本申请中描述的任何要素的任何和所有组合,以任何方式都落于本公开和保护的预期范围内。
为了说明的目的,已经给出了各种实施例的描述,但并不旨在穷举或限于所公开的实施例。在不脱离所描述实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说将是显而易见的。
本实施例的各个方面可以实现为系统、方法或计算机程序产品。因此,本公开的方面可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或结合软件和硬件方面的实施例的形式,这些方面在本文中通常被称为“模块”或“系统”。此外,本公开的方面可以采用包含在一个或更多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有包含在其上的计算机可读程序代码。
可以利用一种或更多种计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是,例如,但不限于,电子、磁性、光学、电磁、红外或半导体系统、装置或设备,或上述的任何适当组合。计算机可读存储介质的更具体示例(非详尽列表)将包括以下内容:具有一根或更多根电线的电气连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或上述任何适当组合。在本文档的上下文中,计算机可读存储介质可以是任何有形介质,其可以包含或存储供指令执行系统、装置或设备使用或与之相关联的程序。
上文参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个块,以及流程图和/或框图中的块的组合,可以通过计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以生产机器。指令当通过计算机或其他可编程数据处理设备的处理器执行时,启用流程图和/或框图块或块中指定的功能/动作的实现。此类处理器可以是但不限于通用处理器、专用处理器、专用处理器或现场可编程门阵列。
图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每个块可表示模块、段或代码的一部分,其包括用于实现指定逻辑功能的一个或更多个可执行指令。还应当注意的是,在一些替代实施方式中,在块中标注的功能可以不按照图中标注的顺序出现。例如,根据所涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者有时可以以相反的顺序执行这些块。还将注意到,框图和/或流程图示出的每个块,以及框图和/或流程图示出的块组合,可以由执行指定功能或动作的基于专用硬件的系统或者专用硬件和计算机指令的组合来实现。
虽然前述内容针对本公开的实施例,但是在不脱离其基本范围的情况下,可以设计本公开的其他和进一步的实施例,并且其范围由随后的权利要求确定。

Claims (23)

1.一种用于渲染一个或更多个图形图像的计算机实现的方法,该方法包括:
在图形场景中追踪一条或更多条光线;
计算与所述一条或更多条光线和一个或更多个表面的交点相关联的一个或更多个表面法线,其中计算每个表面法线包括:
计算与网格的多个相邻体素相关联的多个中间表面法线,以及
对所述多个中间表面法线进行插值;以及
基于所述一个或更多个表面法线渲染一个或更多个图形图像。
2.如权利要求1所述的计算机实现的方法,还包括:
基于三次函数的一个或更多个系数的因式分解公式确定所述三次函数的所述一个或更多个系数的一个或更多个值,该三次函数表示到包括在所述一个或更多个表面中的第一表面的多个距离;以及
基于所述三次函数确定包括在所述一条或更多条光线中的光线与包括在所述一个或更多个表面中的表面的交点。
3.如权利要求1所述的计算机实现的方法,还包括:在所述图形场景中追踪阴影光线,其中追踪所述阴影光线包括:
确定三次函数的一个或更多个转折点,该三次函数表示到包括在所述一个或更多个表面中的第一表面的多个距离;
基于所述一个或更多个转折点,确定与网格的体素相关联的区间内的所述三次函数的多个值;以及
基于所述多个值确定第一光线与第一表面相交的命中点是否位于阴影内。
4.如权利要求1所述的计算机实现的方法,其中所述一个或更多个图形图像与视频游戏、电影或建筑或设计应用程序相关联。
5.一种用于计算像素颜色的计算机实现的方法,所述方法包括:
在图形场景中追踪光线至所述光线与几何体表面相交的命中点;
基于与网格的多个对应体素相关联的多个几何体表面计算多个中间表面法线;
基于所述多个中间表面法线执行一个或更多个插值操作以计算所述命中点处的表面法线;以及
基于所述表面法线计算第一像素颜色。
6.如权利要求5所述的计算机实现的方法,其中所述多个对应体素与另一体素相关联,并且所述命中点位于所述另一体素中。
7.如权利要求6所述的计算机实现的方法,其中所述一个或更多个插值操作基于所述命中点在所述另一体素内的位置进行加权。
8.如权利要求6所述的计算机实现的方法,其中所述另一体素与包括在所述多个对应体素中的至少一个体素重叠。
9.如权利要求5所述的计算机实现的方法,其中所述多个表面包括八个表面。
10.如权利要求5所述的计算机实现的方法,其中所述多个表面是基于在所述多个对应体素的多个角处的有符号距离值来定义的。
11.如权利要求5所述的计算机实现的方法,其中计算包括在所述多个中间表面法线中的每个中间表面法线包括:
计算定义包括在所述多个几何体表面中的几何体表面的函数的梯度。
12.如权利要求5所述的计算机实现的方法,其中计算所述第一像素颜色包括基于所述表面法线执行着色操作或反射操作中的至少一个。
13.如权利要求5所述的计算机实现的方法,还包括:
基于三次函数的一个或更多个系数的因式分解公式确定所述三次函数的所述一个或更多个系数的一个或更多个值,所述三次函数表示到所述几何体表面的多个距离;以及
基于所述三次函数确定所述命中点。
14.如权利要求5所述的计算机实现的方法,还包括:
从所述命中点开始在所述图形场景中追踪阴影光线;
确定表示到一个或更多个其他几何体表面的多个距离的三次函数的一个或更多个转折点;
基于所述一个或更多个转折点,确定在与所述网格的另一体素相关联的区间的一个或更多个子区间的多个边界处的所述三次函数的多个值;以及
基于所述多个值确定所述命中点是否位于阴影内。
15.一种或更多种非暂时性计算机可读介质,其存储程序指令,所述程序指令在由至少一个处理器执行时,使所述至少一个处理器执行以下步骤:
在图形场景中追踪光线到所述光线与几何体表面相交的命中点处;
基于与网格的多个对应体素相关联的多个几何体表面计算多个中间表面法线;
基于所述多个中间表面法线执行一个或更多个插值操作以计算所述命中点处的表面法线;以及
基于所述表面法线计算像素颜色。
16.如权利要求15所述的一种或更多种非暂时性计算机可读介质,其中所述多个对应体素与另一体素相关联,并且所述命中点位于所述另一体素中。
17.如权利要求16所述的一种或更多种非暂时性计算机可读介质,其中所述一个或更多个插值操作基于所述命中点在所述另一体素内的位置进行加权。
18.如权利要求16所述的一种或更多种非暂时性计算机可读介质,其中所述另一体素与包括在所述多个对应体素中的至少一个体素重叠。
19.如权利要求15所述的一种或更多种非暂时性计算机可读介质,其中所述多个表面是基于在所述多个对应体素的多个角处的有符号距离值来定义的。
20.如权利要求15所述的一种或更多种非暂时性计算机可读介质,其中计算包括在所述多个中间表面法线中的每个中间表面法线包括:
计算定义包括在所述多个几何体表面中的几何体表面的函数的梯度。
21.如权利要求15所述的一种或更多种非暂时性计算机可读介质,其中计算所述像素颜色包括基于所述表面法线执行着色操作或反射操作中的至少一个。
22.一种系统,包括:
存储指令的一个或更多个存储器;以及
耦合到所述一个或更多个存储器的一个或更多个处理器,并且
当执行所述指令时,所述一个或更多个处理器被配置为:
在图形场景中追踪光线到所述光线与几何体表面相交的命中点,
基于与网格的多个对应体素相关联的多个几何体表面计算多个中间表面法线,
基于所述多个中间表面法线执行一个或更多个插值操作以计算所述命中点处的表面法线,以及
基于所述表面法线计算像素颜色。
23.如权利要求22所述的系统,其中所述多个对应体素与另一体素相关联,并且所述一个或更多个插值操作基于所述命中点在所述另一体素内的位置进行加权。
CN202211055928.0A 2021-09-02 2022-08-31 用于渲染符号距离函数的技术 Pending CN115731332A (zh)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US202163240317P 2021-09-02 2021-09-02
US63/240,317 2021-09-02
US202163241472P 2021-09-07 2021-09-07
US63/241,472 2021-09-07
US17/674,786 US20230063422A1 (en) 2021-09-02 2022-02-17 Techniques for rendering signed distance functions
US17/674,789 2022-02-17
US17/674,786 2022-02-17
US17/674,792 US11887245B2 (en) 2021-09-02 2022-02-17 Techniques for rendering signed distance functions
US17/674,789 US11823319B2 (en) 2021-09-02 2022-02-17 Techniques for rendering signed distance functions
US17/674,792 2022-02-17

Publications (1)

Publication Number Publication Date
CN115731332A true CN115731332A (zh) 2023-03-03

Family

ID=85175484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211055928.0A Pending CN115731332A (zh) 2021-09-02 2022-08-31 用于渲染符号距离函数的技术

Country Status (3)

Country Link
US (1) US20230063422A1 (zh)
CN (1) CN115731332A (zh)
DE (1) DE102022121256A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE514144T1 (de) * 2001-10-16 2011-07-15 Univ Chicago Computerunterstützte erkennung dreidimensionaler läsionen
US9349198B2 (en) * 2013-07-26 2016-05-24 General Electric Company Robust artifact reduction in image reconstruction
US20170171525A1 (en) * 2015-12-14 2017-06-15 Sony Corporation Electronic system including image processing unit for reconstructing 3d surfaces and iterative triangulation method
WO2018145113A1 (en) * 2017-02-06 2018-08-09 MODit3D, INC. System and method for 3d scanning
US10311631B2 (en) * 2017-05-12 2019-06-04 Siemens Healthcare Gmbh Light path fusion for rendering surface and volume data in medical imaging
EP3994660A4 (en) * 2019-07-01 2023-08-02 Geomagical Labs, Inc. METHOD AND SYSTEM FOR IMAGE GENERATION

Also Published As

Publication number Publication date
DE102022121256A1 (de) 2023-03-02
US20230063422A1 (en) 2023-03-02

Similar Documents

Publication Publication Date Title
US9612839B2 (en) Higher accuracy Z-culling in a tile-based architecture
US10032243B2 (en) Distributed tiled caching
US9779533B2 (en) Hierarchical tiled caching
US10438314B2 (en) Two-pass cache tile processing for visibility testing in a tile-based architecture
US10055883B2 (en) Frustum tests for sub-pixel shadows
US10607390B2 (en) Techniques for tiling compute work with graphics work
US20220237852A1 (en) Techniques for texture filtering using refracted ray cones
US20240177394A1 (en) Motion vector optimization for multiple refractive and reflective interfaces
US9916680B2 (en) Low-power processing in depth read-only operating regimes
US11887245B2 (en) Techniques for rendering signed distance functions
CN115731332A (zh) 用于渲染符号距离函数的技术
US20230316628A1 (en) Techniques for avoiding self-intersections when rendering signed distance functions
US11443475B2 (en) Techniques for ray cone tracing and texture filtering
CN113628316B (zh) 使用射线锥进行各向异性纹理滤波的技术
US11756258B2 (en) Techniques for ray cone tracing and texture filtering
US20230343024A1 (en) Techniques for rendering media using position-free path integrals
US11823318B2 (en) Techniques for interleaving textures
CN115485733A (zh) 使用折射光线锥进行纹理过滤的技术

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