用于球面投影的均匀密度立方体贴图渲染的制作方法

文档序号:18889522发布日期:2019-10-15 21:32阅读:229来源:国知局
用于球面投影的均匀密度立方体贴图渲染的制作方法

本申请要求申请日为2018年3月21日,序列号为62/646,248,案号为nvid-p-wu-16-0056us0,题目为“用于球形投影的均匀密度立方体贴图渲染(uniformdensitycubemaprenderingforsphericalprojections)”的优先权和权益,其全部内容通过引用并入本文。

本发明的实施例总地涉及计算机图形领域。更具体地,本发明的实施例涉及用于将球形投影渲染为立方体贴图的系统和方法。



背景技术:

立方体贴图(cubemap)可以用于利用预先计算的纹理图像来确定表面(例如,反射表面)的外观。例如,立方体贴图可以用于存储物体周围的环境的图像。在这种情况下,周围的环境被渲染到立方体贴图中。用于将球形投影渲染到立方体贴图中的传统方法倾向于对立方体贴图的角落或边缘附近的区域进行过采样,从而浪费计算资源并降低性能。

将球形投影渲染为立方体贴图是反射映射、全向阴影贴图和用于光捕获探针的环境贴图的领域中的关键技术。立方体贴图的过采样区域经常导致视觉变形和伪影。同时,尽管整个剪切空间(clipspace)范围通常用于渲染立方体贴图面,但由于球面的透视变形,在光栅化期间实际上仅需要球面的像素的子集来实现期望的后投影结果。

渲染球形投影的现有方法利用不同的映射尺寸和几何形状来减轻非均匀像素分布的影响,例如八面体映射,其使用八个面来捕获和存储周围环境。其他技术包括抛物面映射、金字塔映射和八面体映射。然而,这些技术在渲染和评估时都不利于性能。



技术实现要素:

立方体贴图用于存储可以将其应用于改变所渲染表面或对象的外观的图像。例如,立方体贴图中的图像可以表示周围的场景或环境。当使用传统技术将球形投影渲染为立方体贴图时,可能会发生过采样和图像变形,尤其是在立方体贴图的边缘和角落附近。

所需要的是一种用于将球形投影渲染为立方体贴图的技术,其减轻了立方体贴图的边缘附近的非均匀像素密度,以避免伪像并提高渲染性能。因此,本文公开了用于将球形投影渲染为具有相对均匀的像素密度的立方体贴图的方法和装置。

本发明的实施例将立方体贴图的面划分为象限面,并且为每个象限面指派视口。第一变换函数用于确定投影到象限面上的世界空间顶点的坐标,这导致不均匀的像素密度。可以基于变换的坐标使用多视口渲染来同时渲染视口的视图。此后,使用第二变换函数将渲染视图扩展到立方体贴图的面中,该第二变换函数产生具有更均匀像素密度的立方体贴图。以这种方式,减轻了立方体贴图边缘附近的非均匀像素密度,以避免伪像并提高渲染性能。立方体贴图可以存储在计算机存储器中,并且随后在场景的渲染期间对其进行访问。例如,可以访问立方体贴图以使用阴影贴图或环境贴图来渲染场景。

根据一个实施例,一种用于将球形投影渲染为立方体贴图的方法,包括:将立方体贴图的至少一个立方体面划分为象限面,将视口指派给象限面,确定投射到象限面上的世界空间顶点的坐标,使用所述坐标渲染多个视口的视图,其中所述视图包括所述顶点,并将视图扩展到至少一个立方体面上,其中扩展到至少一个立方体面上的视图具有近似均匀的像素密度。

根据一些实施例,使用下列计算确定投影到象限面上的顶点的位置:其中{u,v}表示坐标,以及其中{x,y}表示在各自的象限面内的顶点的笛卡尔坐标。

根据一些实施例,执行第一渲染传递以确定投影到象限面上的世界空间顶点的坐标,并且执行第二渲染传递以将视图扩展到至少一个立方体面中。

根据一些实施例,将下列计算用于将视图扩展到立方体面上:其中|β|==|α|,其中w表示透视值。

附图的简要说明

包含在本说明书中并形成其一部分的附图示出了本发明的实施例,并且与说明书一起用于解释本发明的原理:

图1是根据本发明实施例的用于将球形投影渲染为具有均匀像素密度的立方体贴图的示例性计算机系统的框图。

图2a是具有六个立方体面的示例性“展开的”立方体贴图的示意图。

图2b是根据本发明的实施例描绘的将示例性立方体贴图面划分成象限的的示意图。

图2c是具有均匀像素密度的个体立方体贴图面的示例性渲染目标的示意图。

图2d是根据本发明实施例的使用变换函数从3d球体投影到2d平面上的示例性立方体贴图面的示意图。

图2e是根据本发明的实施例的使用变换函数将示例性立方体面投影变换(例如,展开)为2d屏幕空间的示意图,该变换函数确定3d立方体贴图面投影的“最佳拟合”表示。

图2f是描绘示例性立方体贴图和变形的球形投影的示意图。

图2g是根据本发明的实施例的描绘示例性立方体贴图面的投影剪切空间的示意图。

图3是根据本发明的实施例的描绘使用最佳拟合方法将立方体面投影变换为2d屏幕空间的示意图。

图4是根据本发明的实施例的用于将球形投影渲染为具有所描绘均匀像素密度的立方体贴图的计算机实现的步骤的示例性序列的流程图。

图5是根据本发明的实施例的用于将球形投影渲染为具有所描绘的均匀像素密度的立方体贴图的框图和数据流程图。

详细描述

现在将详细参考若干实施例。虽然将结合替代实施例描述主题,但是应该理解,它并不旨在将要求保护的主题限制为这些实施例。相反,所要求保护的主题旨在覆盖替代、修改和等同物,其可以包括在由所附权利要求限定的所要求保护的主题的精神和范围内。

此外,在以下详细描述中,阐述了许多具体细节以便提供对所要求保护的主题的透彻理解。然而,本领域技术人员将认识到,可以在没有这些具体细节或其等同物的情况下实践实施例。在其他情况下,没有详细描述众所周知的方法、过程、组件和电路,以免不必要地模糊本主题的方面和特征。

以方法的形式呈现和讨论以下详细描述的部分。尽管在本文描述该方法的操作的图(例如,图4)中公开了其步骤和顺序,但是这些步骤和顺序是示例性的。实施例非常适合于执行本文附图的流程图中记载的各种其他步骤或步骤的变体,并且以不同于本文所描绘和描述的顺序来执行。

在程序、步骤、逻辑块、处理和对在计算机存储器上执行的数据位的操作的其他符号表示方面来呈现详细描述的一些部分。这些描述和表示是数据处理领域的技术人员用来将他们工作的实质最有效地传达给本领域其他技术人员的手段。在这里通常将程序、计算机执行的步骤、逻辑块、过程等认为是导致期望结果的步骤或指令的自洽序列。这些步骤是需要物理操纵物理量的步骤。通常,尽管不是必须的,这些量采用能够在计算机系统中存储、传输、组合、比较和以其他方式操纵的电信号或磁信号的形式。主要出于通用的原因,已经证明有时将这些信号称为比特、值、元素、符号、字符、项目、数字等是方便的。

然而,应该记住,所有这些和类似术语都与适当的物理量相关联,并且仅仅是应用于这些量的便利标签。除非从以下讨论中明确说明,否则应当理解,在整个过程中,利用诸如“访问”、“写入”、“包括”、“存储”、“发送”、“遍历”、“关联”、“识别”等等术语的讨论,是指计算机系统或类似电子计算设备的动作和过程,其将在计算机系统的存储器和寄存器内表示为物理(电子)量的数据操纵和变换为在计算机系统的存储器或寄存器或其他此类信息存储、传输或显示设备中类似地表示为物理量的其他数据。示例性计算机系统

本发明的实施例涉及用于将球形投影渲染成立方体贴图的计算机系统,该立方体贴图减轻了立方体贴图的边缘附近的非均匀像素密度以避免伪像并提高性能。以下讨论描述了这种示例性计算机系统。

在图1的示例中,示例性计算机系统112包括用于运行软件应用程序和可选地操作系统的中央处理单元(cpu)101。随机存取存储器102和只读存储器103存储供cpu101使用的应用程序和数据。数据存储设备104为应用程序和数据提供非易失性的存储,并且可以包括固定磁盘驱动器、可移除磁盘驱动器、闪存设备和cd-rom、dvd-rom或其他光学存储设备。可选的用户输入106和107包括将来自一个或更多个用户的输入传送到计算机系统112的设备(例如,鼠标,操纵杆,照相机,触摸屏和/或麦克风)。

通信或网络接口108允许计算机系统112经由电子通信网络(包括有线和/或无线通信以及包括内联网或因特网)与其他计算机系统、网络或设备通信。显示设备110可以是能够响应于来自计算机系统112的信号而显示视觉信息的任何设备,以及可以包括例如平板触敏显示器。计算机系统112的组件,包括cpu101、存储器102/103、数据存储器104、用户输入设备106和图形子系统105,可以经由一个或更多个数据总线100耦合。

在图1的实施例中,图形子系统105可以与数据总线和计算机系统112的组件耦合。图形系统可以包括物理图形处理单元(gpu)105和图形/视频存储器。gpu105可以包括一个或更多个光栅化器、变换引擎和几何引擎,以及从渲染命令生成像素数据以创建输出图像。物理gpu105可以配置为多个虚拟gpu,其可以由并行执行的多个应用程序或进程并行(例如,同时)使用,或者可以同时使用多个物理gpu。图形子系统105可以将显示数据输出到显示设备110。

图形子系统105可以配置成执行多视口渲染,其中在单通道中渲染多个视口的场景。图形子系统可以执行诸如基于笛卡尔坐标{x,y}的值确定投影立方体贴图面屏幕坐标{u,v},以及通过执行透视划分使用最佳拟合表示将立方体面投影展开为2d屏幕空间(例如,“剪切空间”)之类的操作,从而使得投影包括近似均匀的像素密度。根据一些实施例,图形子系统105可以包括驻留在其中的专用立方体贴图纹理获取硬件,用于快速且有效地获取立方体贴图纹理。

可以在由一个或更多个计算机或其他设备执行的计算机可执行指令(例如程序模块)的一般上下文中描述一些实施例。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,在各种实施例中,可以根据需要组合或分发程序模块的功能。

示例性立方体贴图面渲染

参考图2a,描绘了具有六个立方体面的示例性“展开的”立方体贴图210。尽管可以使用任何方位,但为方便起见,立方体面标有上侧、底部、左侧、右侧、前侧和后侧。立方体贴图210可操作为存储图像,该图像随后可在渲染期间应用于对象以改变对象的外观。例如,可以将诸如周围场景或环境的球形投影捕获到立方体贴图中以在渲染场景期间使用。当使用传统渲染技术将球形投影渲染为立方体贴图210时,对立方体贴图的角落或边缘附近的区域过采样,从而浪费计算资源并降低性能。此外,立方体贴图的过采样区域经常导致视觉变形和伪像。当用于表示球形投影时,本发明的实施例可以呈现立方体贴图210的面的最佳拟合表示,以实现更均匀的像素密度。

参考图2b,根据本发明的实施例描绘了将示例性立方体贴图面220划分为象限。在此示例中,视口vp1指派给左上象限,视口vp2指派给右上象限,视口vp3指派给左下象限,视口vp4指派给右下象限。如下面详细描述的,本发明的实施例确定投影到象限上的顶点的位置,并且渲染从视口的角度看的视图。根据一些实施例,使用配置用于多视口渲染的硬件基本上同时地渲染视口。随后,使用立方体贴图面的最佳拟合表示来将经渲染的立方体面投影展开为2d屏幕空间(例如,“剪切空间”),以实现更均匀的像素密度。

