CN107750373A - 使用光线跟踪渲染以生成可见性流 - Google Patents
使用光线跟踪渲染以生成可见性流 Download PDFInfo
- Publication number
- CN107750373A CN107750373A CN201680032998.0A CN201680032998A CN107750373A CN 107750373 A CN107750373 A CN 107750373A CN 201680032998 A CN201680032998 A CN 201680032998A CN 107750373 A CN107750373 A CN 107750373A
- Authority
- CN
- China
- Prior art keywords
- lattice
- group
- observability
- primitive
- visible
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
一种用于渲染的方法和设备包含将渲染目标分割成多个组格(341)。接下来,使用光线跟踪执行可见性遍次以生成可见性流,使得所述可见性流指示针对所述多个组格中的每个组格,哪些基元在所述组格中可见(342)。接着,针对所述多个组格中的至少一个组格,渲染所述组格中的在所述可见性流中指示为在所述组格中可见的每个基元(343)。
Description
技术领域
本发明涉及图形处理,且更确切地说,涉及用于基于平铺块的渲染的技术。
背景技术
图形处理单元(GPU)可生成供显示的视觉内容,例如,用于图形用户接口和视频游戏的内容。GPU可将二维或三维(3D)对象转换成可以显示的二维(2D)像素表示。将关于3D对象的信息转换成可显示的位图被称为像素渲染,并且可能需要相当大的存储器和处理功率。在过去,3D图形能力仅在强大工作站上可用。然而,现在3D图形加速器常见于个人计算机(PC)中以及嵌入式装置中,例如智能电话、平板计算机、便携式媒体播放器、便携式视频游戏控制台以及类似者。
发明内容
本发明的技术大体上涉及用于光线跟踪的方法、制造和设备,所述光线跟踪可以包含将渲染目标分割到多个组格中。接下来,使用光线跟踪执行可见性遍次以生成可见性流使得可见性流指示对于多个组格中的每个组格来说哪些基元在组格中可见。随后,对于多个组格中的至少一个组格,渲染在可见性流中指示为在组格中可见的组格中的每个基元。
根据本发明的一个实例,用于图形处理的方法包括:将渲染目标分割到多个组格中;使用光线跟踪执行可见性遍次以生成可见性流,使得可见性流指示对于多个组格中的每个组格来说哪些基元在组格中可见;以及对于多个组格中的至少一个组格来说,渲染在可见性流中指示为在组格中可见的组格中的每个基元。
根据本发明的另一实例,用于图形处理的装置包括:存储器;以及至少一个处理单元,其经配置以执行动作,所述动作包含:将渲染目标分割到多个组格中;使用光线跟踪执行可见性遍次以生成可见性流,使得可见性流指示对于多个组格中的每个组格来说哪些基元在组格中可见;以及对于多个组格中的至少一个组格来说,渲染在可见性流中指示为在组格中可见的组格中的每个基元。
根据本发明的另一实例,有形的计算机可读存储媒体存储用于图形处理的指令,所述指令在执行时使得一或多个处理器进行以下操作:将渲染目标分割到多个组格中;使用光线跟踪执行可见性遍次以生成可见性流,使得可见性流指示对于多个组格中的每个组格来说哪些基元在组格中可见;以及针对多个组格中的至少一个组格渲染在可见性流中指示为在组格中可见的组格中的每个基元。
根据本发明的另一实例,用于图形处理的装置包括用于渲染包含多个基元的渲染目标的装置,其中用于渲染所述渲染目标的装置包含:用于将渲染目标分割到多个组格中的装置;用于使用光线跟踪执行可见性遍次以生成可见性流使得可见性流指示对于多个组格中的每个组格来说哪些基元在组格中可见的装置;以及用于针对多个组格中的至少一个组格渲染在可见性流中指示为在组格中可见的组格中的每个基元的装置。
在附图和以下描述中阐述本发明的一或多个方面的细节。本发明中所描述的技术的其它特征、目标和优点将从描述及图式中且从权利要求书中而显而易见。
附图说明
图1是示出经配置以使用本发明的技术的实例计算装置的框图。
图2是示出经配置以使用本发明的技术的实例处理单元的框图。
图3是示出用于图形处理的方法的实例的流程图。
图4是说明GPU可对其执行光线跟踪的实例场景的概念图。
图5是说明将实例场景分区到包围体中的概念图。
图6是根据本发明的技术说明具有与图5中所示的包围体和基元相关联的节点的实例层次数据结构的概念图。
具体实施方式
简要地陈述,本发明的各方面通常与光线跟踪的方法、制造和设备相关,所述光线跟踪可以包含将渲染目标分割到多个组格中。接下来,使用光线跟踪执行可见性遍次以生成可见性流使得可见性流指示对于多个组格中的每个组格来说哪些基元在组格中可见。随后,对于多个组格中的至少一个组格,渲染在可见性流中指示为在组格中可见的组格中的每个基元。
图1是示出经配置以使用本发明的技术的实例计算装置的框图。如图1的实例中所说明,计算装置2可包含用户输入接口4、中央处理单元(CPU)6、存储器控制器8、系统存储器10、图形处理单元(GPU)12、图形存储器14、显示接口16、显示器18以及总线20和22。应注意,在一些实例中,,图形存储器14可与GPU 12“在芯片上”。在一些情况下,图1中所示的所有硬件元件可在(例如)系统芯片(SoC)设计中的芯片上。用户输入接口4、CPU 6、存储器控制器8、GPU 12和显示接口16可使用总线20相互通信。存储器控制器8和系统存储器10还可以使用总线22相互通信。
总线20、22可为多种总线结构中的任一者,例如第三代总线(例如,超传输总线或无限频带总线)、第二代总线(例如,高级图形端口总线、周边组件互连(PCI)高速总线,或高级eXentisible接口(AXI)总线)或另一类型的总线或装置互连件。应注意,图1所示的不同组件之间的总线和通信接口的特定配置仅是示例性的,并且具有相同或不同组件的计算装置和/或其它图形处理系统的其它配置也可用于实施本发明的技术。
CPU 6可以包括控制计算装置2的操作的通用处理器或专用处理器。用户可以提供输入到计算装置2以使得CPU 6执行一或多个软件应用程序。在CPU 6上执行的软件应用程序可包含(例如)操作系统、文字处理器应用程序、电子邮件应用程序、电子数据表应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或其它程序。另外,CPU 6可执行用于控制GPU 12的操作的GPU驱动程序7。用户可经由一或多个输入装置(未示出)(例如,键盘、鼠标、麦克风、触摸垫或经由用户输入接口4耦合到计算装置2的其它输入装置)将输入提供到计算装置2。
在CPU 6上执行的软件应用程序可包含指示CPU 6以引起向显示器18渲染图形数据的一或多个图形渲染指令。在一些实例中,软件指令可符合图形应用程序编程接口(API),比如(例如)开放图形库API、开放图形库嵌入系统(OpenGL ES)API、Direct3D API、X3D API、RenderMan API、WebGL API或任何其它公共或专有标准图形API。为了处理图形渲染指令,CPU 6可将一或多个图形渲染命令发布到GPU 12(例如,通过GPU驱动程序7),以使得GPU 12执行图形数据的渲染中的一些或全部。在一些实例中,待渲染的图形数据可以包含例如点、线、三角形、四边形、三角形条带等图形基元的列表。
存储器控制器8有助于进出系统存储器10的数据的传送。举例来说,存储器控制器8可接收存储器读取和写入命令,并且服务相对于存储器系统10的此类命令以便为计算装置2中的组件提供存储器服务。存储器控制器8经由存储器总线22以通信方式耦合到系统存储器10。虽然在图1中将存储器控制器8说明为与CPU 6和系统存储器10两者分离的处理模块,但在其它实例中,存储器控制器8的一些或全部功能性可在CPU 6和系统存储器10中的一或两者上实施。
系统存储器10可存储可由CPU 6存取以用于执行的程序模块和/或指令和/或由在CPU 6上执行的程序使用的数据。举例来说,系统存储器10可存储由CPU 6使用以在显示器18上呈现图形用户接口(GUI)的窗口管理器应用程序。此外,系统存储器10可存储用户应用程序以及与应用程序相关联的应用程序表面数据。系统存储器10可另外地存储由计算装置2的其它组件使用和/或生成的信息。举例来说,系统存储器10可充当用于GPU 12的装置存储器且可存储由GPU 12操作于其上的数据以及由GPU 12执行的操作而产生的数据。举例来说,系统存储器10可存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器、或类似物的任何组合。系统存储器10可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
GPU 12可经配置以执行图形操作以向显示器18渲染一或多个图形基元。因此,当在CPU 6上执行的软件应用程序中的一者需要图形处理时,CPU 6可向GPU 12提供图形命令和图形数据以用于向显示器18渲染。图形数据可以包含(例如)绘制命令、状态信息、基元信息、纹理信息等。在一些情况下,GPU 12可内置有高度并行结构,所述高度并行结构提供比CPU 6更有效的复杂图形相关操作的处理。举例来说,GPU 12可包含经配置以并行方式对多个顶点或像素进行操作的多个处理元件。在一些情况下,GPU12的高度并行本质允许GPU 12与使用CPU 6直接将场景绘制到显示器18相比更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器18上。
在一些情况下,GPU 12可以集成到计算装置2的主板中。在其它情况下,GPU 12可以存在于安装在计算装置2的主板中的端口中的图形卡上或可以另外的方式并入经配置以与计算装置2交互操作的外围装置内。GPU 12可以包括一或多个处理器,例如,一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路系统。
GPU 12可直接地耦合到图形存储器14。因此,GPU 12可以不使用总线20而从图形存储器14中读取数据且将数据写入到图形存储器14。换句话说,GPU 12可以使用本地存储装置而不是芯片外存储器本地地处理数据。这允许GPU 12以更有效的方式操作,方法是消除可经历繁重的总线业务的经由总线20读取和写入数据对GPU 12的需要。然而,在一些情况下,GPU 12可不包含单独存储器,而是经由总线20利用系统存储器10。图形存储器14可包含一或多个易失性或非易失性存储器或存储装置,比如(例如),随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
CPU 6和/或GPU 12可将经过渲染的图像存储在帧缓冲器15中。帧缓冲器15可以是独立存储器或可分配在系统存储器10内。显示接口16可从帧缓冲器15检索数据且配置显示器18以显示经过渲染的图像数据所表示的图像。在一些实例中,显示接口16可以包含经配置以将从帧缓冲器中检索的数字值转换为可由显示器18所消耗的模拟信号的数/模转换器(DAC)。在其它实例中显示接口16可以将数字值直接地传递到显示器18以用于处理。显示器18可包含监视器、电视机、投影装置、液晶显示器(LCD)、等离子显示面板、发光二极管(LED)阵列(例如,有机LED(OLED)显示器)、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或其它类型的显示单元。显示器18可集成在计算装置2内。举例来说,显示器18可为移动电话的屏幕。替代地,显示器18可为经由有线或无线通信链路而耦合到计算机装置2的独立装置。举例来说,显示器18可为经由缆线或无线链路连接到个人计算机的计算机监视器或平板显示器。
图2是进一步详细地说明图1的CPU 6、GPU 12和系统存储器10的实例实施方案的框图。CPU 6可以包含至少一个软件应用程序24、图形API 26和GPU驱动程序7,其中的每一者可为在CPU 6上执行的一或多个软件应用程序或服务。GPU 12可以包含图形处理管线30,所述图形处理管线包含一起操作以执行图形处理命令的多个图形处理级。GPU 12可经配置以执行图形处理管线30以渲染图像数据。如图2中所示,图形处理管线30可以包含命令引擎32、几何处理级34、可见性级35、光栅化级36和像素处理管线38。图形处理管线30中的组件中的每一个可实施为固定功能组件、可编程组件(例如,在可编程着色器单元上执行的着色器程序的一部分)或固定功能组件和可编程组件的组合。可用于CPU 6和GPU 12的存储器可包含系统存储器10和帧缓冲器15。帧缓冲器15可以是系统存储器10的一部分或可以与系统存储器10分离。帧缓冲器15可以存储经过渲染的图像数据。
软件应用程序24可为利用GPU 12的功能的任何应用程序。举例来说,软件应用程序24可为GUI应用程序、操作系统、便携式制图应用程序、用于工程或艺术应用程序的计算机辅助设计程序、视频游戏应用程序,或使用2D或3D图形的其它类型的软件应用程序。
软件应用程序24可以包含指示GPU 12渲染图形用户接口(GUI)和/或图形场景的一或多个绘图指令。举例来说,绘图指令可以包含定义待通过GPU 12渲染的一或多个图形基元的集合的指令。在一些实例中,绘图指令可以共同地定义用于GUI中的多个开窗表面的全部或部分。在额外实例中,所述绘图指令可共同地定义图形场景的全部或部分,所述图形场景包含在由应用程序定义的模型空间或世界空间内的一或多个图形对象。
软件应用程序24可以经由图形API 26调用GPU驱动程序7以将一或多个命令发布到GPU 12以用于将一或多个图形基元渲染为可显示的图形图像。举例来说,软件应用程序24可以经由图形API 26调用GPU驱动程序7以将基元定义提供给GPU 12。在一些情况下,可以以绘制基元(例如,三角形、矩形、三角扇、三角形条带等)的列表的形式将基元定义提供给GPU 12。基元定义可以包含规定与待渲染的基元相关联的一或多个顶点的顶点规范。顶点规范可以包含每个顶点的位置坐标,并且在一些情况下包含与顶点相关联的其它属性,例如,色彩坐标、法向量和纹理坐标。基元定义还可包含基元类型信息(例如,三角形、矩形、三角扇、三角形条带等)、缩放信息、旋转信息等等。基于由软件应用程序24发布到GPU驱动程序7的指令,GPU驱动程序7可制定规定GPU 12执行的一或多个操作以便渲染基元的一或多个命令。在GPU 12从CPU 6接收命令时,图形处理管线30解码命令且配置图形处理管线30内的一或多个处理元件以执行命令中所规定的操作。在执行所规定的操作之后,图形处理管线30将经渲染的数据输出到与显示装置相关联的帧缓冲器40。
GPU驱动程序7可进一步经配置以编译一或多个着色器程序,且将经编译的着色器程序下载到GPU 12内所包含的一或多个可编程着色器单元上。可以高层级着色语言写入着色器程序,例如,OpenGL着色语言(GLSL)、高层级着色语言(HLSL)、用于图形的C(Cg)着色语言等。经编译的着色器程序可包含控制GPU 12内的可编程着色器单元的操作的一或多个指令。举例来说,着色器程序可以包含顶点着色器程序和/或像素着色器程序。顶点着色器程序可控制可编程顶点着色器单元或统一着色器单元的执行,且包含规定一或多个每顶点操作的指令。像素着色器程序可包含控制可编程像素着色器单元或统一着色器单元的执行的像素着色器程序,且包含规定一或多个每像素操作的指令。根据本发明的一些实例实施例,像素着色器程序还可包含选择性地致使基于源像素的对应目的地阿尔法值而检索源像素的纹理值的指令。
图形处理管线30可经配置以经由图形驱动程序7从CPU 6接收一或多个图形处理命令,且执行图形处理命令以生成可显示的图形图像。如上所述,图形处理管线30包含一起操作以执行图形处理命令的多个级。然而,应注意此类级不需要一定在单独硬件块中实施。举例来说,几何处理级34和像素处理管线38的部分可实施为统一着色器单元的部分。
命令引擎32可接收图形处理命令且配置图形处理管线30内的剩余处理级以执行用于实行图形处理命令的各种操作。图形处理命令可包含(例如)绘图命令及图形状态命令。所述绘图命令可包含顶点规范命令,所述顶点规范命令规定一或多个顶点的位置坐标,并且在一些情况下,规定与所述顶点中的每一者相关联的其它属性值,例如,色彩坐标、法向量、纹理坐标及雾坐标。图形状态命令可包含基元类型命令、变换命令、照明命令等。基元类型命令可规定待渲染基元的类型和/或顶点如何组合以形成基元。所述变换命令可规定在顶点上执行的变换的类型。照明命令可规定图形场景内的不同光的类型、方向和/或安置。命令引擎32可以使得几何处理级34相对于与一或多个接收到的命令相关联的顶点和/或基元执行几何处理。
几何处理级34可在一或多个顶点上执行每顶点操作和/或图元设置操作,以便生成用于光栅化级36的基元数据。每个顶点可与一组属性(例如,位置坐标、色彩值、法向量及纹理坐标)相关联。几何处理级34根据各种每顶点操作而修改这些属性中的一或多个。举例来说,几何处理级34可对顶点位置坐标执行一或多个变换以产生经修改的顶点位置坐标。几何处理级34可以例如将建模变换、查看变换、投影变换、ModelView变换、ModelViewProjection变换、检视区变换和深度范围缩放变换中的一或多个应用到顶点位置坐标以生成经修改的顶点位置坐标。在一些情况下,顶点位置坐标可为模型空间坐标,且经修改的顶点位置坐标可为屏幕空间坐标。可在所述建模、查看、投影及检视区变换的应用之后获取屏幕空间坐标。在一些情况下,几何处理级34还可对顶点执行每顶点照明操作以生成顶点的经修改的色彩坐标。几何处理级34还可执行其它操作,包含(例如)法线变换、法线标准化操作、查看量裁剪、均匀划分和/或隐面消除操作。
几何处理级34可产生包含限定将被光栅化的基元的一或多个经修改的顶点的集合的基元数据以及规定顶点如何组合以形成基元的数据。所述经修改的顶点中的每一个可包含(例如)与所述顶点相关联的经修改的顶点位置坐标及经处理的顶点属性值。基元数据可以共同地对应于待通过图形处理管线30的其它级光栅化的基元。在概念上,每个顶点可以对应于基元的两个边缘相遇的基元的转角。几何处理级34可将基元数据提供到光栅化级36以用于进一步处理。
在一些实例中,几何处理级34的全部或部分可由在一或多个着色器单元上执行的一或多个着色器程序实施。举例来说,在此类实例中,几何处理级34可由顶点着色器、几何着色器或其任何组合实施。在其它实例中,可将几何处理级34实施为固定功能硬件处理管线,或实施为固定功能硬件与在一或多个着色器单元上执行的一或多个着色器程序的组合。
可见性级35经配置以使用光线跟踪以生成可见性流,如下文更详细地论述。在一些实例中,如下文更详细地论述,可见性级35也生成可见性统计数据和/或可见性探试。
光栅化级36经配置以从几何处理级34接收表示待光栅化基元的基元数据,且光栅化所述基元以生成对应于经光栅化基元的多个源像素。在一些实例中,光栅化级36可确定哪些屏幕像素位置由待光栅化的基元覆盖,且生成用于被确定为由基元覆盖的每个屏幕像素位置的源像素。光栅化级36可通过使用所属领域的技术人员已知的技术来确定哪些屏幕像素位置由基元覆盖,例如,边缘遍历技术、评估边缘等式等。光栅化级36可以将所得到的源像素提供到像素处理管线38以用于进一步处理。
由光栅化级36生成的源像素可对应于屏幕像素位置,例如,目的地像素,且与一或多个色彩属性相关联。针对特定经光栅化基元所生成的所有源像素可称为与经光栅化基元相关联。由光栅化级36确定的将由基元覆盖的像素可在概念上包含表示基元的顶点的像素、表示基元的边缘的像素及表示基元的内部的像素。
像素处理管线38经配置以接收与光栅化的基元相关联的源像素,且在所述源像素上执行一或多个每像素操作。可以通过像素处理管线38执行的每像素操作包含例如阿尔法测试、纹理制图、色彩计算、像素着色、每像素照明、雾处理、混合、像素所有权文本、来源阿尔法测试、模具测试、深度测试、剪刀测试和/或点刻法操作。此外,像素处理管线38可以执行一或多个像素着色器程序以执行一或多个每像素操作。由像素处理管线38产生的所得数据可在本文中被称作目的地像素数据,且存储在帧缓冲器15中。目的地像素数据可与帧缓冲器15中的具有与经处理源像素相同的显示位置的目的地像素相关联。所述目的地像素数据可包含例如色彩值、目的地阿尔法值、深度值等数据。
帧缓冲器15存储用于GPU 12的目的地像素。每个目的地像素可与唯一屏幕像素位置相关联。在一些实例中,帧缓冲器15可存储每个目的地像素的色彩分量和目的地阿尔法值。举例来说,帧缓冲器15可存储每个像素的红色、绿色、蓝色、阿尔法(RGBA)分量,其中“RGB”分量对应于色彩值,且“A”分量对应于目的地阿尔法值。虽然帧缓冲器15和系统存储器10被说明为单独的存储器单元,但在其它实例中,帧缓冲器15可为系统存储器10的部分。
如上所述,图形处理管线30可以渲染图形图像。在一些实例中,图形处理管线30可以接收一批基元(即,一或多个基元)以渲染为所得到的图形图像。在一些实例中,为了渲染基元批次,可将所得的图形图像细分成多个较小部分(例如,像素的单元片或组格),并且图形处理管线30可将图形图像的每一部分渲染为单独的渲染遍次。
在一些实例中,GPU 12可以执行组格化遍次,随后是一或多个渲染遍次。在组格化遍次期间,对于特定组格来说,GPU 12可以使用光线跟踪以生成可见性流,所述可见性流指示哪些基元是实际上在组格中可见的。在一些实例中,如下文更详细地论述,在组格化遍次期间,GPU 12在可见性流的产生的同时生成可见性统计数据和探试。通过GPU 12执行的组格化遍次可互换地被称作可见性遍次。
在一些实例中,如上所述,帧可分成多个组格。在一些实例中,图形硬件包含图形存储器14,并且图形存储器14被配置为其大小足以容纳至少一个组格的数据的快速存储器。作为帧的特定部分的单个渲染遍次的部分,图形处理管线30可以相对于帧的目的地像素(例如,目的地像素的特定组格)的特定子集渲染一批基元的全部或子集。在执行相对于第一组格的第一渲染遍次之后,图形处理管线30可以执行相对于第二组格的第二渲染遍次等等。图形处理管线30可以递增地穿越组格直至与每个组格相关联的基元已经得到渲染。
在渲染遍次期间,在一些实例中,GPU 12将场景拆分为组格且将由可见性流所指示的组格中的所有三角形渲染为在最终经渲染的场景中实际上可见。举例来说,一些三角形可在一或多个其它三角形后方且将在最后经渲染场景中不可见。通过这种方式,对于该组格来说,不可见的三角形无需渲染。
在执行特定渲染遍次时,用于与特定渲染辨析遍次相关联的组格的像素数据可存储在图形存储器14(有时称为组格缓冲器)中。在执行渲染遍次之后,图形处理管线30可将图形存储器14的内容传送到帧缓冲器15。在一些情况下,图形处理管线30用存储于图形存储器14中的数据覆写帧缓冲器15中的数据的一部分。在其它情况下,图形处理管线30可以复合或组合帧缓冲器15中的数据与存储在图形存储器14中的数据。在将图形存储器14的内容传递到帧缓冲器15之后,图形处理管线30可初始化图形存储器14到默认值并且相对于不同组格开始后续渲染遍次。
如上所述,虽然GPU 12可以渲染到图形存储器14,但是在一些实例中,GPU 12可以替代地渲染到图形存储器14或基于针对每个组格做出的单独确定执行直接渲染。在一些实例中,可以在逐组格基础上做出关于是否渲染到图形存储器14(这要求后续载入/存储操作)或是否替代地执行直接渲染的决策,这使用较慢的系统存储器10而不是较快的本地图形存储器14。
在一些实例中,图1和/或图2的GPU 12和/或CPU 6可以用作至少一个处理单元的实例。在一些实例中,图1和/或图2的图形存储器14、帧缓冲器15和/或系统存储器10可以用作存储器的实例。
图3是示出用于图形处理的方法(440)的实例的流程图。在开始块之后,GPU(例如,图2的GPU 12)将渲染目标划分为多个组格(441)。渲染目标包含多个基元。随后,可见性级(例如,图2的可见性级35)使用光线跟踪执行可见性遍次以生成可见性流,使得对于多个组格中的每个组格来说,可见性流指示哪些基元在组格中可见(442)。接下来,在执行可见性遍次之后,对于多个组格中的至少一个组格来说,GPU 12渲染在可见性流中指示为在组格中可见的组格中的每个基元(443)。过程随后前进到返回块,其中恢复其它处理。
渲染目标可为由GPU渲染的任何东西,其包含例如图像,例如,图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)、此类图像的部分和/或此类图像和/或此类图像的部分的图像数据。
可见性流指示针对多个组格中的每个组格,哪些基元在组格中可见。在背景技术中,使用仅顶点着色器遍次实现生成可见性流,所述仅顶点着色器遍次在不考虑最终渲染目标上的三角形的实际可见性的情况下生成哪些三角形(以及相关联的)命中组格的信息。相比之下,在本发明中,在图3的框442处,可见性流指示针对多个组格中的每个组格,哪些基元在组格中实际上可见,这与在不考虑实际可见性的情况下指示哪些基元仅仅命中组格形成对照。贯穿本文,将基元称之为“可见的”是指基元的实际可见性,并且如果基元命中组格但是实际上不可见,那么基元不可见,如在本文中所定义的术语“可见”。
返回到图2,在一些实例中,如上所述,当GPU 12对渲染目标进行渲染时,在渲染遍次之前,GPU 12使用组格化遍次(其也可被称作可见性遍次)以生成可见性流。针对每个组格,可见性流包含关于哪些三角形在组格中实际上可见的指示。在一些实例中,在可见性遍次期间,图形处理管线30同时生成可见性流以及生成可见性探试。也就是说,在一些实例中,图形管线30同时或在基本上相同的时间帧内生成可见性流与可见性探试。
在可见性遍次期间,在一些实例中,可见性级35对每个像素投射光线。在一些实例中,针对每个像素,可见性级35使来自虚拟相机的主光线投射穿过所述像素。可见性级35经由光线跟踪生成可见性信息,包含执行光线-包围盒相交测试(例如,光线-包围盒和光线-三角形相交测试)来生成可见性流。基于光线相交测试,GPU 12生成可见性流,使得可见性流指示针对每个组格,哪些基元在组格中可见。可见性流指示哪些基元在组格中实际上可见,而不是指示哪些基元命中组格。在一些实例中,每个基元是三角形。在下文中更详细地论述在可见性遍次期间执行的光线跟踪的实例。
在可见性遍次之后,GPU 12执行每个组格的一或多个渲染遍次。在一些实例中,针对每个组格,由可见性流识别为在组格中可见的每个三角形被渲染到图形存储器14,其中在一些实例中图形存储器14经配置以操作为快速本地存储器。针对每个组格,渲染可以跳过由可见性流指示为在组格中不可见的任何三角形。
在渲染遍次之后,在一些实例中,对于场景的当前帧执行载入/存储(分辨/未分辨)操作。
如上所述,在使用3D图形的一些实例中,可见性级35对于每个像素来说投射来自虚拟相机贯穿像素的主要光线。在一些实例中,主要射线的分布限定虚拟相机。在一些实例中,每个像素表示图像平面上的位置。在这些实例中,在可见性级35期间所投射的每个光线是主要光线。主要光线(有时也被称为视图光线)是起始于虚拟相机的3D位置处的光线。主要光线的方向通过虚拟相机的视锥体以及通过图像平面的分辨率来给定。虚拟相机截头锥体是限定哪些对象被视为相关的3D空间中的立体(在视锥体外部的所有事物不相关,这是因为其结果不是在屏幕上可见)。
限定目标/屏幕分辨率的作用在于限定附近/较远的裁剪平面如何细分为位置的常规网格。主要光线连接虚拟相机的3D位置与在附近/较远裁剪平面上的每个位置。主要光线与在附近和较远裁剪平面两者上的相同相对位置相交。
在一些实例中,在产生可见性流的同时的可见性遍次期间,一或多个拓扑计数器累加可见性统计数据。在一些实例中,一个计数器收集且更新命中组格(其包含与组格区域相交的所有基元,无论可见或不可见)的基元的总数量。在一些实例中,一个计数器收集且更新在组格中真正地可见的输入基元的总数量。在一些实例中,对于每个组格来说,一个计数器收集且更新命中组格的输入基元的总数量和命中组格的可见基元的总数量的运行总数。在这些实例中的一些中,这一计数器的值可用作场景复杂度的测量值。在一些实例中,对于每个组格来说,一个计数器收集且更新组格中完全地覆盖的粗糙的像素和全部像素的数量。
在一些实例中,在可见性遍次期间,在产生可见性流以及通过计数器收集且更新可见性统计数据的同时,GPU 12基于可见性统计数据计数器生成各种可见性探试。在一些实例中,可见性探试可以包含以下各项的一个、一些或全部:过度绘制比率、像素更新比率、场景复杂度、确定哪些区域借助于较高的过度绘制比率具有更复杂的几何结构和/或类似者。
如上所述,在一些实例中,由GPU 12生成的一个可见性探试可以包含过度绘制比率。在一些实例中,“过度绘制”是表示在该区域中光栅化的基元之间的重叠的每个组格的整数值。“重叠”可指代大于触摸像素的基元的基元的数量。过度绘制比率可指代组格的重叠评分的总和除以组格中的像素的总数量(例如,每个像素/像素的数量的重叠的总和)。在一些实例中,组格的过度绘制比率可以通过如下方法生成:计算组格中的每个像素的重叠值、对组格中的每个像素的每个计算出的重叠值求和以产生总重叠值,以及总重叠值除以组格中的像素的数量以产生过度绘制数量。
在一些实例中,像素更新比率计算为在组格中所触摸的像素的数量除以组格中的像素的总数量。
场景几何结构复杂度可在不同实例中以不同方式计算。在一些实例中,场景复杂度可以确定为计数器的值,所述计数器收集且更新以下项的运行总数量:命中组格的输入基元的总数量和命中组格的可见基元的总数量。在一些实例中,场景复杂度测量对于组格来说必须完成的渲染工作的量或对于组格来说必须渲染的几何结构的量。在一些实例中,场景复杂度是组格中的基元的数量。在一些实例中,着色器几何结构的复杂度也可以为场景复杂度中的因数。在一些实例中,场景复杂度是命中组格的基元的数量加上与渲染命中组格的基元相关联的着色器复杂度。
在各种不同实例中,可见性探试可用于多种不同目的。在一些实例中,可见性探试可用作确定施加于组格的渲染模式的辅助,其中关于施加哪个渲染模式的决策可以在逐组格的基础上完成。举例来说,基于可见性探试,可以在逐组格基础上做出关于是否渲染到图形存储器14(这要求后续载入/存储操作)或是否替代地执行直接渲染的决策,这使用较慢的系统存储器10而不是较快的本地图形存储器14。
在一些实例中,关于渲染到图形存储器14或替代地执行直接渲染的确定可以部分地基于哪些组格具有复杂几何结构和较高过度绘制比率两者。可以以动态方式做出确定。如果过度绘制比率较小,那么更期望渲染到图形存储器。如果像素更新比率较低,那么更期望直接渲染。如果场景复杂度过高,那么不太期望直接渲染。然而,如果场景复杂度较高,那么如果基元的大部分有助于像素值,那么直接渲染仍然是优选的。当可以消除没有帮助的组格的部分时,期望渲染到图形存储器而不是直接渲染。
即使场景是复杂的,如果所有基元有帮助,那么贯穿组格化没有值渲染到图形存储器,这是因为使用在组格化遍次处所生成的可见性信息将不再消除渲染工作,因而在此情况下期望直接渲染以便消除在组格化渲染期间所使用的快速图形存储器与系统存储器之间的额外数据传递。可调节的阈值可用于每个组格,因此(例如)组格的另一探试可用于调节阈值场景复杂度,由此组格将使用直接渲染或渲染到图形存储器;并且在一些实例中,其它组格的可见性探试可为用于动态地调节和/或更新给定组格的阈值的因数。
在一些实例中,可见性流和可见性探试全部取决于光线投射坐标。关于组格化配置和哪些像素有助于用于投射的哪些组格的信息是可用于生成可见性流以及可见性探试的已知的信息。
在一些实例中,在可见性遍次期间,若干可见性统计计数器累加可见性统计数据。在一些实例中,可见性统计计数器是在组格化遍次期间产生可见性流的同时实时累加组格的可见性统计数据的拓扑计数器。
GPU 12可经配置以基于一系列执行命令执行各种动作。命令可以包含(例如)可见性遍次和渲染遍次的命令。
如上所述,在一些实例中,在可见性遍次期间,GPU 12使用光线跟踪以生成可见性流,其中可见性流包含每个组格的可见性信息。在一些实例中,主要光线贯穿每个像素投射,并且通过基于光线相交测试确定哪些三角形在每个组格中可见来生成可见性流。对于每个组格来说,可见性流指示哪些基元在组格中实际上可见,而不是指示哪些基元命中组格。在下文中相对于图5-7更详细地论述执行光相交测试的光线跟踪的一个实例。
图4是说明GPU 12可对其执行光线跟踪的实例场景的概念图。如图4中所示,场景50可为包含基元52A-52E(下文称为“基元52”)的2D或3D场景。作为光线跟踪过程的部分,对于可为2D或3D光线且从光源55发散的光线54来说,GPU 12可确定与光线54相交的场景50的基元52中的基元。如上所述,在一些实例中,主要光线可以贯穿每个像素投射。图4说明一个此类光线的光线相交,并且在一些实例中,相同过程被应用于每个光线。
光线跟踪是用于确定光线三角形相交的计算机图形技术。给定输入光线和三角形的集合,算法的目标是确定哪些三角形与光线相交。可查询不同类型的相交:最接近命中(NH)相交;任一命中相交;和/或全相交。为了加速光线跟踪操作,三角形(基元)通常被组织到加速度数据结构(ADS)(例如,包围体层次(BVH)树、KD树、网格等)中。
BVH是具有两种类型的节点的非平衡二进制树。内部节点是表示通过轴对齐的包围盒(AABB)所描述的空间的区域且具有两个子级的节点。叶节点是也表示空间的区域但是并不具有任何子级的节点。替代地,这两种节点参考包含于包围盒中的三角形的集合。
在一些实例中,为了跟踪贯穿BVH树的光线,需要两种类型的操作:光线-盒相交测试和光线-三角形相交测试。
GPU 12可以系统地确定基元52中与光线54相交的基元,方法是分割场景50、分层次地布置场景50的经划分的部分以及以递归方式横穿场景50的经划分的部分的层次。图5是说明将实例场景50分区到包围体中的概念图。如图5中所示,GPU 12可概念地将基元52分区到包围体56A到56E(“包围体56”)中。包围体56可为轴对齐的包围盒(AABB),其可为具有最小区域的包围盒,封闭基元的全部点可位于所述最小区域内。包围盒可为轴对齐使得盒的边缘可以平行于坐标轴(例如,x、y以及z轴)。
包围体56A可为包围场景50的所有基元52的包围盒。包围体56B和56C可为包围体56A的子集,其中包围体56B和56C包围由包围体56A所限定的场景50的部分的子集。包围体56B可以限定基元52A和52B,并且包围体56C可以限定(即,空间上涵盖)基元52C、52D及52E。包围体56D和56E可为包围体56C的子集,并且可以限定由包围体56C所限定的场景50的部分的子集。包围体56D可以限定基元52C和52D,并且包围体56E可以限定基元52E。
在图5中所示的实例中,GPU 12可以将基元52分区到五个包围体56中。GPU 12可以使用大于或少于五个的包围体56。举例来说,GPU 12可相应地创建额外的包围体作为包围体56B的子集以单独地限定基元52A和52B。在一些实例中,CPU 6还可经配置以将基元52分区到包围体56中。
图6说明具有与图5中所示的包围体56和基元52相关联的节点的实例层次数据结构。GPU 12或CPU 6可以构造BVH树60使得它可以包含与场景50中的包围体56和基元52相关联的节点62A-62E(“节点62”)。
更确切地说,根节点62A、内部节点62C和叶节点62B、62D和62E可以各自与包围体56的包围体相关联。BVH树60的除根节点62A以外的节点可被称为BVH树60的非根节点。举例来说,内部节点62C和叶节点62B、62D和62E可被称为BVH树60的非根节点。叶节点62B、62D和62E可各自与基元52的至少一个基元链接。举例来说,叶节点62B可与基元52A和52B链接,叶节点62D可与基元52C和52D链接,并且叶节点62E可与基元52E链接。BVH树60可被视为非平衡二叉树,这是因为层次数据结构60的每一非叶节点最多具有两个子节点,还因为叶节点62B、62D和62E可能具有不相等的深度。
因为包围体56A限定场景50的所有基元52,所以GPU 12可以将根节点62A与包围体56A相关联。GPU 12可相应地将节点62B和62C(其为根节点62A的子节点)与包围体56B和56C相关联,这是因为包围体56B和56C各自是包围体56A的子集。GPU 12可以将基元52A和52B与节点62B链接,这是因为与节点62B相关联的包围体56B限定基元52A和52B,并且还因为不存在其为包围体56B的子集的额外包围体。
GPU 12可以将包围体56D和56E与节点62D和62E(其为节点62C的子节点)相关联,这是因为包围体56D和56E各自是与节点62C相关联的包围体56C的子集。GPU 12可以将基元52C和52D与节点62D链接,这是因为与节点62D相关联的包围体56D限定基元52C和52D,并且还因为不存在其为包围体56D的子集的额外的包围体。GPU 12可将基元52E与节点62E链接,这是因为与节点62E相关联的包围体56E限定基元52E,并且还因为不存在其为包围体56E的子集的额外包围体。
通过执行针对与BVH树60的节点62相关联的包围体56的光线-盒相交测试,GPU12可穿越BVH树60以确定与光线54相交的基元52的基元。GPU 12可以通过针对与根节点62A相关联的包围体56A执行光线-盒相交测试而开始穿越BVH树60。如果GPU12确定光线54与所限定的立体56A相交,那么GPU 12可以继续穿越BVH树60到节点62B,并且GPU 12可以针对与节点62B相关联的包围体56B执行光线-盒相交测试。如果GPU 12确定光线54并不与所限定的立体56B相交,那么GPU 12可以以递归方式穿越BVH树向上至节点62A且向下至节点62C,并且GPU 12可以针对与节点62C相关联的包围体56C执行光线-盒相交测试。如果GPU 12确定光线54与所限定的立体56C相交,那么GPU 12可以继续穿越BVH树60到节点62D,并且GPU 12可以针对与节点62D相关联的包围体56D执行光线-盒相交测试。
如果GPU确定光线54与包围体56D相交,那么GPU 12可针对链接到节点62D的基元执行光线-基元相交测试。因此,GPU 12可针对基元52C执行光线-基元相交测试,并且还可针对基元52D执行光线-基元相交测试。GPU 12可以从针对基元52D的光线-基元相交测试中确定光线54确实与基元52D相交。在GPU 12确定光线54确实与基元52D相交之后,GPU 12可以继续以递归方式穿越BVH树60向上至节点62C且向下至节点62E,并且GPU 12可以针对与节点62E相关联的包围体56E执行光线-盒相交测试。基于光线-盒相交测试,GPU 12可以确定光线54并不与包围体56E相交,由此结束光线54的BVH树60的穿越。
如上所述,在一些实例中,GPU 12使用光线-相交测试的结果来生成每个组格的可见性流。
在一或多个实例中,上文所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件实施,那么功能可作为一或多个指令或代码存储在包括计算机可读媒体的制品上。计算机可读媒体可以包含计算机数据储存媒体。数据存储媒体可为可由一或多个计算机或者一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。作为实例而非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、闪存存储器或可用来携带或存储呈指令或数据结构形式的所要程序代码且可由计算机存取的任何其它媒体。如本文中所使用,磁盘和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。贯穿本说明书和权利要求书,在本文中具体定义的术语“有形的计算机可读存储媒体”排除传播信号本身,但是术语“有形的处理器可读存储媒体”确实包含随机存取存储器(RAM)、寄存器存储器、处理器高速缓冲存储器等等。
代码可以由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路系统。相应地,如本文所使用,术语“处理器”可指代上述结构中的任一者或适用于实施本文中所描述的技术的任何其它结构。此外,在一些方面中,本文中所描述的功能性可提供在专用硬件和/或软件模块内。并且,所述技术可完全实施于一或多个电路或逻辑元件中。
应认识到,取决于实例,本文中所描述的技术中的任一者的某些动作或事件可用不同顺序来执行,可添加、合并或全部省略所述动作或事件(例如,实践所述技术未必需要所有所描述的动作或事件)。此外,在某些实例中,可例如通过多线程处理、中断处理或多个处理器同时而非依次执行动作或事件。
已经描述了各种实例。这些及其它实例在所附权利要求书的范围内。
Claims (27)
1.一种用于图形处理的方法,其包括:
将渲染目标分割成多个组格,其中所述渲染目标包含多个基元;
使用光线跟踪执行可见性遍次以生成可见性流,使得所述可见性流指示针对所述多个组格中的每个组格,哪些基元在所述组格中可见;以及
针对所述多个组格中的至少一个组格,渲染所述组格中的在所述可见性流中指示为在所述组格中可见的每个基元。
2.根据权利要求1所述的方法,其中所述渲染目标包含多个像素,并且其中使用光线跟踪生成所述可见性流包含:
使光线投射穿过所述渲染目标的每个像素;
执行光线相交测试以确定针对所述多个组格中的每个组格,哪些基元在所述组格中可见;以及
基于所述光线相交测试,生成所述可见性流,使得所述可见性流指示针对所述多个组格中的每个组格,哪些基元在所述组格中可见。
3.根据权利要求1所述的方法,其中所述多个基元中的每个基元是三角形。
4.根据权利要求1所述的方法,其中所述渲染目标包含多个像素,并且其中使用光线跟踪生成所述可见性流包含:
使主光线投射穿过所述渲染目标的每个像素;以及
执行光线相交测试以确定针对每个组格,哪些基元在所述组格中可见;以及
生成所述可见性流,使得所述可见性流指示针对所述多个组格中的每个组格,哪些基元在所述组格中可见。
5.根据权利要求4所述的方法,其中执行光线相交测试以确定哪些基元在所述组格中可见包含光线-包围盒相交测试和光线-三角形相交测试。
6.根据权利要求1所述的方法,其进一步包括在执行所述可见性遍次时生成多个可见性探试。
7.根据权利要求6所述的方法,其中所述可见性探试针对所述多个组格中的每个组格包含以下各项中的至少一个:过度绘制比率、像素更新比率或场景复杂度。
8.根据权利要求1所述的方法,其进一步包括在生成所述可见性流时动态地更新多个可见性统计计数器。
9.根据权利要求8所述的方法,其中执行动态地更新所述多个可见性统计计数器,使得针对所述多个组格中的每个组格,所述多个可见性统计计数器中的至少一个计数器动态地累积以下各项中的至少一个:命中所述组格的基元的总数量、在所述组格中实际上可见的基元的总数量、命中所述组格的基元的所述数量和在所述组格中实际上可见的基元的所述数量的总和,或所述组格中完全覆盖的粗糙像素和总像素的数量。
10.根据权利要求9所述的方法,其进一步包括:在生成所述可见性流的同时以及在更新所述多个可见性统计计数器的同时,动态地生成多个可见性探试,其中所述可见性探试针对所述多个组格的每个组格包含以下各项中的至少一个:过度绘制比率、像素更新比率,或场景复杂度。
11.一种用于图形处理的装置,其包括:
存储器;以及
至少一个处理单元,其经配置以执行动作,所述动作包含:
将渲染目标分割成多个组格;
使用光线跟踪执行可见性遍次以生成可见性流,使得所述可见性流指示针对所述多个组格中的每个组格,哪些基元在所述组格中可见;以及
针对所述多个组格中的至少一个组格,渲染所述组格中的在所述可见性流中指示为在所述组格中可见的每个基元。
12.根据权利要求11所述的装置,其中所述至少一个处理单元包含图形处理单元GPU。
13.根据权利要求11所述的装置,其中所述至少一个处理单元进一步经配置使得所述多个基元中的每个基元是三角形。
14.根据权利要求11所述的装置,其中所述至少一个处理单元进一步经配置使得所述渲染目标包含多个像素,并且其中所述至少一个处理单元经配置以使用光线跟踪来生成所述可见性流,方法如下:
使光线投射穿过所述渲染目标的每个像素;
执行光线相交测试以确定针对所述多个组格中的每个组格,哪些基元在所述组格中可见;以及
基于所述光线相交测试,生成所述可见性流,使得所述可见性流指示针对所述多个组格中的每个组格,哪些基元在所述组格中可见。
15.根据权利要求11所述的装置,其中所述至少一个处理单元进一步经配置以渲染所述渲染目标,使得所述渲染目标包含多个像素,并且其中所述至少一个处理单元经配置以使用光线跟踪来生成所述可见性流,方法如下:
使主光线投射穿过所述渲染目标的每个像素;以及
执行光线相交测试以确定针对所述多个组格中的每个组格,哪些基元在所述组格中可见;以及
生成所述可见性流,使得所述可见性流指示针对所述多个组格中的每个组格,哪些基元在所述组格中可见。
16.根据权利要求15所述的装置,其中所述至少一个处理单元经配置以执行光线相交测试以确定哪些基元在所述组格中可见,方法如下:执行光线-包围盒相交测试和执行光线-三角形相交测试。
17.根据权利要求11所述的装置,所述至少一个处理单元进一步经配置以在执行所述可见性遍次时生成多个可见性探试。
18.根据权利要求17所述的装置,其中所述至少一个处理单元进一步经配置以生成所述多个可见性探试,使得所述可见性探试针对所述多个组格中的每个组格包含以下各项中的至少一个:过度绘制比率、像素更新比率或场景复杂度。
19.根据权利要求11所述的装置,其中所述至少一个处理单元进一步经配置以在生成所述可见性流时动态地更新多个可见性统计计数器。
20.根据权利要求19所述的装置,其中所述至少一个处理单元进一步经配置以动态地更新所述多个可见性统计计数器,使得所述多个可见性统计计数器针对所述多个组格中的每个组格包含动态地累积以下各项中的至少一个的计数器:命中所述组格的基元的总数量、在所述组格中实际上可见的基元的总数量、命中所述组格的基元的所述数量和在所述组格中实际上可见的基元的所述数量的总和,或所述组格中完全覆盖的粗糙像素和总像素的数量。
21.根据权利要求20所述的装置,其中所述至少一个处理单元进一步经配置以在生成所述可见性流的同时以及在更新所述多个可见性统计计数器的同时,动态地生成多个可见性探试,其中所述可见性探试针对所述多个组格中的每个组格包含以下各项中的至少一个:过度绘制比率、像素更新比率或场景复杂度。
22.一种存储用于图形处理的指令的有形计算机可读存储媒体,所述指令在执行时使得一或多个处理器进行以下操作:
将渲染目标分割成多个组格;
使用光线跟踪执行可见性遍次以生成可见性流,使得所述可见性流指示针对所述多个组格中的每个组格,哪些基元在所述组格中可见;以及
针对所述多个组格中的至少一个组格,渲染所述组格中的在所述可见性流中指示为在所述组格中可见的每个基元。
23.一种用于图形处理的装置,其包括:
用于将渲染目标分割成多个组格的装置;
用于使用光线跟踪执行可见性遍次以生成可见性流,使得所述可见性流指示针对所述多个组格中的每个组格,哪些基元在所述组格中可见的装置;以及
用于针对所述多个组格中的至少一个组格,渲染所述组格中的在所述可见性流中指示为在所述组格中可见的每个基元的装置。
24.根据权利要求23所述的装置,其中所述多个基元中的每个基元是三角形。
25.根据权利要求23所述的装置,其进一步包括用于在生成所述可见性流时动态地更新多个可见性统计计数器的装置。
26.根据权利要求23所述的装置,其进一步包括用于在执行所述可见性遍次时生成多个可见性探试的装置。
27.根据权利要求26所述的装置,其中所述可见性探试针对所述多个组格中的每个组格包含以下各项中的至少一个:过度绘制比率、像素更新比率或场景复杂度。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/738,535 | 2015-06-12 | ||
US14/738,535 US9773340B2 (en) | 2015-06-12 | 2015-06-12 | Rendering using ray tracing to generate a visibility stream |
PCT/US2016/027132 WO2016200479A1 (en) | 2015-06-12 | 2016-04-12 | Rendering using ray tracing to generate a visibility stream |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107750373A true CN107750373A (zh) | 2018-03-02 |
CN107750373B CN107750373B (zh) | 2019-04-05 |
Family
ID=55858896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680032998.0A Active CN107750373B (zh) | 2015-06-12 | 2016-04-12 | 使用光线跟踪渲染以生成可见性流 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9773340B2 (zh) |
EP (1) | EP3308359B1 (zh) |
CN (1) | CN107750373B (zh) |
WO (1) | WO2016200479A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113393555A (zh) * | 2020-03-11 | 2021-09-14 | 福建天晴数码有限公司 | 一种基于着色器的屏幕填充率统计方法及其系统 |
CN113934491A (zh) * | 2021-09-30 | 2022-01-14 | 阿里云计算有限公司 | 一种大数据处理方法及装置 |
TWI808007B (zh) * | 2020-07-30 | 2023-07-01 | 美商蘋果公司 | 用以偵測射線與圖形基元之間的相交的設備及方法,以及非暫時性電腦可讀儲存媒體 |
US11875448B2 (en) | 2020-07-30 | 2024-01-16 | Apple Inc. | SIMD group formation techniques during ray intersection traversal |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9607426B1 (en) * | 2013-12-20 | 2017-03-28 | Imagination Technologies Limited | Asynchronous and concurrent ray tracing and rasterization rendering processes |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
US10867429B2 (en) * | 2018-08-10 | 2020-12-15 | Nvidia Corporation | Query-specific behavioral modification of tree traversal |
US10825231B2 (en) * | 2018-12-10 | 2020-11-03 | Arm Limited | Methods of and apparatus for rendering frames for display using ray tracing |
US10930051B2 (en) * | 2018-12-28 | 2021-02-23 | Intel Corporation | Apparatus and method for general ray tracing queries |
US10762686B2 (en) | 2018-12-28 | 2020-09-01 | Intel Corporation | Apparatus and method for a hierarchical beam tracer |
US10719974B1 (en) * | 2018-12-28 | 2020-07-21 | Intel Corporation | Apparatus and method for efficiently storing ray traversal data |
US11080928B2 (en) * | 2019-04-01 | 2021-08-03 | Qualcomm Incorporated | Methods and apparatus for visibility stream management |
US11087431B2 (en) | 2019-11-25 | 2021-08-10 | Qualcomm Incorporated | Methods and apparatus for reducing draw command information |
US11398072B1 (en) * | 2019-12-16 | 2022-07-26 | Siemens Healthcare Gmbh | Method of obtaining a set of values for a respective set of parameters for use in a physically based path tracing process and a method of rendering using a physically based path tracing process |
US11017581B1 (en) | 2020-01-04 | 2021-05-25 | Adshir Ltd. | Method for constructing and traversing accelerating structures |
US11132831B1 (en) | 2020-03-02 | 2021-09-28 | Qualcomm Incorporated | Methods and apparatus for efficient multi-view rasterization |
US11863863B2 (en) * | 2020-07-22 | 2024-01-02 | Unity IPR ApS | System and method for frustum context aware digital asset suggestions |
US20230419597A1 (en) * | 2022-06-28 | 2023-12-28 | Advanced Micro Devices, Inc. | Binning pass with hierarchical depth data determination |
US20240005601A1 (en) * | 2022-06-29 | 2024-01-04 | Advanced Micro Devices, Inc. | Hierarchical depth data generation using primitive fusion |
CN115481476B (zh) * | 2022-09-21 | 2024-03-08 | 如你所视(北京)科技有限公司 | 数据展示方法、装置及存储介质 |
CN116912395B (zh) * | 2023-09-14 | 2024-01-12 | 武汉蜂鸟龙腾软件有限公司 | 基于OpenGL的图形混合渲染方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103946895A (zh) * | 2011-11-16 | 2014-07-23 | 高通股份有限公司 | 基于平铺块的呈现中的镶嵌 |
CN103959338A (zh) * | 2011-11-30 | 2014-07-30 | 高通股份有限公司 | 使用过度绘制跟踪器在图形处理中在直接呈现与分格之间的切换 |
CN104169974A (zh) * | 2012-03-15 | 2014-11-26 | 高通股份有限公司 | 图形处理单元中基于可见性的状态更新 |
US20140354661A1 (en) * | 2013-05-31 | 2014-12-04 | Qualcomm Incorporated | Conditional execution of rendering commands based on per bin visibility information with added inline operations |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636212B1 (en) | 2000-11-14 | 2003-10-21 | Nvidia Corporation | Method and apparatus for determining visibility of groups of pixels |
US8379022B2 (en) * | 2008-09-26 | 2013-02-19 | Nvidia Corporation | Fragment shader for a hybrid raytracing system and method of operation |
US8817074B2 (en) | 2011-02-10 | 2014-08-26 | You I Labs, Inc. | Method of calculating 3D object data within controllable constraints for fast software processing on 32 bit RISC CPUS |
US8902228B2 (en) | 2011-09-19 | 2014-12-02 | Qualcomm Incorporated | Optimizing resolve performance with tiling graphics architectures |
US9424685B2 (en) * | 2012-07-31 | 2016-08-23 | Imagination Technologies Limited | Unified rasterization and ray tracing rendering environments |
US9607426B1 (en) * | 2013-12-20 | 2017-03-28 | Imagination Technologies Limited | Asynchronous and concurrent ray tracing and rasterization rendering processes |
KR102224845B1 (ko) * | 2014-07-22 | 2021-03-08 | 삼성전자주식회사 | 하이브리드 렌더링 방법 및 장치 |
KR20160047317A (ko) * | 2014-10-22 | 2016-05-02 | 삼성전자주식회사 | 하이브리드 렌더링 장치 및 방법 |
-
2015
- 2015-06-12 US US14/738,535 patent/US9773340B2/en active Active
-
2016
- 2016-04-12 CN CN201680032998.0A patent/CN107750373B/zh active Active
- 2016-04-12 WO PCT/US2016/027132 patent/WO2016200479A1/en active Application Filing
- 2016-04-12 EP EP16719172.5A patent/EP3308359B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103946895A (zh) * | 2011-11-16 | 2014-07-23 | 高通股份有限公司 | 基于平铺块的呈现中的镶嵌 |
CN103959338A (zh) * | 2011-11-30 | 2014-07-30 | 高通股份有限公司 | 使用过度绘制跟踪器在图形处理中在直接呈现与分格之间的切换 |
CN104169974A (zh) * | 2012-03-15 | 2014-11-26 | 高通股份有限公司 | 图形处理单元中基于可见性的状态更新 |
US20140354661A1 (en) * | 2013-05-31 | 2014-12-04 | Qualcomm Incorporated | Conditional execution of rendering commands based on per bin visibility information with added inline operations |
Non-Patent Citations (2)
Title |
---|
INGO WALD等: "State of the art in ray tracing animated scenes", 《EUROGRAPHICS TECHNICAL REPORT SERIES》 * |
MAREK VINKLER等: "Visibility driven BVH build up algorithm for ray tracing", 《COMPUTERS & GRAPHICS》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113393555A (zh) * | 2020-03-11 | 2021-09-14 | 福建天晴数码有限公司 | 一种基于着色器的屏幕填充率统计方法及其系统 |
CN113393555B (zh) * | 2020-03-11 | 2023-09-15 | 福建天晴数码有限公司 | 一种基于着色器的屏幕填充率统计方法及其系统 |
TWI808007B (zh) * | 2020-07-30 | 2023-07-01 | 美商蘋果公司 | 用以偵測射線與圖形基元之間的相交的設備及方法,以及非暫時性電腦可讀儲存媒體 |
US11875448B2 (en) | 2020-07-30 | 2024-01-16 | Apple Inc. | SIMD group formation techniques during ray intersection traversal |
CN113934491A (zh) * | 2021-09-30 | 2022-01-14 | 阿里云计算有限公司 | 一种大数据处理方法及装置 |
CN113934491B (zh) * | 2021-09-30 | 2023-08-22 | 阿里云计算有限公司 | 一种大数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3308359B1 (en) | 2021-05-26 |
WO2016200479A1 (en) | 2016-12-15 |
CN107750373B (zh) | 2019-04-05 |
US20160364901A1 (en) | 2016-12-15 |
EP3308359A1 (en) | 2018-04-18 |
US9773340B2 (en) | 2017-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107750373B (zh) | 使用光线跟踪渲染以生成可见性流 | |
CN106233326B (zh) | 图形处理中基于显现目标的灵活显现 | |
CN103959338B (zh) | 使用过度绘制跟踪器在图形处理中在直接呈现与分格之间的切换 | |
CN107111890B (zh) | 使用基于点积的固定功能逻辑的光线-盒相交测试 | |
CN105518742B (zh) | 用于图形处理的任意控制点处的容错抢占机制 | |
US9984492B2 (en) | Efficient hierarchy traversal in ray tracing applications | |
KR101054702B1 (ko) | 광선 추적 이미지 처리 시스템의 픽셀 컬러 결정 | |
CN107209923A (zh) | 图形处理中的混合渲染 | |
US8018453B2 (en) | Deferred acceleration data structure optimization for improved performance | |
US7773087B2 (en) | Dynamically configuring and selecting multiple ray tracing intersection methods | |
CN113781625B (zh) | 适用于光线追踪的基于硬件的技术 | |
US6573893B1 (en) | Voxel transfer circuit for accelerated volume rendering of a graphics image | |
Friedrich et al. | Exploring the use of ray tracing for future games | |
CN104823220B (zh) | 用于图形处理的图形存储器加载掩模 | |
Sabino et al. | A hybrid GPU rasterized and ray traced rendering pipeline for real time rendering of per pixel effects | |
CN105144244B (zh) | 用于基于瓦片的渲染器的查询处理的方法、设备和计算机可读存储媒体 | |
CN108780582B (zh) | 可见性信息修改 | |
US8102389B2 (en) | Box casting using an integrated acceleration data structure | |
Nah et al. | MobiRT: an implementation of OpenGL ES-based CPU-GPU hybrid ray tracer for mobile devices | |
JP5864474B2 (ja) | 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法 | |
Novo Rodríguez | High performance visualization through graphics hardware and integration issues in an electric power grid Computer-Aided-Design application | |
JP6205200B2 (ja) | ソート機能を持つ画像処理装置及び画像処理方法 | |
CN117689793A (zh) | 用于光线追踪的部分加速结构的生成和遍历 | |
Fryazinov et al. | Using GPU for interactive ray casting functionally represented models | |
Nylén et al. | The Red-Black Physics Engine: A Parallel Framework for Interactive Soft Body Dynamics |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |