CN115917605A - 用于次序无关的遮挡计算的方法和装置 - Google Patents
用于次序无关的遮挡计算的方法和装置 Download PDFInfo
- Publication number
- CN115917605A CN115917605A CN202180038604.3A CN202180038604A CN115917605A CN 115917605 A CN115917605 A CN 115917605A CN 202180038604 A CN202180038604 A CN 202180038604A CN 115917605 A CN115917605 A CN 115917605A
- Authority
- CN
- China
- Prior art keywords
- information
- visibility
- primitives
- cell
- occlusion
- 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
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/10—Geometric effects
- G06T15/40—Hidden part removal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Computing Systems (AREA)
- Image Generation (AREA)
Abstract
本公开涉及用于图形处理的方法和装置。该装置可以确定针对与场景中的视点相关联的多个基元中的每个基元的几何信息。该装置还可以基于针对多个基元中的每个基元的几何信息来计算表面信息和去遮挡信息中的至少一者,其中表面信息和去遮挡信息可以与基于与视点相对应的观看区域的体积网格相关联。同样,该装置可以基于表面信息和去遮挡信息中的至少一者来计算针对多个基元中的每个基元的可见性信息,其中可见性信息可以与体积网格相关联。该装置还可以基于针对多个基元中的每个基元的可见性信息来确定多个基元中的每个基元是否可见。
Description
相关申请的交叉引用
本申请要求于2020年6月5日提交的题为“METHODS AND APPARATUS FOR ORDER-INDEPENDENT OCCLUSION COMPUTATIONS”,序列号为16/894,643的美国申请的权益,该申请的全部内容通过引用而被明确地并入本文。
技术领域
本公开通常涉及处理系统,并且更具体地,涉及用于图形处理的一种或多种技术。
背景技术
计算设备经常利用图形处理单元(GPU)来加速用于显示的图形数据的渲染。此类计算设备可以包括:例如,计算机工作站、诸如所谓的智能电话的移动电话、嵌入式系统、个人计算机、平板计算机和视频游戏控制台。GPU执行图形处理流水线,图形处理流水线包括一个或多个处理阶段,这一个或多个处理阶段一起操作以执行图形处理命令并输出帧。中央处理单元(CPU)可以通过向GPU发出一个或多个图形处理命令来控制GPU的操作。现代的CPU典型地能够同时执行多个应用,这多个应用中的每一个可能需要在执行期间利用GPU。为显示器上的视觉呈现提供内容的设备通常包括GPU。
典型地,设备的GPU被配置为执行图形处理流水线中的处理。然而,随着无线通信和更小的手持设备的出现,对改进的图形处理的需求日益增加。
发明内容
以下呈现了一个或多个方面的简化概要,以便提供对此类方面的基本理解。本概要不是所有预期方面的广泛概述,并且既不旨在标识所有方面的关键要素,也不旨在限定任何或所有方面的范围。其唯一目的是以简化的形式呈现一个或多个方面的一些概念,作为稍后呈现的更详细描述的前言。
在本公开的方面中,提供了方法、计算机可读介质和装置。装置可以是中央处理单元(CPU)、图形处理单元(GPU)、顶点着色器、片段着色器、计算着色器,或者能够执行图形处理的任何装置。该装置可以基于与场景中的视点相对应的观看区域来生成体积网格,其中,体积网格可以与对应于表面信息的表面缓冲器、对应于去遮挡(disocclusion)信息的去遮挡缓冲器,以及对应于可见性信息的可见性缓冲器相关联。该装置还可以生成包括多个表面单元格的表面缓冲器、包括多个去遮挡单元格的去遮挡缓冲器,以及包括多个可见性单元格的可见性缓冲器。该装置还可以确定针对与场景中的视点相关联的多个基元(primitive)中的每个基元的几何信息。而且,该装置可以基于几何信息来标识针对多个基元中的每个基元的一个或多个表面片段和一个或多个剪影(silhouette)边缘中的至少一者。该装置还可以将针对多个基元中的每个基元的几何信息转换为表面信息和去遮挡信息中的至少一者。该装置还可以基于针对多个基元中的每个基元的几何信息来计算表面信息和去遮挡信息中的至少一者,其中表面信息和去遮挡信息可以与基于与视点相对应的观看区域的体积网格相关联。同样,该装置可以基于表面信息和去遮挡信息中的至少一者来计算针对多个基元中的每个基元的可见性信息,其中可见性信息可以与体积网格相关联。该装置还可以将表面信息存储在表面缓冲器中,将去遮挡信息存储在去遮挡缓冲器中,并且将可见性信息存储在可见性缓冲器中。该装置还可以基于针对多个基元中的每个基元的可见性信息来确定多个基元中的每个基元是否可见。另外,该装置可以存储针对被确定为可见的多个基元中的每个基元的可见性信息,其中该可见性信息可以被存储为潜在可见集(PVS)信息。该装置还可以渲染包括被确定为可见的多个基元中的每个基元的至少一个图像。
在所附附图以及下文的描述中阐述了本公开的一个或多个示例的细节。本公开的其他的特征、目的和优点将从描述和附图,以及从权利要求中显而易见。
附图说明
图1是示出根据本公开的一种或多种技术的示例内容生成系统的框图。
图2示出根据本公开的一种或多种技术的示例GPU。
图3示出根据本公开的一种或多种技术的示例图像或表面。
图4示出根据本公开的一种或多种技术的示例图像或表面。
图5A和5B示出根据本公开的一种或多种技术的包括观看区域的示例图。
图6A-6C示出根据本公开的一种或多种技术的包括观看区域和体积网格的示例图。
图7A-7C示出根据本公开的一种或多种技术的包括观看区域和体积网格的示例图。
图8A-8C示出根据本公开的一种或多种技术的包括观看区域和体积网格的示例图。
图9A-9C示出根据本公开的一种或多种技术的包括观看区域和体积网格的示例图。
图10A-10C示出根据本公开的一种或多种技术的包括观看区域和体积网格的示例图。
图11示出根据本公开的一种或多种技术的示例图。
图12示出根据本公开的一种或多种技术的示例方法的示例流程图。
具体实施方式
可见性计算可以诸如经由修剪区域(trim region)来对整个场景几何进行排序(sort)。例如,可以在修剪区域中在逐层的基础上执行预排序。可以在对象上、在桶(bucket)中或者依照每片段链表(per-fragment linked list)来实现此类排序。可能需要多个通道(pass)来处理对象并对这些对象执行排序。基于此,排序过程可能成为图形系统的瓶颈。结果,沿视线堆叠的遮挡的数量可能受到限制,或者可能需要更多的通道。为了在不久的将来确定哪些对象可能是可见的,一些方法可以修剪掉当前可见的对象的边界以便确定在这些对象之后哪些对象可能是可见的。此未来的可见性可以基于相机或场景与对象的轻微移动。在一些实例中,修剪区域(即,对象空间中的其中执行去遮挡的区域)可以被存储为在前平面和后平面之间具有固定距离的图像空间挤压(extrusion)。然而,修剪区域深度也可以是固定大小,这可能不够高效到足以节省时间或存储器。本公开的方面可以利用高效的办法来确定可见性计算或潜在可见集(PVS)。例如,为了计算可见性计算,本公开的方面可以不需要对针对整个场景的几何进行排序。本文中的一些办法(例如,可见性体积办法)可以直接使用在眼睛空间中定义的透视3D网格,而不是对修剪区域的列表进行排序。这可以提供整个场景或延伸的视锥体(view frustum)的体积或几何表示。例如,可以利用多个体积缓冲器(例如,三个3D体积缓冲器)来捕捉体积。缓冲器中的每个条目可以利用单个比特,这可以使该办法是存储器高效的。
下面将参考所附附图更全面地描述系统、装置、计算机程序产品和方法的各个方面。然而,本公开可以以许多不同的形式来体现,并且不应被解释为限于贯穿本公开而呈现的任何特定结构或功能。确切地说,提供这些方面以使得本公开将是详细和完整的,并且将本公开的范围完全传达给本领域技术人员。基于本文的教导,本领域的技术人员应当理解,本公开的范围旨在覆盖本文所公开的系统、装置、计算机程序产品和方法的任何方面,不管这些方面是独立于本公开的其他方面来实现,还是结合本公开的其他方面来实现。例如,可使用本文所阐述的任意数量的方面来实现装置或实践方法。此外,本公开的范围旨在覆盖这样的装置或方法,该装置或方法除了使用本文阐述的本公开的各个方面之外还使用其他结构、功能、或结构和功能或使用本文阐述的本公开的各个方面之外的其他结构、功能、或结构和功能来实践。本文公开的任何方面可以由权利要求的一个或多个要素来体现。
尽管本文描述了各个方面,但这些方面的许多变体和置换落入本公开的范围内。尽管提到了本公开的方面的一些潜在益处和优点,但是本公开的范围不旨在限于特定益处、用途或目的。确切地说,本公开的方面旨在广泛地适用于不同的无线技术、系统配置、网络和传输协议,其中的一些在附图和以下描述中通过示例而被示出。详细描述和附图仅仅是说明本公开而不是限制,本公开的范围由所附权利要求及其等同物限定。
参考各种装置和方法呈现了若干方面。这些装置和方法被描述于以下详细描述中,并且通过各种框、组件、电路、处理、算法等(统称为“要素”)而被示出于所附附图中。可以使用电子硬件、计算机软件或其任何组合来实现这些要素。此类要素被实现为硬件还是软件取决于特定应用以及施加于整体系统的设计约束。
通过示例,要素或要素的任何部分或要素的任何组合可以被实现为包括一个或多个处理器(其也可以被称为处理单元)的“处理系统”。处理器的示例包括微处理器、微控制器、图形处理单元(GPU)、通用目的GPU(GPGPU)、中央处理单元(CPU)、应用处理器、数字信号处理器(DSP)、精简指令集计算(RISC)处理器、片上系统(SOC)、基带处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、状态机、门控逻辑、离散硬件电路,以及被配置为执行贯穿本公开描述的各种功能性的其他合适的硬件。处理系统中的一个或多个处理器可以执行软件。软件应被广泛地解释为意指指令、指令集、代码、代码段、程序代码、程序、子程序、软件组件、应用、软件应用、软件包、例程、子例程、对象、可执行文件、执行线程、过程、函数等,无论是被称为软件、固件、中间件、微码、硬件描述语言还是其它。术语应用可以指软件。如本文中所描述的,一种或多种技术可以指代被配置为执行一种或多种功能的应用,即软件。在此类示例中,应用可以被存储在存储器上,例如,处理器的片上存储器、系统存储器或任何其他存储器上。本文所描述的硬件(诸如处理器)可以被配置为执行应用。例如,应用可以被描述为包括在由硬件执行时使硬件执行本文所描述的一种或多种技术的代码。作为示例,硬件可以从存储器访问代码并执行从存储器访问的代码,以执行本文描述的一种或多种技术。在一些示例中,在本公开中标识了组件。在此类示例中,组件可以是硬件、软件或其组合。组件可以是单独的组件或者单个组件的子组件。
相应地,在本文描述的一个或多个示例中,所描述的功能可以以硬件、软件或其任何组合来实现。如果以软件实现,则功能可以被存储在计算机可读介质上,或被编码为计算机可读介质上的一个或多个指令或代码。计算机可读介质包括计算机存储介质。存储介质可以是可由计算机访问的任何可用介质。通过示例而非限制,此类计算机可读介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、光盘存储、磁盘存储、其它磁存储设备,上述类型的计算机可读介质的组合,或者可被用于以可由计算机访问的指令或数据结构的形式存储计算机可执行代码的任何其他介质。
通常,本公开描述用于以下的技术:在单个设备或多个设备中具有图形处理流水线,改进图形内容的渲染,和/或减少处理单元(即,被配置为执行本文所描述的一种或多种技术的任何处理单元,诸如GPU)的负载。例如,本公开描述了用于在利用图形处理的任何设备中进行图形处理的技术。贯穿本公开描述了其他示例益处。
如本文所使用的,术语“内容”的实例可以指“图形内容”、“图像”,反之亦然。不管术语是被用作形容词、名词还是其他词性,都是如此。在一些示例中,如本文中所使用的,术语“图形内容”可以指由图形处理流水线的一个或多个处理产生的内容。在一些示例中,如本文中所使用的,术语“图形内容”可以指由被配置为执行图形处理的处理单元产生的内容。在一些示例中,如本文所使用的,术语“图形内容”可以指由图形处理单元产生的内容。
在一些示例中,如本文中所使用的,术语“显示内容”可以指由被配置为执行显示处理的处理单元生成的内容。在一些示例中,如本文所使用的,术语“显示内容”可以指由显示处理单元生成的内容。图形内容可以被处理以变成显示内容。例如,图形处理单元可以向缓冲器(其可以被称为帧缓冲器)输出诸如帧之类的图形内容。显示处理单元可以读取图形内容,诸如来自缓冲器的一个或多个帧,并且在其上执行一种或多种显示处理技术以生成显示内容。例如,显示处理单元可以被配置为对一个或多个经渲染的层执行合成以生成帧。作为另一示例,显示处理单元可以被配置为将两个或更多个层合成、混合或以其它方式组合在一起成为单个帧。显示处理单元可以被配置为对帧执行缩放,例如,放大或缩小。在一些示例中,帧可以指层。在其他示例中,帧可以指已被混合在一起以形成帧的两个或更多个层,即,帧包括两个或更多个层,并且包括两个或更多个层的帧随后可以被混合。
图1是示出被配置为实现本公开的一种或多种技术的示例内容生成系统100的框图。内容生成系统100包括设备104。设备104可以包括用于执行本文描述的各种功能的一个或多个组件或电路。在一些示例中,设备104的一个或多个组件可以是SOC的组件。设备104可以包括被配置为执行本公开的一种或多种技术的一个或多个组件。在所示的示例中,设备104可以包括处理单元120、内容编码器/解码器122,以及系统存储器124。在一些方面,设备104可以包括多个可选组件,例如,通信接口126、收发器132、接收器128、发送器130、显示处理器127,以及一个或多个显示器131。对显示器131的引用可以指代一个或多个显示器131。例如,显示器131可以包括单个显示器或多个显示器。显示器131可以包括第一显示器和第二显示器。第一显示器可以是左眼显示器,而第二显示器可以是右眼显示器。在一些示例中,第一显示器和第二显示器可以接收用于在其上进行呈现的不同帧。在其它示例中,第一显示器和第二显示器可以接收用于在其上进行呈现的相同帧。在进一步的示例中,图形处理的结果可以不被显示在设备上,例如,第一显示器和第二显示器可以不接收用于在其上呈现的任何帧。相反,帧或图形处理结果可以被传递到另一设备。在一些方面中,这可以被称为拆分渲染(split-rendering)。
处理单元120可以包括内部存储器121。处理单元120可以被配置为执行诸如图形处理流水线107中的图形处理。内容编码器/解码器122可以包括内部存储器123。在一些示例中,设备104可以包括诸如显示处理器127之类的显示处理器,以在由一个或多个显示器131呈现之前对由处理单元120生成的一个或多个帧执行一种或多种显示处理技术。显示处理器127可以被配置为执行显示处理。例如,显示处理器127可以被配置为对由处理单元120生成的一个或多个帧执行一种或多种显示处理技术。一个或多个显示器131可以被配置为显示或以其他方式呈现由显示处理器127处理的帧。在一些示例中,一个或多个显示器131可以包括以下中的一项或多项:液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、投影显示设备、增强现实显示设备、虚拟现实显示设备、头戴式显示器或任何其他类型的显示设备。
处理单元120和内容编码器/解码器122外部的存储器(诸如系统存储器124)可以由处理单元120和内容编码器/解码器122访问。例如,处理单元120和内容编码器/解码器122可以被配置为读取和/或写入外部存储器(诸如系统存储器124)。处理单元120和内容编码器/解码器122可以通过总线而通信地耦合到系统存储器124。在一些示例中,处理单元120和内容编码器/解码器122可以通过总线或不同的连接而彼此通信地耦合。
内容编码器/解码器122可以被配置为从诸如系统存储器124和/或通信接口126之类的任何源接收图形内容。系统存储器124可以被配置为存储所接收的经编码或经解码的图形内容。内容编码器/解码器122可以被配置为以经编码的像素数据的形式例如从系统存储器124和/或通信接口126接收经编码或经解码的图形内容。内容编码器/解码器122可以被配置为对任何图形内容进行编码或解码。
内部存储器121或系统存储器124可以包括一个或多个易失性或非易失性的存储器或存储设备。在一些示例中,内部存储器121或系统存储器124可以包括RAM、SRAM、DRAM、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁性数据介质或光学存储介质,或任何其它类型的存储器。
根据一些示例,内部存储器121或系统存储器124可以是非暂态存储介质。术语“非暂态”可以指示存储介质没有被体现于载波或传播信号中。然而,术语“非暂态”不应被解释为意指内部存储器121或系统存储器124是不可移动的或者其内容是静态的。作为一个示例,系统存储器124可以从设备104被移除,并被移动至另一设备。作为另一示例,系统存储器124可以是不可从设备104移除的。
处理单元120可以是中央处理单元(CPU)、图形处理单元(GPU)、通用GPU(GPGPU)或可以被配置为执行图形处理的任何其它处理单元。在一些示例中,处理单元120可以被集成到设备104的主板中。在一些示例中,处理单元120可以存在于安装在设备104的主板中的端口中的图形卡上,或者可以以其他方式被并入被配置为与设备104互操作的外围设备内。处理单元120可以包括一个或多个处理器,诸如一个或多个微处理器、GPU、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、离散逻辑、软件、硬件、固件、其它等同的集成或离散逻辑电路,或者其任何组合。如果部分地以软件来实现这些技术,处理单元120可以将用于软件的指令存储在合适的非暂态计算机可读存储介质(例如,内部存储器121)中,并且可以使用一个或多个处理器在硬件中执行这些指令以执行本公开的技术。前述项的任一个,包括硬件、软件、硬件和软件的组合等,可以被认为是一个或多个处理器。
内容编码器/解码器122可以是被配置为执行内容解码的任何处理单元。在一些示例中,内容编码器/解码器122可以被集成到设备104的主板中。内容编码器/解码器122可以包括一个或多个处理器,诸如一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、视频处理器、离散逻辑、软件、硬件、固件、其它等同的集成或离散逻辑电路,或者其任何组合。如果部分地以软件来实现这些技术,内容编码器/解码器122可以将用于软件的指令存储在合适的非暂态计算机可读存储介质(例如,内部存储器123)中,并且可以使用一个或多个处理器在硬件中执行这些指令以执行本公开的技术。前述项的任一个,包括硬件、软件、硬件和软件的组合等,可以被认为是一个或多个处理器。
在一些方面中,内容生成系统100可以包括可选的通信接口126。通信接口126可以包括接收器128和发送器130。接收器128可以被配置为执行本文相对于设备104描述的任何接收功能。另外,接收器128可以被配置为从另一设备接收信息(例如,眼睛或头部定位信息、渲染命令或位置信息)。发送器130可以被配置为执行本文相对于设备104描述的任何发送功能。例如,发送器130可以被配置为向另一设备发送信息,该信息可以包括对内容的请求。接收器128和发送器130可以被组合成收发器132。在此类示例中,收发器132可以被配置为执行本文相对于设备104描述的任何接收功能和/或发送功能。
再次参考图1,在一些方面中,图形处理流水线107可以包括确定组件198,确定组件198被配置为基于与场景中的视点相对应的观看区域来生成体积网格,其中,体积网格可以与对应于表面信息的表面缓冲器、对应于去遮挡信息的去遮挡缓冲器,以及对应于可见性信息的可见性缓冲器相关联。确定组件198还可以被配置为生成包括多个表面单元格(cell)的表面缓冲器、包括多个去遮挡单元格的去遮挡缓冲器,以及包括多个可见性单元格的可见性缓冲器。确定组件198还可以被配置为确定针对与场景中的视点相关联的多个基元(primitive)中的每个基元的几何信息。确定组件198还可以被配置为基于几何信息来标识针对多个基元中的每个基元的一个或多个表面片段和一个或多个剪影(silhouette)边缘中的至少一者。确定组件198还可以被配置为将针对多个基元中的每个基元的几何信息转换为表面信息和去遮挡信息中的至少一者。确定组件198还可以被配置为基于针对多个基元中的每个基元的几何信息来计算表面信息和去遮挡信息中的至少一者,其中表面信息和去遮挡信息可以与基于与视点相对应的观看区域的体积网格相关联。确定组件198还可以被配置为基于表面信息和去遮挡信息中的至少一者来计算针对多个基元中的每个基元的可见性信息,其中可见性信息可以与体积网格相关联。确定组件198还可以被配置为将表面信息存储在表面缓冲器中,将去遮挡信息存储在去遮挡缓冲器中,并且将可见性信息存储在可见性缓冲器中。确定组件198还可以被配置为基于针对多个基元中的每个基元的可见性信息来确定多个基元中的每个基元是否可见。确定组件198还可以被配置为存储针对被确定为可见的多个基元中的每个基元的可见性信息,其中该可见性信息可以被存储为潜在可见集(PVS)信息。确定组件198还可以被配置为渲染包括被确定为可见的多个基元中的每个基元的至少一个图像。
如本文中所描述的,诸如设备104之类的设备可以指被配置为执行本文中所描述的一种或多种技术的任何设备、装置或系统。例如,设备可以是服务器、基站、用户设备、客户端设备、站、接入点、计算机(例如,个人计算机、台式计算机、膝上型计算机、平板计算机、计算机工作站或大型计算机)、终端产品、装置、电话、智能电话、服务器、视频游戏平台或控制台、手持设备(例如,便携式视频游戏设备或个人数字助理(PDA))、可穿戴计算设备(例如,智能手表、增强现实设备或虚拟现实设备)、非可穿戴设备、显示器或显示设备、电视、电视机顶盒、中间网络设备、数字媒体播放器、视频流式传输设备、内容流式传输设备、车载计算机、任何移动设备、被配置为生成图形内容的任何设备,或者被配置为执行本文中所描述的一种或多种技术的任何设备。本文中的过程可以被描述为由特定组件(例如,GPU)执行,但在进一步的实施例中,可以使用符合所公开的实施例的其它组件(例如,CPU)来执行本文中的过程。
GPU可以处理GPU流水线中的多种类型的数据或数据分组。例如,在一些方面中,GPU可以处理两种类型的数据或数据分组,例如,上下文寄存器分组和绘制调用数据。上下文寄存器分组可以是全局状态信息(例如,关于全局寄存器的信息)、着色程序或恒定数据的集合,其可以调节将如何处理图形上下文。例如,上下文寄存器分组可以包括关于色彩格式的信息。在上下文寄存器分组的一些方面中,可以存在指示哪个工作负载属于上下文寄存器的比特。同样,可以有多个功能或编程同时和/或并行地运行。例如,功能或编程可以描述特定操作,例如,色彩模式或色彩格式。相应地,上下文寄存器可以定义GPU的多个状态。
上下文状态可以被用于确定单独的处理单元(例如,顶点取出器(vertexfetcher,VFD)、顶点着色器(VS)、着色器处理器或几何处理器)如何起作用,和/或处理单元以什么模式起作用。为此,GPU可以使用上下文寄存器和编程数据。在一些方面中,GPU可以基于模式或状态的上下文寄存器定义而在流水线中生成工作负载,例如,顶点或像素工作负载。某些处理单元(例如,VFD)可以使用这些状态来确定某些功能,例如,如何组装顶点。由于这些模式或状态可以改变,因此GPU可以改变对应的上下文。另外,对应于模式或状态的工作负载可以遵循改变的模式或状态。
图2示出根据本公开的一种或多种技术的示例GPU 200。如图2中所示,GPU 200包括命令处理器(CP)210、绘制调用分组212、VFD 220、VS 222、顶点高速缓存(VPC)224、三角形建立引擎(TSE)226、光栅化器(RAS)228、Z处理引擎(ZPE)230、像素插值器(PI)232、片段着色器(FS)234、渲染后端(RB)236、L2高速缓存(UCHE)238,以及系统存储器240。尽管图2显示GPU 200包括处理单元220-238,但GPU 200可以包括多个附加的处理单元。另外,处理单元220-238仅仅是示例,并且根据本公开,处理单元的任何组合或次序都可以由GPU使用。GPU 200还包括命令缓冲器250、上下文寄存器分组260和上下文状态261。
如图2中所示,GPU可以利用CP(例如,CP 210)或者硬件加速器来将命令缓冲器解析成上下文寄存器分组(例如,上下文寄存器分组260),和/或绘制调用数据分组(例如,绘制调用分组212)。CP 210随后可以通过分开的路径向GPU中的处理单元或块发送上下文寄存器分组260或绘制调用数据分组212。此外,命令缓冲器250可以交替上下文寄存器和和绘制调用的不同状态。例如,可以按以下方式构造命令缓冲器:上下文N的上下文寄存器,上下文N的(多个)绘制调用,上下文N+1的上下文寄存器,以及上下文N+1的(多个)绘制调用。
GPU可以以各种不同的方式来渲染图像。在一些实例中,GPU可以使用渲染或图块渲染(tiled rendering)来渲染图像。在图块渲染GPU中,图像可以被划分或分割成不同的区段或图块(tile)。在图像的划分之后,每个区段或图块可以被单独地渲染。图块渲染GPU可以将计算机图形图像划分成网格格式,使得网格的每个部分(即,图块)被单独渲染。在一些方面中,在装仓(binning)通道期间,图像可以被划分成不同的仓(bin)或图块。在一些方面中,在装仓通道期间,可见性流可以被构造,其中可见的基元或绘制调用可以被标识。
在一些方面中,GPU可以将绘制或渲染过程应用于不同的仓或图块。例如,GPU可以渲染到一个仓,并执行用于仓中的基元或像素的所有绘制。在渲染到仓的过程期间,渲染目标可以位于GPU内部存储器(GMEM)中。在一些实例中,在渲染到一个仓之后,渲染目标的内容可以被移动到系统存储器,并且GMEM可以被释放以用于渲染下一仓。另外,GPU可以渲染到另一仓,并且执行用于此仓中的基元或像素的绘制。因此,在一些方面中,可能存在少量的仓,例如,四个仓,这些仓覆盖一个表面中的所有绘制。此外,GPU可以循环通过一个仓中的所有绘制,但执行针对可见的绘制调用(即,包括可见几何形状的绘制调用)的绘制。在一些方面中,可见性流可以例如在装仓通道中被生成以确定图像或场景中的每个基元的可见性信息。例如,此可见性流可以标识特定基元是否可见。在一些方面中,此信息可以例如在渲染通道中被用于移除不可见的基元。同样,被标识为可见的基元中的至少一些基元可以在渲染通道中被渲染。
在图块渲染的一些方面中,可以存在多个处理阶段或通道。例如,渲染可以在两个通道中被执行,例如,可见性或仓可见性通道以及渲染或仓渲染通道。在可见性通道期间,GPU可以输入渲染工作负载,记录基元或三角形的位置,并且随后确定哪些基元或三角形落入哪个仓或区域中。在可见性通道的一些方面中,GPU还可以在可见性流中标识或标记每个基元或三角形的可见性。在渲染通道期间,GPU可以输入可见性流并且一次处理一个仓或区域。在一些方面中,可见性流可以被分析以确定哪些基元或者基元的顶点是可见的或不可见的。如此,可见的基元或者基元的顶点可以被处理。通过这样做,GPU可以减少处理或渲染不可见的基元或三角形的不必要工作负载。
在一些方面中,在可见性通道期间,特定类型的基元几何(例如,定位几何)可以被处理。另外,取决于基元或三角形的定位或位置,基元可以被排序到不同的仓或区域中。在一些实例中,可以通过确定针对这些基元或三角形的可见性信息来执行将基元或三角形排序到不同的仓中。例如,GPU可以确定或在例如系统存储器中写入每个仓或区域中的每个基元的可见性信息。此可见性信息可以被用于确定或生成可见性流。在渲染通道中,每个仓中的基元可以被单独渲染。在这些实例中,可以从存储器取出可见性流,用于丢弃对于该仓不可见的基元。
GPU或GPU架构的一些方面可以提供用于渲染的多种不同选项,例如,软件渲染和硬件渲染。在软件渲染中,驱动器或CPU可以通过一次处理每个视图来复制整个帧几何。另外,可以取决于视图而改变一些不同的状态。如此,在软件渲染中,软件可以通过改变一些状态来复制整个工作负载,这些状态可以被用于针对图像中的每个视点进行渲染。在一些方面中,由于GPU可能正针对图像中的每个视点而多次提交相同的工作负载,所以开销的量可能增加。在硬件渲染中,硬件或GPU可以负责复制或处理针对图像中的每个视点的几何。相应地,硬件可以管理针对图像中的每个视点的基元或三角形的复制或处理。
图3示出图像或表面300,包括划分到多个仓中的多个基元。如图3所示,图像或表面300包括区域302,区域302包括基元321、322、323和324。基元321、322、323和324被划分或放置到不同的仓中,例如,仓310、311、312、313、314和315。图3示出了使用针对基元321-324的多个视点的图块渲染的示例。例如,基元321-324在第一视点350和第二视点351中。如此,GPU处理或渲染包括区域302的图像或表面300可以利用多视点或多视图渲染。
如本文所指示的,GPU或图形处理器单元可以使用图块渲染架构来降低功耗或节省存储器带宽。如上文进一步陈述的,此渲染方法可以将场景划分为多个仓,并且包括标识每个仓中可见的三角形的可见性通道。因此,在图块渲染中,全屏可以被划分成多个仓或图块。随后可以针对每个仓多次(例如,一次或多次)渲染该场景。
在图形渲染的方面中,一些图形应用可以一次或多次地渲染到单个目标(即,渲染目标)。例如,在图形渲染中,系统存储器上的帧缓冲器可以被更新多次。帧缓冲器可以是存储器或随机存取存储器(RAM)的部分(例如,包含位图或存储),以帮助存储用于GPU的显示数据。帧缓冲器也可以是包含数据的完整帧的存储器缓冲器。另外,帧缓冲器可以是逻辑缓冲器。在一些方面中,更新帧缓冲器可以在仓或图块渲染中被执行,其中,如上文所讨论的,表面被划分成多个仓或图块,并且随后每个仓或图块可以被单独地渲染。此外,在图块渲染中,帧缓冲器可以被分割成多个仓或图块。
如本文所指示的,在仓或图块渲染架构中,例如当从不同类型的存储器进行渲染时,帧缓冲器可能具有被重复地存储或写入到其中的数据。这可以被称为求解和未求解(resolving and unresolving)帧缓冲器或系统存储器。例如,当存储或写入一个帧缓冲器并且随后切换到另一帧缓冲器时,帧缓冲器上的数据或信息可以被从GPU处的GPU内部存储器(GMEM)分解(resolve)到系统存储器,即双数据速率(DDR)RAM或动态RAM(DRAM)中的存储器。
在一些方面中,系统存储器还可以是片上系统(SoC)存储器或另一基于芯片的存储器,以存储例如设备或智能电话上的数据或信息。系统存储器还可以是由CPU和/或GPU共享的物理数据存储。在一些方面中,系统存储器可以是例如设备或智能电话上的DRAM芯片。相应地,SoC存储器可以是用于存储数据的基于芯片的方式。
在一些方面中,GMEM可以是GPU处的片上存储器,其可以由静态RAM(SRAM)来实现。另外,GMEM可以被存储在设备(例如,智能电话)上。如本文所指示的,数据或信息可以在例如设备处的系统存储器或DRAM与GMEM之间被传递。在一些方面中,系统存储器或DRAM可以在CPU或GPU处。另外,数据可以被存储在DDR或DRAM处。在仓或图块渲染中,存储器的一小部分可以被存储在GPU处,例如在GMEM处。在一些实例中,与在帧缓冲器或系统存储器处存储数据相比,在GMEM处存储数据可能利用更大的处理工作负载和/或功耗。
在一些方面中,GPU可以执行曲面细分(Tessellation)或曲面细分处理。在曲面细分处理中,较大的基元可以被划分成较小的子基元或曲面细分的基元。曲面细分可以将图像划分成更具细节的子基元或曲面细分的基元,这可以导致更具细节的渲染过程和更具细节的图形内容。曲面细分器可以确定或生成子基元或曲面细分的基元。在一些方面中,一个或多个基元可以被分组到补片(patch)中。曲面细分器随后可以根据一个或多个曲面细分参数,例如使用三角形或矩形来确定或生成补片的基于几何的曲面细分。
与基于基元的原始补片生成的图像或表面相比,曲面细分过程可以允许确定或生成更具细节或更平滑的图像或表面。另外,曲面细分可以被用于实现或渲染图像中更具细节的表面。如上所述,曲面细分过程可以产生子基元或曲面细分的基元。这些子基元或曲面细分的基元是作为来自例如基于一个或多个基元或补片的曲面细分的输出而被生成。这些基元也可以被称为原始基元或规则基元,其是基于原始图像或表面值而被生成的。所确定或生成的子基元或曲面细分的基元可以是原始基元或补片的更具细节版本。在一些实例中,子基元中的每一个可以小于基元或补片中的每一个。相应地,原始基元可以看起来是被划分成子基元或曲面细分的基元。
图4示出根据本公开的一种或多种技术的示例图像或表面400。图4示出图像400被划分成多个仓,例如,仓410、仓420、仓430和仓440。同样,图4显示了包括一个或多个基元462的补片460。在一些方面中,补片460可以被称为基元的组或者一个或多个基元。图4还显示多个子基元470,其包括子基元472、子基元474和子基元476。如图4所示,多个子基元470中的单独的子基元可以是多个不同的形状,诸如矩形(例如,子基元476),或三角形(例如,子基元472、474)。
图4显示了前述曲面细分过程的示例。例如,原始或输入基元(例如,补片460中的一个或多个基元462)被显示为以圆点作为顶点的较大三角形。从曲面细分处理输出的子基元或曲面细分的基元(例如,子基元470)被显示为表面400上的较小的矩形或三角形(例如,子基元472、474、476)。
对于流式传输渲染办法,诸如客户端-服务器渲染,图形处理系统可确定在小的相机移动下可以变得可见的三角形或基元的潜在可见集(PVS)。此信息可以被发送至客户端设备,使得客户端可以具有可用于渲染的所有几何。在一些方面中,客户端可以使用那些三角形或基元来渲染针对经更新的头部定位的新视图。PVS的标识可以是高效的并且可能需要尽可能少的附加信息,诸如以避免任何复杂的数据结构和排序对象。
为了确定在不久的将来哪些对象可能是可见的,一些方法可以修剪掉当前可见的对象的边界以便确定在这些对象之后哪些对象可能是可见的(即,经由修剪区域)。此未来的可见性可以基于相机或场景与对象的轻微移动。在一些方面中,可见性计算可以诸如经由修剪区域PVS来对整个场景几何进行排序。例如,可以在修剪区域PVS中在逐层的基础上执行预排序。可以在对象上、在桶中或者依照每片段链表来实现此类排序。可能需要多个通道来处理对象并对这些对象执行排序。基于此,排序过程可能成为图形系统的瓶颈。结果,沿视线堆叠的遮挡的数量可能受到限制,或者可能需要更多的通道。
在一些实例中,修剪区域(即,对象空间中的其中实施去遮挡的区)可以被存储为在前平面和后平面之间具有固定距离的图像空间挤压。因此,可以使用前平面和后平面来将修剪区域存储为表面信息。相应地,当前需要利用高效的办法来确定可见性计算或PVS,诸如不需要对针对整个场景的几何进行排序。
本公开的方面可以利用高效的办法来确定可见性计算或PVS。例如,为了计算可见性计算,本公开的方面可以不需要对针对整个场景的几何进行排序。本文中的一些办法(例如,可见性体积办法)可以直接使用在眼睛空间中定义的透视3D网格,而不是对修剪区域的列表进行排序。这可以提供整个场景或延伸的视锥体的体积或几何表示。例如,可以利用多个体积缓冲器(例如,三个3D体积缓冲器)来捕捉体积。缓冲器中的每个条目可以利用单个比特,这可以使该办法是存储器高效的。
在一些方面中,标识潜在可见集(PVS)可以在三个通道中完成,并且与场景中的对象或遮挡的数量无关。例如,两个通道可以利用常规的光栅化,一个通道在屏幕空间中的体积缓冲器进行迭代,诸如延迟的渲染通道或计算着色器通道,其中一个通道可以是通过体积缓冲器的高效的、硬件支持的传播。同样,体积缓冲器可以使得办法是次序无关的,使得对象被提交到渲染处理器的次序是无关紧要的。不像可能依赖于前后排序的其他方法,本公开的方法中的对象可以按任意次序被提交给图形处理器。此类办法的输出可以是针对相机或场景移动的集合的潜在可见三角形的集合。
如先前所提及的,其它方法可以将大小相等的修剪区域放置在对象空间中的任意位置处,使得所有修剪区域在视图或对象空间中可以具有与它们到相机的距离无关的相同深度。然而,修剪区域的深度(即,沿背离视点的射线的长度)可以取决于距相机的距离。由于透视前缩(perspective foreshortening),较远的对象可以用较粗糙的几何来表示,并且因此它们的特征可以覆盖较大的深度间隔。而且,深度分辨率可以随着距离而减小,因此对象特征可以进一步分离以便被辨别。本公开的方面可以用透视3D体积网格代替这些修剪区域。
另外,本公开的可见性体积办法可以调整以适应与场景中的相机的距离。单元格的深度可以随着到相机或视点的距离z而非线性地增加,例如,将1/z用作z和/或log z中的修剪大小。此深度调整可以标识单独的单元格在缓冲器的每一个中可以具有的深度。本文的可见性体积办法还可以在图像域(x-y)和深度域(z)中对空间进行量化。由于非线性的z间距,z方向上的网格单元格的数量可以被合理地限制,例如,64、128或256个单元格。这可以不同于前述的修剪区域,其可以被自由地放置在对象空间中并且因此需要复杂的相交测试(intersection test)。
在一些实例中,使用3D量化,可见性单元格可能在更接近相机或视点的网格的前方是小的和细粒度(fine-grained)的,即,其中大量的细节被呈现,因此可能需要较多的信息比特;而在更远离相机或视点的网格的后方是粗糙的和宽大的,即,其中几何细节自然地减少,因此需要较少的比特。通过这样做,本公开可以不利用深度维度中的很多信息。同样,因为对于缓冲器中的每个单元格,可以利用单个比特,所以所利用的比特的量可以被减少。
图5A和5B分别示出根据本公开的一种或多种技术的包括观看区域的示例图500和510。如图5A中所示,图500包括视点或相机502和观看区域504。图5A示出了用于遮挡和可见性计算的前述修剪区域办法。如图5B中所示,图510包括视点或相机512和观看区域514。图5B示出了用于次序无关的遮挡和可见性计算的本公开的比特可见性体积办法。
如图5B所示,更接近相机512时单元格可以具有减小的深度,而在更远离相机512时可以具有增加的深度。这是因为更接近相机512的对象更具细节。更远离相机512的对象可以包括更大的修剪区域。本公开可以标识剪影以确定几何可以被修剪的位置。为了标记修剪,本公开可以使用体积缓冲器,并在缓冲器的一个中指示潜在修剪体积。因此本公开的方面可以在缓冲器中标识修剪区域,其可以标识在该对象之后哪些对象可能是潜在可见的。同样,图5B可以由缓冲器中的多个比特(例如,6比特)来表示。
由于量化,本公开的方面可以利用具有单独比特的密集(dense)可见性表示。如本文所指示的,本公开可以使用三个缓冲器:表面缓冲器(S或s_缓冲器),去遮挡缓冲器(D或d_缓冲器)和可见性缓冲器(V或v_缓冲器)。这些缓冲器中的每一个可以利用缓冲器中的每单元格的一比特。如此,在d_缓冲器中每单元格可以有一比特来指示去遮挡,在s_缓冲器中每单元格可以有一比特来指示表面,并且在v_缓冲器中每单元格可以有一比特来指示可见性。因此,本公开可以利用多个比特(例如,64比特或128比特)来表示三个缓冲器中的每一个。
表面缓冲器、去遮挡缓冲器和可见性缓冲器中的每一个还可以对应于透视空间中的体积网格。这些体积网格可以用有限的比特来编码,例如,网格中的每单元格1比特。在一些方面中,可见性在x-y空间中可以是细粒度的,而在z空间中可以是较粗粒度的。因此,本公开可以在z空间中使用紧凑多比特表示而在x-y空间中使用全屏空间分辨率,以及使用全屏宽度和高度的分数。例如,本公开可以使用三个屏幕大小的缓冲器,每个具有128比特,即,四个无符号32比特整数。因此,对于每个像素,本公开可以存储128比特值。如此,完整的体积表示可以对应于缓冲器中的针对每个视图射线的128比特。
图6A-6C分别示出根据本公开的一种或多种技术的包括观看区域和体积网格的示例图600、610和620。如图6A所示,图600包括视点或相机602、观看区域604和体积网格606。如图6B所示,图610包括视点或相机612、观看区域614和体积网格616。如图6C所示,图620包括视点或相机622、观看区域624和体积网格626。体积网格606可以对应于表面缓冲器,体积网格616可以对应于去遮挡缓冲器,而体积网格626可以对应于可见性缓冲器。
本公开的方面可以利用可见性算法,该可见性算法可以包括前述的缓冲器和多个通道。如图6A-6C所示,本公开可以清除s_缓冲器和d_缓冲器,并将每个单元格的比特值设置为零,以及将v_缓冲器中的每个单元格的比特值设置为1。相应地,图600和610分别包括表面缓冲器和去遮挡缓冲器中的针对每个单元格的为零的比特值。同样,图620包括可见性缓冲器中的针对每个单元格的为一的比特值。
在可见性算法的第一通道中,本公开可以执行剪影标识。本公开可以一次计算整个场景几何,忽略次序,并且检测剪影或剪影边缘。可以在用于去遮挡的片段处理中通过向d_缓冲器写入来标记邻近于剪影的面向前方的三角形。剪影可以是其中检测到剪影边缘的点,其可以对应于面向前方的三角形与面向后方的三角形相交的点。这些可以是本公开可能寻求的以修剪对象边缘的点,因为此对象之后的对象在将来可能是可见的。
所生成的表面片段可以被写入到表面体积或s_缓冲器中。表面片段可以是当像素的样本指向相机时生成的正常片段,这可能意味着对象正在被渲染。因此,这些是由于典型的渲染而生成的片段。来自所标记的三角形的片段可以被写入d_缓冲器。写入可以意指使用逐比特操作、混合操作或逻辑原子操作来设置缓冲器中的比特。
图7A-7C分别示出根据本公开的一种或多种技术的包括观看区域和体积网格的示例图700、710和720。如图7A所示,图700包括视点或相机702、观看区域704和体积网格706。如图7B所示,图710包括视点或相机712、观看区域714和体积网格716。如图7C所示,图720包括视点或相机722、观看区域724和体积网格726。体积网格706可以对应于表面缓冲器,体积网格716可以对应于去遮挡缓冲器,而体积网格726可以对应于可见性缓冲器。
图7A显示了可以基于场景中的基元或对象来标识的多个表面片段708。这些表面片段708可以对应于体积网格706中的位置。如上所述,表面片段708可以对应于表面缓冲器。同样,图7B显示了可以基于场景中的基元或对象来标识的多个剪影边缘718。这些剪影边缘718可以对应于体积网格716中的位置。如上所述,剪影边缘718可以对应于去遮挡缓冲器。
图8A-8C分别示出根据本公开的一种或多种技术的包括观看区域和体积网格的示例图800、810和820。如图8A所示,图800包括视点或相机802、观看区域804和体积网格806。如图8B所示,图810包括视点或相机812、观看区域814和体积网格816。如图8C所示,图820包括视点或相机822、观看区域824和体积网格826。体积网格806可以对应于表面缓冲器,体积网格816可以对应于去遮挡缓冲器,而体积网格826可以对应于可见性缓冲器。
图8A显示了可以基于图7A中的场景中的基元或对象来标识的多个表面片段808。表面片段808对应于体积网格806或s_缓冲器中的单元格。同样,图8B显示了可以基于图7B中的场景中的基元或对象来标识的多个剪影边缘818。剪影边缘818对应于体积网格816或d_缓冲器中的单元格。图8A-8C示出了可以在对应缓冲器(例如,s_缓冲器、d_缓冲器和v_缓冲器)中生成的条目,其是基于实际对象的。如图8C所示,v_缓冲器在此时可能尚未被标记。
在第二通道中,本公开的方面可以执行可见性传播或可见性构造通道。此通道可以在三个缓冲器(例如,s_缓冲器、d_缓冲器和v_缓冲器)之间传播可见性信息。因此,可见性构造通道可以是例如经由屏幕大小的网格或计算着色器而针对每个x-y条目使用一个线程的情况。本公开可以就距相机的深度而言从前往后移动,并且随后向v_缓冲器写入或传播来自s_缓冲器和d_缓冲器的结果。
缓冲器中的每个单元格或线程可以包括可见状态和消耗状态,例如,可见=1而消耗=0。当条目在s_缓冲器或d_缓冲器中被命中(hit)时,消耗值可以改变为1。如果针对单元格的可见值为0,使得对应于单元格的基元或对象的部分不可见,则本公开可以将从此点开始远离相机或视点的可见性单元格设置为1并且将去遮挡单元格设置为0。
在一些方面中,如果可见值为1,使得对应于单元格的基元或对象的部分是可见的,则本公开可以基于多种情况来辨别单元格值。例如,如果s_缓冲器中的表面单元格被设置(S=1)并且d_缓冲器中的去遮挡单元格未被设置(例如D=0),则这可以意味着检测到遮挡物(occluder)。在这种情况下,对于远离相机或视点的剩余单元格,本公开可以将可见值设置为0。因此,如果存在未被修剪的表面,则该表面不能被看透,因此该表面后面的一切将被标记为不可见。
另外,如果d_缓冲器中的去遮挡单元格被设置(D=1),s_缓冲器中的表面单元格被设置(S=1),并且用于视图射线、线程或像素的消耗单元格未被设置(消耗=0),则去遮挡可能是有效的。在这种情况下,本公开可以设置消耗=1,并且维持D=1的单元格值。这可以是其中可能存在修剪的体积单元格。当消耗标志被设置为0时,这可以意味着算法正在沿着视图射线首次解决去遮挡。
同样,如果d_缓冲器中的去遮挡单元格被设置(D=1),s_缓冲器中的表面单元格被设置(S=1),并且用于视图射线、线程或像素的消耗单元格被设置(消耗=1),则本公开可以将去遮挡单元格值设置为D=0,并且将下一单元格标记为可见=0。因此,一旦消耗标志被设置,则本公开可以将远离相机或视点的下一单元格设置为0。此操作可以实现被遮挡物收缩(occludee shrinking)。而且,如果对于单元格将可见值设置为0,则对于远离相机或视点的剩余单元格,本公开可以将v_缓冲器中的可见性单元格设置为0,并将d_缓冲器中的去遮挡单元格设置为0。
图9A-9C分别示出根据本公开的一种或多种技术的包括观看区域和体积网格的示例图900、910和920。如图9A所示,图900包括视点或相机902、观看区域904和体积网格906。如图9B所示,图910包括视点或相机912、观看区域914和体积网格916。如图9C所示,图920包括视点或相机922、观看区域924和体积网格926。体积网格906可以对应于表面缓冲器,体积网格916可以对应于去遮挡缓冲器,而体积网格926可以对应于可见性缓冲器。
图9A-9C显示了在前述可见性算法的第二通道之后的针对表面缓冲器的体积网格906、针对去遮挡缓冲器的体积网格916以及针对可见性缓冲器的体积网格926。如图9A-9C所示,体积网格906、916和926中的每一行分别是远离视点902、912和922的可见性的线。如果单元格后面的每个单元格都不可见,则本公开可以针对该行的其余部分而将v_缓冲器中的可见性单元格设置为0,并跳过s_缓冲器和d_缓冲器。如图9C中的体积网格926中所示,v_缓冲器中的灰色单元格中的每一个可以被标记为可见,并且v_缓冲器中的白色单元格中的每一个可以被标记为不可见。
在第三通道或最终的可见性通道中,可以第二次计算几何信息。在一些方面中,如果d_缓冲器或v_缓冲器单元格是针对光栅化片段设置的,则对应的三角形可以是可见的。同样,如果v_缓冲器中的单元格被设置为可见,则基元的对应部分可以被标识为可见并被添加到PVS或PVS信息。
图10A-10C分别示出根据本公开的一种或多种技术的包括观看区域和体积网格的示例图1000、1010和1020。如图10A所示,图1000包括视点或相机1002、观看区域1004和体积网格1006。如图10B所示,图1010包括视点或相机1012、观看区域1014和体积网格1016。如图10C所示,图1020包括视点或相机1022、观看区域1024和体积网格1026。体积网格1006可以对应于表面缓冲器,体积网格1016可以对应于去遮挡缓冲器,而体积网格1026可以对应于可见性缓冲器。
图10C显示了可以基于图9C中的可见性信息来标识的多个可见顶点或可见片段1028以及不可见顶点1030。可见顶点1028和不可见顶点1030两者都可以对应于体积网格1026或v_缓冲器中的单元格。在图10C中,可见顶点1028是黑色的,而不可见顶点1030是白色的。如图10C所示,对应于最接近视点1022的对象或基元的可见顶点1028可以被标识为可见并被添加到PVS。对应于最远离视点1022的对象或基元的不可见顶点1030(其在最接近视点1022的对象之后)可以被标识为不可见,并且可能不被添加到PVS。如图10A-10C所示,一旦完成来自缓冲器的信息的传播,则v_缓冲器可以被查询,而s_缓冲器和d_缓冲器可以不再被查询。
在一些方面中,消耗标志可以被用于揭示(reveal)单个去遮挡。如上所述,消耗标志可以对应于多个对象或基元的边缘或剪影。因此,如果对象边缘在另一对象边缘之后,则其后的任何东西都不可能是可见的。这可以与被遮挡物收缩的处理相关联。
本公开的方面还可以包括可见性深度间隔。在这些实例中,去遮挡可能紧接着z中的下一量化步长之后或之前,并且因此不能沿z适当地传播其信息。在片段太接近量化步长的情况下,本公开的方面可以设置多个单元格比特(当前的和之后的两者)以包括它们。因此,这可以是将附近单元格标识为去遮挡或可见的调整,例如,如果单元格接近另一可见单元格,则将该单元格比特值设置为1。
在一些方面中,使用整个三角形来向d_缓冲器写入可能是浪费的,因为可能需要围绕剪影来写入。相反,本公开可以计算屏幕空间中的非剪影顶点到剪影的距离,并且将其他顶点的距离设置为0。光栅化器的属性插值可以提供针对每个片段的距离。因此,距离小于或等于特定距离的片段可以向d_缓冲器写入。一些方法中的去遮挡可能依赖于x-y中的量化和三角形大小。作为改进,本公开可以选取x-y量化(即,缓冲器分辨率或图像分辨率),以对应于所支持的相机移动。在一些方面中,所生成的三角形可能太小而无法在第一通道中被取样,并且从d_缓冲器丢失。本公开的方面可以包括针对此类行为的实现的多个替代方案。例如,本公开可以在基元处理期间向多个缓冲器位置写入,或者使用传统光栅化来生成针对小三角形的片段并在片段处理期间写入多个x-y样本。同样,本公开可以围绕捕捉所支持的相机移动的剪影来生成几何并且向d_缓冲器中写入。
本公开的方面可以将s_缓冲器重用为v_缓冲器,并且因此可以利用两个缓冲器而非三个缓冲器。另外,本文中的算法可以在第二通道中使用高效的比特操作并且可以不利用循环。本公开可以利用发现第一集(ffs)比特操作来发现d_缓冲器和s_缓冲器的第一组合,即:ffs(D&S),其中“&”是逐比特的“与(and)”。同样,本公开可以清除第一个发现的比特并执行相同的操作以考虑到消耗标志。本公开可以继续进行ffs(S&!D)。使用比特移位,本公开可以生成比特掩码以自始至终地设置v_缓冲器和d_缓冲器,例如,每32或64比特字一次逐比特操作。本公开可以使用v_缓冲器来用于最终通道中的早期z测试,即,将深度缓冲器值设置为不可见的第一单元格。
任何基于表面的可见性办法都可能具有微小三角形(tiny triangle)(即,可能不生成任何像素的、落在像素之间的三角形)的问题。这可能导致这些三角形从PVS丢失。利用本文的可见性体积办法,本公开可以在最终渲染通道的几何着色器或网状着色器中验证三角形的投影面积是否小于像素。如果是,则本公开可以在三角形顶点或三角形中心处直接查询v_缓冲器。如果v_缓冲器被设置,则三角形可以被添加到PVS,即,将三角形标识为可见。
图11示出根据本公开的一种或多种技术的示例图1100。更具体地,图1100包括用于本文描述的次序无关的遮挡计算的多个组件。如图11所示,图1100包括GPU 1110、顶点着色器1120、片段着色器1130和计算着色器1140。如本文所描述的,GPU 1110、顶点着色器1120、片段着色器1130和计算着色器1140可以执行多个不同的步骤或过程以在次序无关的遮挡计算中确定可见基元。
图6A-11示出了用于次序无关的遮挡计算的前述过程的示例。如图6A-11中所示,诸如本文中的GPU、顶点着色器、片段着色器和计算着色器(例如,GPU 1110、顶点着色器1120、片段着色器1130和计算着色器1140)之类的本公开的方面可以执行多个不同的步骤或过程以在次序无关的遮挡计算中确定可见基元。例如,本文中的GPU可以基于与场景中的视点(例如,视点602、612、622)相对应的观看区域(例如,观看区域604、614、624)来生成体积网格(例如,体积网格606、616、626)。在一些方面中,体积网格可以与对应于表面信息的表面缓冲器相关联(例如,体积网格606),与对应于去遮挡信息的去遮挡缓冲器相关联(例如,体积网格616),以及与对应于可见性信息的可见性缓冲器相关联(例如,体积网格626)。
本文中的GPU还可以生成包括多个表面单元格(例如,体积网格606中的单元格)的表面缓冲器,包括多个去遮挡单元格(例如,体积网格616中的单元格)的去遮挡缓冲器,以及包括多个可见性单元格(例如,体积网格626中的单元格)的可见性缓冲器。本文中的GPU还可以确定针对与场景中的视点(例如,视点702、712、722)相关联的多个基元中的每个基元的几何信息。
而且,本文中的GPU可以基于几何信息来标识针对多个基元中的每个基元的一个或多个表面片段(例如,表面片段708)和一个或多个剪影边缘(例如,剪影边缘718)中的至少一者。在一些方面,一个或多个表面片段可以对应于表面信息,例如体积网格806中的单元格,而一个或多个剪影边缘可以对应于去遮挡信息,例如体积网格816中的单元格。本文中的GPU还可以将针对多个基元中的每个基元的几何信息转换为表面信息和去遮挡信息中的至少一者。在一些实例中,可以基于域变换来转换几何信息,其中体积网格可以对应于基于与视点相对应的观看区域的透视空间。
本文中的GPU还可以基于针对多个基元中的每个基元的几何信息来计算表面信息和去遮挡信息中的至少一者,其中表面信息和去遮挡信息可以与基于与视点(例如,视点802和812)相对应的观看区域(例如,观看区域804和814)的体积网格(例如,体积网格806和816)相关联。同样,本文中的GPU可以基于表面信息和去遮挡信息中的至少一者来计算针对多个基元中的每个基元的可见性信息,其中可见性信息可以与体积网格(例如,体积网格826)相关联。
本文中的GPU还可以将表面信息存储在例如对应于体积网格906的表面缓冲器中,将去遮挡信息存储在例如对应于体积网格916的去遮挡缓冲器中,将可见性信息存储在例如对应于体积网格926的可见性缓冲器中。在一些方面中,针对多个表面单元格中的每个表面单元格的比特值可以被设置为零(0),针对多个去遮挡单元格中的每个去遮挡单元格的比特值可以被设置为零(0),并且针对多个可见性单元格中的每个可见性单元格的比特值可以被设置为一(1)。同样,针对多个表面单元格中的每个表面单元格的比特值在该表面单元格不包括表面信息时可以为零(0),并且针对多个去遮挡单元格中的每个去遮挡单元格的比特值在该去遮挡单元格不包括去遮挡信息时可以为零(0)。
在一些方面中,当可见性单元格被标记为可见时,针对每个可见性单元格的比特值可以是一(1),而当可见性单元格被标记为不可见时,针对每个可见性单元格的比特值可以是零(0)。另外,在针对至少一个对应的表面单元格的比特值是零(0)时,针对每个可见性单元格的比特值可以是一(1),这至少一个对应的表面单元格比该可见性单元格更接近视点并且与该可见性单元格在体积网格的相同行中。在一些实例中,在针对至少一个对应的表面单元格的比特值是一(1)时,针对每个可见性单元格的比特值可以是零(0),这至少一个对应的表面单元格比该可见性单元格更接近视点并且与该可见性单元格在体积网格的相同行中。同样,在针对对应的去遮挡单元格的比特值是一(1)时,针对每个可见性单元格的比特值可以是一(1)。
本文中的GPU还可以基于针对多个基元中的每个基元的可见性信息来确定多个基元中的每个基元是否可见。另外,本文中的GPU可以存储针对被确定为可见的多个基元中的每个基元的可见性信息(例如,对应于体积网格1026),其中该可见性信息可以被存储为潜在可见集(PVS)信息。本文中的GPU还可以渲染包括被确定为可见的多个基元中的每个基元的至少一个图像。
在一些方面中,观看区域(例如,观看区域1004)可以由来自视点(例如,视点1002)的第一观看射线和第二观看射线来定义,其中,第一观看射线和第二观看射线各自对应于体积网格(例如,体积网格1006)的边缘。而且,多个基元中的每个基元可以由顶点着色器(例如,顶点着色器1120)或片段着色器(例如,片段着色器1130)确定为可见。同样,针对多个基元中的每个基元的可见性信息可以由计算着色器(例如,计算着色器1140)来计算。
图12示出根据本公开的一种或多种技术的示例方法的流程图1200。该方法可以由装置(诸如GPU、CPU、顶点着色器、片段着色器、计算着色器或用于图形处理的装置)执行。在1202处,如结合图5A-11中的示例所描述的,装置可以基于与场景中的视点相对应的观看区域来生成体积网格。在一些方面中,如结合图5A-11中的示例所描述的,体积网格可以与对应于表面信息的表面缓冲器、对应于去遮挡信息的去遮挡缓冲器,以及对应于可见性信息的可见性缓冲器相关联。
在1204处,如结合图5A-11中的示例所描述的,装置还可以生成包括多个表面单元格的表面缓冲器、包括多个去遮挡单元格的去遮挡缓冲器,以及包括多个可见性单元格的可见性缓冲器。在1206处,如结合图5A-11中的示例所描述的,装置可以确定针对与场景中的视点相关联的多个基元中的每个基元的几何信息。
在1208处,如结合图5A-11中的示例所描述的,装置可以基于几何信息来标识针对多个基元中的每个基元的一个或多个表面片段和一个或多个剪影边缘中的至少一者。在一些方面中,如结合图5A-11中的示例所描述的,一个或多个表面片段可以对应于表面信息,而一个或多个剪影边缘可以对应于去遮挡信息。
在1210处,如结合图5A-11中的示例所描述的,装置可以将针对多个基元中的每个基元的几何信息转换为表面信息和去遮挡信息中的至少一者。在一些实例中,如结合图5A-11中的示例所描述的,可以基于域变换来转换几何信息,其中体积网格可以对应于基于与视点相对应的观看区域的透视空间。
在1212处,如结合图5A-11中的示例所描述的,装置还可以基于针对多个基元中的每个基元的几何信息来计算表面信息和去遮挡信息中的至少一者,其中表面信息和去遮挡信息可以与基于与视点相对应的观看区域的体积网格相关联。在1214处,如结合图5A-11中的示例所描述的,装置可以基于表面信息和去遮挡信息中的至少一者来计算针对多个基元中的每个基元的可见性信息,其中可见性信息可以与体积网格相关联。
在1216处,如结合图5A-11中的示例所描述的,装置可以将表面信息存储在表面缓冲器中,将去遮挡信息存储在去遮挡缓冲器中,并且将可见性信息存储在可见性缓冲器中。在一些方面中,如结合图5A-11中的示例所描述的,针对多个表面单元格中的每个表面单元格的比特值可以被设置为零(0),针对多个去遮挡单元格中的每个去遮挡单元格的比特值可以被设置为零(0),并且针对多个可见性单元格中的每个可见性单元格的比特值可以被设置为一(1)。同样,如结合图5A-11中的示例所描述的,针对多个表面单元格中的每个表面单元格的比特值在该表面单元格不包括表面信息时可以为零(0),并且针对多个去遮挡单元格中的每个去遮挡单元格的比特值在该去遮挡单元格不包括去遮挡信息时可以为零(0)。
在一些方面中,如结合图5A-11中的示例所描述的,当可见性单元格被标记为可见时,针对每个可见性单元格的比特值可以是一(1),而当可见性单元格被标记为不可见时,针对每个可见性单元格的比特值可以是零(0)。另外,如结合图5A-11中的示例所描述的,在针对至少一个对应的表面单元格的比特值是零(0)时,针对每个可见性单元格的比特值可以是一(1),这至少一个对应的表面单元格比该可见性单元格更接近视点并且与该可见性单元格在体积网格的相同行中。在一些实例中,如结合图5A-11中的示例所描述的,在针对至少一个对应的表面单元格的比特值是一(1)时,针对每个可见性单元格的比特值可以是零(0),这至少一个对应的表面单元格比该可见性单元格更接近视点并且与该可见性单元格在体积网格的相同行中。同样,如结合图5A-11中的示例所描述的,在针对对应的去遮挡单元格的比特值是一(1)时,针对每个可见性单元格的比特值可以是一(1)。
在1218处,如结合图5A-11中的示例所描述的,装置可以基于针对多个基元中的每个基元的可见性信息来确定多个基元中的每个基元是否可见。在1220处,如结合图5A-11中的示例所描述的,装置可以存储针对被确定为可见的多个基元中的每个基元的可见性信息,其中该可见性信息可以被存储为潜在可见集(PVS)信息。在1222处,如结合图5A-11中的示例所描述的,装置可以渲染包括被确定为可见的多个基元中的每个基元的至少一个图像。
在一些方面中,如结合图5A-11中的示例所描述的,观看区域可以由来自视点的第一观看射线和第二观看射线定义,其中第一观看射线和第二观看射线各自对应于体积网格的边缘。而且,如结合图5A-11中的示例所描述的,多个基元中的每个基元可以由顶点着色器或片段着色器确定为可见。同样,如结合图5A-11中的示例所描述的,针对多个基元中的每个基元的可见性信息可以由计算着色器来计算。
在一个配置中,提供了用于图形处理的方法或装置。装置可以是CPU、GPU或者可以执行图形处理的一些其它处理器。在一个方面中,装置可以是设备104内的处理单元120,或者可以是设备104内的一些其它硬件或另一设备。装置可以包括用于确定针对与场景中的视点相关联的多个基元中的每个基元的几何信息的部件。装置还可以包括用于基于针对多个基元中的每个基元的几何信息来计算表面信息和去遮挡信息中的至少一者的部件,其中表面信息和去遮挡信息与基于与视点相对应的观看区域的体积网格相关联。装置还可以包括用于基于表面信息和去遮挡信息中的至少一者来计算针对多个基元中的每个基元的可见性信息的部件,其中可见性信息可以与体积网格相关联。装置还可以包括用于基于针对多个基元中的每个基元的可见性信息来确定多个基元中的每个基元是否可见的部件。装置还可以包括用于基于几何信息来标识针对多个基元中的每个基元的一个或多个表面片段和一个或多个剪影边缘中的至少一者的部件。装置还可以包括用于将针对多个基元中的每个基元的几何信息转换为表面信息和去遮挡信息中的至少一者的部件。装置还可以包括用于基于与视点相对应的观看区域来生成体积网格的部件,其中,体积网格与对应于表面信息的表面缓冲器、对应于去遮挡信息的去遮挡缓冲器,以及对应于可见性信息的可见性缓冲器相关联。装置还可以包括用于生成包括多个表面单元格的表面缓冲器、包括多个去遮挡单元格的去遮挡缓冲器,以及包括多个可见性单元格的可见性缓冲器的部件。装置还可以包括用于将表面信息存储在表面缓冲器中,将去遮挡信息存储在去遮挡缓冲器中,并且将可见性信息存储在可见性缓冲器中的部件。装置还可以包括用于存储针对被确定为可见的多个基元中的每个基元的可见性信息的部件,其中该可见性信息可以被存储为潜在可见集(PVS)信息。装置还可以包括用于渲染包括被确定为可见的多个基元中的每个基元的至少一个图像的部件。
可以实施本文描述的主题以实现一个或多个益处或优点。例如,所描述的图形处理技术可以由GPU、CPU或者可以执行图形处理的一些其它处理器使用,以实现本文所描述的次序无关的遮挡计算。与其它图形处理技术相比,这还可以以低成本实现。此外,本文中的图形处理技术可以改进或加速数据处理或执行。进一步地,本文中的图形处理技术可以提升资源或数据利用和/或资源效率。另外,当在次序无关的遮挡计算中确定可见基元时,本公开的方面可以减少数据量或存储器带宽。
根据本公开,在上下文不另外指示的情况下,术语“或”可以被解释为“和/或”。另外,尽管诸如“一个或多个”或“至少一个”之类的短语可能已用于本文公开的一些特征而不是其它特征,但在上下文不另外指示的情况下,未使用此类语言的特征可以被解释为具有隐含的此类含义。
在一个或多个示例中,本文所描述的功能可以以硬件、软件、固件或其任何组合来实现。例如,尽管贯穿本公开使用了术语“处理单元”,但是此类处理单元可以以硬件、软件、固件或其任意组合来实现。如果本文所描述的任何功能、处理单元、技术或其它模块以软件来实现,则本文所描述的功能、处理单元、技术或其它模块可以作为计算机可读介质上的一个或多个指令或代码而被存储或发送。计算机可读介质可以包括计算机数据存储介质或通信介质,其包括便于计算机程序从一个地方到另一个地方的传递的任何介质。以此方式,计算机可读介质通常可以对应于(1)非暂态的有形计算机可读存储介质或(2)诸如信号或载波之类的通信介质。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中所描述的技术的指令、代码和/或数据结构的任何可用介质。作为示例而非限制,此类计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备。如本文所使用的,盘(disk)和碟(disc)包括紧凑碟(CD)、激光碟、光碟、数字多功能碟(DVD)、软盘和蓝光碟,其中盘通常磁性地再现数据,而碟利用激光光学地再现数据。上述项的组合也应被包括在计算机可读介质的范围内。计算机程序产品可以包括计算机可读介质。
代码可以由诸如以下各项的一个或多个处理器执行:一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、算术逻辑单元(ALU)、现场可编程门阵列(FPGA)或其它等效的集成或离散逻辑电路。相应地,如本文中所使用的术语“处理器”可以指前述结构中的任一个或适于实现本文中所描述的技术的任何其它结构。同样,该技术可以以一个或多个电路或逻辑元件来完全实现。
本公开的技术可以被实现于各种设备或装置中,包括无线手持设备、集成电路(IC)或IC集(例如,芯片集)。各种组件、模块或单元在本公开中被描述,以强调被配置为执行所公开技术的设备的功能方面,但这不一定需要由不同硬件单元实现。确切地说,如上所述,各种单元可以被组合在任何硬件单元中或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合适当的软件和/或固件来提供。
各种示例已被描述。这些示例和其他示例处于所附权利要求的范围之内。
Claims (40)
1.一种图形处理的方法,包括:
确定针对与场景中的视点相关联的多个基元中的每个基元的几何信息;
基于针对所述多个基元中的每个基元的所述几何信息来计算表面信息和去遮挡信息中的至少一者,其中所述表面信息和所述去遮挡信息与基于与所述视点相对应的观看区域的体积网格相关联;
基于所述表面信息和所述去遮挡信息中的至少一者来计算针对所述多个基元中的每个基元的可见性信息,其中所述可见性信息与所述体积网格相关联;以及
基于针对所述多个基元中的每个基元的所述可见性信息来确定所述多个基元中的每个基元是否可见。
2.如权利要求1所述的方法,还包括:
基于所述几何信息来标识针对所述多个基元中的每个基元的一个或多个表面片段和一个或多个剪影边缘中的至少一者。
3.如权利要求2所述的方法,其中所述一个或多个表面片段对应于所述表面信息,而所述一个或多个剪影边缘对应于所述去遮挡信息。
4.如权利要求1所述的方法,还包括:
将针对所述多个基元中的每个基元的所述几何信息转换为所述表面信息和所述去遮挡信息中的至少一者。
5.如权利要求4所述的方法,其中所述几何信息是基于域变换而被转换的,其中所述体积网格对应于基于与所述视点相对应的所述观看区域的透视空间。
6.如权利要求1所述的方法,还包括:
基于与所述视点相对应的所述观看区域来生成所述体积网格,其中所述体积网格与对应于所述表面信息的表面缓冲器、对应于所述去遮挡信息的去遮挡缓冲器,以及对应于所述可见性信息的可见性缓冲器相关联。
7.如权利要求6所述的方法,还包括:
生成包括多个表面单元格的所述表面缓冲器、包括多个去遮挡单元格的所述去遮挡缓冲器,以及包括多个可见性单元格的所述可见性缓冲器。
8.如权利要求7所述的方法,其中针对所述多个表面单元格中的每个表面单元格的比特值被设置为零(0),针对所述多个去遮挡单元格中的每个去遮挡单元格的比特值被设置为零(0),并且针对所述多个可见性单元格中的每个可见性单元格的比特值被设置为一(1)。
9.如权利要求7所述的方法,还包括:
将所述表面信息存储在所述表面缓冲器中,将所述去遮挡信息存储在所述去遮挡缓冲器中,并且将所述可见性信息存储在所述可见性缓冲器中。
10.如权利要求9所述的方法,其中在所述表面单元格不包括表面信息时,针对所述多个表面单元格中的每个表面单元格的比特值为零(0),并且在所述去遮挡单元格不包括去遮挡信息时,针对所述多个去遮挡单元格中的每个去遮挡单元格的比特值为零(0)。
11.如权利要求9所述的方法,其中在所述可见性单元格被标记为可见时,针对每个可见性单元格的比特值为一(1),在所述可见性单元格被标记为不可见时,并且针对每个可见性单元格的比特值为零(0)。
12.如权利要求9所述的方法,其中在针对至少一个对应的表面单元格的比特值为零(0)时,针对每个可见性单元格的比特值为一(1),所述至少一个对应的表面单元格比所述可见性单元格更接近所述视点,并且与所述可见性单元格在所述体积网格的相同行中。
13.如权利要求9所述的方法,其中在针对至少一个对应的表面单元格的比特值为一(1)时,针对每个可见性单元格的比特值为零(0),所述至少一个对应的表面单元格比所述可见性单元格更接近所述视点并且与所述可见性单元格在所述体积网格的相同行中。
14.如权利要求9所述的方法,其中在针对对应的去遮挡单元格的比特值为一(1)时,针对每个可见性单元格的比特值为一(1)。
15.如权利要求1所述的方法,还包括:
存储针对被确定为可见的多个基元中的每个基元的所述可见性信息,其中所述可见性信息被存储为潜在可见集(PVS)信息。
16.如权利要求15所述的方法,还包括:
渲染包括被确定为可见的多个基元中的每个基元的至少一个图像。
17.如权利要求1所述的方法,其中所述观看区域由来自所述视点的第一观看射线和第二观看射线定义,其中所述第一观看射线和所述第二观看射线各自对应于所述体积网格的边缘。
18.如权利要求1所述的方法,其中所述多个基元中的每个基元由顶点着色器或片段着色器确定为可见。
19.如权利要求1所述的方法,其中针对所述多个基元中的每个基元的所述可见性信息由计算着色器计算。
20.一种用于图形处理的装置,包括:
存储器;以及
至少一个处理器,所述至少一个处理器耦合到所述存储器并且被配置为:
确定针对与场景中的视点相关联的多个基元中的每个基元的几何信息;
基于针对所述多个基元中的每个基元的所述几何信息来计算表面信息和去遮挡信息中的至少一者,其中所述表面信息和所述去遮挡信息与基于与所述视点相对应的观看区域的体积网格相关联;
基于所述表面信息和所述去遮挡信息中的至少一者来计算针对所述多个基元中的每个基元的可见性信息,其中所述可见性信息与所述体积网格相关联;以及
基于针对所述多个基元中的每个基元的所述可见性信息来确定所述多个基元中的每个基元是否可见。
21.如权利要求20所述的装置,其中所述至少一个处理器还被配置为:
基于所述几何信息来标识针对所述多个基元中的每个基元的一个或多个表面片段和一个或多个剪影边缘中的至少一者。
22.如权利要求21所述的装置,其中所述一个或多个表面片段对应于所述表面信息,而所述一个或多个剪影边缘对应于所述去遮挡信息。
23.如权利要求20所述的装置,其中所述至少一个处理器还被配置为:
将针对所述多个基元中的每个基元的所述几何信息转换为所述表面信息和所述去遮挡信息中的至少一者。
24.如权利要求23所述的装置,其中所述几何信息是基于域变换而被转换的,其中所述体积网格对应于基于与所述视点相对应的所述观看区域的透视空间。
25.如权利要求20所述的装置,其中所述至少一个处理器还被配置为:
基于与所述视点相对应的所述观看区域来生成所述体积网格,其中所述体积网格与对应于所述表面信息的表面缓冲器、对应于所述去遮挡信息的去遮挡缓冲器,以及对应于所述可见性信息的可见性缓冲器相关联。
26.如权利要求25所述的装置,其中所述至少一个处理器还被配置为:
生成包括多个表面单元格的所述表面缓冲器、包括多个去遮挡单元格的所述去遮挡缓冲器,以及包括多个可见性单元格的所述可见性缓冲器。
27.如权利要求26所述的装置,其中针对所述多个表面单元格中的每个表面单元格的比特值被设置为零(0),针对所述多个去遮挡单元格中的每个去遮挡单元格的比特值被设置为零(0),并且针对所述多个可见性单元格中的每个可见性单元格的比特值被设置为一(1)。
28.如权利要求26所述的装置,其中所述至少一个处理器还被配置为:
将所述表面信息存储在所述表面缓冲器中,将所述去遮挡信息存储在所述去遮挡缓冲器中,并且将所述可见性信息存储在所述可见性缓冲器中。
29.如权利要求28所述的装置,其中在所述表面单元格不包括表面信息时,针对所述多个表面单元格中的每个表面单元格的比特值为零(0),并且在所述去遮挡单元格不包括去遮挡信息时,针对所述多个去遮挡单元格中的每个去遮挡单元格的比特值为零(0)。
30.如权利要求28所述的装置,其中在所述可见性单元格被标记为可见时,针对每个可见性单元格的比特值为一(1),并且在所述可见性单元格被标记为不可见时,针对每个可见性单元格的比特值为零(0)。
31.如权利要求28所述的装置,其中在针对至少一个对应的表面单元格的比特值为零(0)时,针对每个可见性单元格的比特值为一(1),所述至少一个对应的表面单元格比所述可见性单元格更接近所述视点,并且与所述可见性单元格在所述体积网格的相同行中。
32.如权利要求28所述的装置,其中在针对至少一个对应的表面单元格的比特值为一(1)时,针对每个可见性单元格的比特值为零(0),所述至少一个对应的表面单元格比所述可见性单元格更接近所述视点并且与所述可见性单元格在所述体积网格的相同行中。
33.如权利要求28所述的装置,其中在针对对应的去遮挡单元格的比特值为一(1)时,针对每个可见性单元格的比特值为一(1)。
34.如权利要求20所述的装置,其中所述至少一个处理器还被配置为:
存储针对被确定为可见的多个基元中的每个基元的所述可见性信息,其中所述可见性信息被存储为潜在可见集(PVS)信息。
35.如权利要求34所述的装置,其中所述至少一个处理器还被配置为:
渲染包括被确定为可见的多个基元中的每个基元的至少一个图像。
36.如权利要求20所述的装置,其中所述观看区域由来自所述视点的第一观看射线和第二观看射线定义,其中所述第一观看射线和所述第二观看射线各自对应于所述体积网格的边缘。
37.如权利要求20所述的装置,其中所述多个基元中的每个基元由顶点着色器或片段着色器确定为可见。
38.如权利要求20所述的装置,其中针对所述多个基元中的每个基元的所述可见性信息由计算着色器计算。
39.一种用于图形处理的装置,包括:
用于确定针对与场景中的视点相关联的多个基元中的每个基元的几何信息的部件;
用于基于针对所述多个基元中的每个基元的所述几何信息来计算表面信息和去遮挡信息中的至少一者的部件,其中所述表面信息和所述去遮挡信息与基于与所述视点相对应的观看区域的体积网格相关联;
用于基于所述表面信息和所述去遮挡信息中的至少一者来计算针对所述多个基元中的每个基元的可见性信息的部件,其中所述可见性信息与所述体积网格相关联;以及
用于基于针对所述多个基元中的每个基元的所述可见性信息来确定所述多个基元中的每个基元是否可见的部件。
40.一种存储用于图形处理的计算机可执行代码的计算机可读介质,所述代码在由处理器执行时使得所述处理器:
确定针对与场景中的视点相关联的多个基元中的每个基元的几何信息;
基于针对所述多个基元中的每个基元的所述几何信息来计算表面信息和去遮挡信息中的至少一者,其中所述表面信息和所述去遮挡信息与基于与所述视点相对应的观看区域的体积网格相关联;
基于所述表面信息和所述去遮挡信息中的至少一者来计算针对所述多个基元中的每个基元的可见性信息,其中所述可见性信息与所述体积网格相关联;以及
基于针对所述多个基元中的每个基元的所述可见性信息来确定所述多个基元中的每个基元是否可见。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/894,643 | 2020-06-05 | ||
US16/894,643 US11380047B2 (en) | 2020-06-05 | 2020-06-05 | Methods and apparatus for order-independent occlusion computations |
PCT/US2021/031053 WO2021247190A2 (en) | 2020-06-05 | 2021-05-06 | Methods and apparatus for order-independent occlusion computations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115917605A true CN115917605A (zh) | 2023-04-04 |
Family
ID=76197583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180038604.3A Pending CN115917605A (zh) | 2020-06-05 | 2021-05-06 | 用于次序无关的遮挡计算的方法和装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11380047B2 (zh) |
EP (1) | EP4162451A2 (zh) |
KR (1) | KR20230020974A (zh) |
CN (1) | CN115917605A (zh) |
BR (1) | BR112022023766A2 (zh) |
TW (1) | TW202147243A (zh) |
WO (1) | WO2021247190A2 (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ITMI20070038A1 (it) * | 2007-01-12 | 2008-07-13 | St Microelectronics Srl | Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle. |
US10109103B2 (en) * | 2010-06-30 | 2018-10-23 | Barry L. Jenkins | Method of determining occluded ingress and egress routes using nav-cell to nav-cell visibility pre-computation |
US8970592B1 (en) * | 2011-04-19 | 2015-03-03 | Lucasfilm Entertainment Company LLC | Simulating an arbitrary number of particles |
US10176621B2 (en) * | 2013-06-10 | 2019-01-08 | Sony Interactive Entertainment Inc. | Using compute shaders as front end for vertex shaders |
US9704055B2 (en) * | 2013-11-07 | 2017-07-11 | Autodesk, Inc. | Occlusion render mechanism for point clouds |
US9691177B2 (en) | 2014-12-12 | 2017-06-27 | Umbra Software Ltd. | Techniques for automatic occluder simplification using planar sections |
US10074210B1 (en) * | 2017-07-25 | 2018-09-11 | Apple Inc. | Punch-through techniques for graphics processing |
US10504280B2 (en) * | 2018-01-10 | 2019-12-10 | Qualcomm Incorporated | Accelerated occlusion computation |
US20190259200A1 (en) * | 2018-02-21 | 2019-08-22 | Microsoft Technology Licensing, Llc | Utilizing distance fields for occlusion determination in computer generated scenery |
-
2020
- 2020-06-05 US US16/894,643 patent/US11380047B2/en active Active
-
2021
- 2021-05-06 EP EP21729107.9A patent/EP4162451A2/en active Pending
- 2021-05-06 KR KR1020227041812A patent/KR20230020974A/ko active Search and Examination
- 2021-05-06 TW TW110116372A patent/TW202147243A/zh unknown
- 2021-05-06 WO PCT/US2021/031053 patent/WO2021247190A2/en active Application Filing
- 2021-05-06 BR BR112022023766A patent/BR112022023766A2/pt unknown
- 2021-05-06 CN CN202180038604.3A patent/CN115917605A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TW202147243A (zh) | 2021-12-16 |
US11380047B2 (en) | 2022-07-05 |
US20210383597A1 (en) | 2021-12-09 |
BR112022023766A2 (pt) | 2022-12-20 |
WO2021247190A2 (en) | 2021-12-09 |
KR20230020974A (ko) | 2023-02-13 |
WO2021247190A3 (en) | 2022-03-03 |
EP4162451A2 (en) | 2023-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11631212B2 (en) | Methods and apparatus for efficient multi-view rasterization | |
CN116391205A (zh) | 用于图形处理单元混合渲染的装置和方法 | |
US11080928B2 (en) | Methods and apparatus for visibility stream management | |
WO2023196120A1 (en) | Variable rate tessellation | |
US20230101978A1 (en) | Meshlet shading atlas | |
EP4242972A2 (en) | Methods and apparatus for edge compression anti-aliasing | |
US11380047B2 (en) | Methods and apparatus for order-independent occlusion computations | |
US20200380745A1 (en) | Methods and apparatus for viewpoint visibility management | |
US11734787B2 (en) | Foveated binned rendering associated with sample spaces | |
US20240212257A1 (en) | Workload packing in graphics texture pipeline | |
WO2024055221A1 (en) | Fast msaa techniques for graphics processing | |
US11869115B1 (en) | Density driven variable rate shading | |
US20240265486A1 (en) | Backface culling for guard band clipping primitives | |
US20240331079A1 (en) | Single pass anti-ringing clamping enabled image processing | |
WO2023055655A1 (en) | Meshlet shading atlas | |
CN118661198A (zh) | 遮挡剔除中的棋盘掩膜优化 | |
KR20230110739A (ko) | 오버레이 컴포지션을 위한 평면 계획 | |
WO2021091643A1 (en) | Methods and apparatus for reducing the transfer of rendering information | |
CN118661419A (zh) | 基于自适应块的帧相似度编码 | |
CN117616446A (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 |