关于图2c,描绘了个体立方体贴图面230的示例性渲染目标。立方体贴图面230包括具有完全均匀的像素密度的多个像素,这意味着立方体贴图面230的中心附近的像素232的尺寸与渲染目标的角落附近的像素234的尺寸相同。换句话说,立方体贴图面230不会变形或不会倾向于过采样。

参考图2d,根据本发明的实施例使用稍后描述的变换函数将图2c中描绘的立方体贴图面230从3d球体投影到2d平面上。3d球体表示周围环境或场景。以这种方式,球形投影可以作为立方体贴图编码和/或存储在存储器中。如图2b所示,得到的立方体面投影240变形并显示不均匀的像素密度。具体地,与投影中心附近的像素相比,像素更小并且在投影的角和边缘附近更紧密地分组。例如,立方体面投影240的中心附近的像素242看起来比立方体面投影240的角部附近的像素244大。

图2e描绘了根据本发明实施例的、使用确定立方体贴图面投影的“最佳拟合”表示250的变换函数将来自图2d的立方体面投影240变换(例如,展开或扩展)到2d屏幕空间中的剪切或倾斜平面。如图2e所示,与图2d的立方体面投影240相比,所展开的最佳拟合表示250显示更均匀的像素密度。例如,在所展开的最佳拟合表示250的中心附近的像素252与在立方体面投影240的角落附近的像素254大小近似相同。

图2f描绘了投射到示例性球形投影265上的示例性立方体贴图260。当使用传统渲染技术渲染球形投影265时,对立方体贴图的角落或边缘(例如,角落261)附近的区域过采样,从而浪费计算资源并降低性能。此外,立方体贴图的过采样区域经常导致视觉变形和伪像(例如,变形266)。因此,根据本发明的实施例,立方体贴图260的面的最佳拟合表示用于实现用于表示球形投影的更均匀的像素密度,并且将所得到的投影进行变换以减轻所述伪影。

图2g描绘了示例性立方体贴图面的投影剪切空间271。当渲染立方体贴图面时,通常将整个剪切空间范围{1,-1}用于渲染。然而,由于球面的透视变形,可以使用屏幕坐标{u,-u}的范围来执行光栅化,以实现相同的后投影结果。例如,从面向球形投影270的观察者275的角度来看,仅需要屏幕坐标{u,-u}之间的球形投影的部分用于光栅化。可以跳过屏幕坐标{1,u}和{-u,-1}之间的球形投影的区域,从而减轻过采样并改善光栅化期间的性能。

示例性立方体贴图面变换和最佳拟合展开

如上所述,变换函数可用于确定投影到立方体贴图面或其象限面上的世界空间顶点的坐标。变换函数使用方程i从笛卡尔坐标中确定所投影的立方体贴图面的坐标:

基于笛卡尔坐标{x,y}的值,方程i确定投影的立方体贴图面屏幕坐标{u,v}。如上面参考图2b所述,所得到的立方体面投影220是变形的并且具有不均匀的像素密度。随后,通过执行透视划分以使投影包括近似均匀的像素密度(方程ii),来使用3d立方体贴图面投影的最佳拟合表示,将立方体面投影展开为2d屏幕空间(例如,“矩阵投影”)以到剪切或倾斜平面。

图3描绘了根据本发明的实施例的用于变换立方体面投影310以用于2d屏幕空间的示例性最佳拟合方法。确定α的值,使得为立方体贴图渲染正确配置变换函数。这可以通过在展开的投影320内找到球形投影310的最佳拟合来实现。根据一些实施例,确定α的值,以使得球形投影310在{x,y}={0.5,1.0}处接触展开的投影320,如图3所示,其中剪切空间的范围为从0到1。在图3中,将{u,v}的值确定为{0.333,0.666},并且α=0.3333。

根据一些实施例,α的值通过计算来确定。类似地可以确定β的值:α和β值是用于将世界空间顶点投影到表面上的剪切投影系数。这里,α和β值用于确定最佳拟合,以便将展开的投影内部的球形投影相对于象限面的最外角(见图3)进行拟合。使用图3的例子,α的值可以通过计算确定。根据一些实施例,确定α和β值,使得立方体面象限累积地表示总球面投影的方位角和仰角的90度范围。根据一些实施例,当投影是对称的(例如对于立方体贴图球形投影)时,α的绝对值等于每个相应视口的β的绝对值。

w的值表示相对于顶点的深度的宽度(例如,透视),并且w的值在距离视口最远的投影平面的点处等于1。可以针对一个视口确定最佳拟合,并且随后将其(例如,横向地)应用于剩余视口。或者,可以针对每个视口独立地计算最佳拟合。根据一些实施例,将每个立方体贴图面划分为象限,并且为每个象限指派视口。

参考图4,根据本发明的实施例描绘了用于将球形投影渲染为具有相对均匀的像素密度的立方体贴图的计算机实现的步骤400的示例性序列。当将球形投影渲染为立方体贴图时,步骤400防止立方体贴图的边缘和角附近的过采样,以改善渲染性能和图像质量。

在步骤401中,将立方体贴图的六个面分成相等尺寸的象限(例如,象限面)。在步骤402中,将视口指派给象限。例如,可以为每个象限指派一个视口,每个立方体贴图总共24个视口。在步骤403中,确定投影到三维坐标系(例如,世界空间)中的象限上的顶点的坐标。投影顶点{u,v}的坐标位置可以使用以下公式确定:该步骤导致具有不均匀像素密度的变形的立方体面投影。

在步骤404中,渲染从视口的角度看的视图。在此阶段,视口的各个视图变形并且具有不均匀的像素密度。在步骤405中,使用3d立方体贴图面的最佳拟合表示,将变形的立方体面投影展开/扩展为2d屏幕空间(例如,“剪切空间”)。应用变换函数,以使得2d投影包括近似均匀的像素密度,并且所将得到的展开的和未变形的视图存储在立方体贴图的面中。公式可用于将视图扩展(例如,变换或展开)到立方体面上,其中在步骤406中,将得到的立方体贴图存储在计算机存储器中。随后,可以执行查找操作以使用立方体贴图确定场景的值,其中立方体贴图是例如阴影贴图或环境贴图,并且可以根据上述值来渲染场景。

参考图5,根据本发明的实施例描绘了用于将球形投影渲染为具有均匀像素密度的立方体贴图的示例性框图和数据流程图500。将表示周围环境的3d场景数据510馈送到几何引擎520。几何引擎520应用变换(例如,顶点着色、曲面细分等)并生成所有视口的输出。变换引擎530可以执行诸如基于笛卡尔坐标{x,y}的值确定投影立方体贴图面屏幕坐标{u,v}(方程i),以及通过执行透视划分使用最佳拟合表示将立方体面投影展开到2d屏幕空间(例如,“剪切空间”)(方程ii)以使得投影包括近似均匀的像素密度之类的操作。所得到的具有几乎均匀的像素密度的立方体贴图可以存储在计算机存储器中并用于渲染一个或更多个几何图元。使用光栅化器540对图元进行光栅化以创建用于显示的帧缓冲图像(例如,位图)。将光栅化图像输出到显示设备550以供显示。

根据本发明的一些实施例,立方体贴图是用于光捕获探针的环境贴图。根据其他实施例,立方体贴图是全向阴影贴图。根据其他实施例,立方体贴图用于确定用于光计算的像素或纹理像素的辐射值。

根据一些实施例,使用立方体贴图纹理获取硬件来执行对由本发明的实施例生成的立方体贴图执行的查找操作。根据一些实施例,立方体贴图纹理获取硬件是gpu的组件。

因此这里描述了本发明的实施例。虽然已经在特定实施例中描述了本发明,但是应该理解,不应该将本发明解释为受这些实施例的限制,而是应该根据所附权利要求来解释。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1