CN102301401B - 单通道边框计算 - Google Patents
单通道边框计算 Download PDFInfo
- Publication number
- CN102301401B CN102301401B CN201080006307.2A CN201080006307A CN102301401B CN 102301401 B CN102301401 B CN 102301401B CN 201080006307 A CN201080006307 A CN 201080006307A CN 102301401 B CN102301401 B CN 102301401B
- Authority
- CN
- China
- Prior art keywords
- pixel
- graphic element
- target
- value
- rasterizing
- 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.)
- Active
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/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
公开了用于单通道边框计算的实施例。依照一个实施例,单通道边框计算包括渲染第一目标至2维屏幕空间,该第一目标包括至少六个像素。计算进一步包括基于应用程序指定的变换来产生一组几何图元中变换的顶点。计算还包括为一组几何图元中每个变换的顶点生成六个新的点。计算另外包括通过渲染为每个像素生成的至少六个新的点至对应的每个像素,来产生每个像素的初始第三坐标值。计算进一步包括通过栅格化用每个对应像素渲染至每个像素的至少六个新的点,来产生每个像素的栅格化后的值。最后,计算包括基于产生的第三坐标值来为几何图元集合计算边框信息。
Description
背景
在3维渲染中,组成多边形模型的几何图元(例如三角形)可以被投影到2维表面上(例如显示屏区域)。投影的几何图元可以被栅格化和渲染为完成的图像。屏幕扩展报告(SER)是使用投影三角形的2维坐标以为这些三角形的渲染区域计算2维边框的图形功能。计算得到的三角形的边框可以进一步用于三角形碰撞检测、三角形遮挡检测、以及去除冗余的三角形渲染。SER图形功能可以由专门的图形处理单元(GPU)实现,该专门的图形处理单元包括诸如各游戏***中包括的GPU等的专用SER硬件。
尽管一般地使用GPU上的专用SER硬件来实现SER,但是也可能通过在图形渲染期间执行多个处理通道或者将计算转移到中央处理单元(CPU),来在没有专用SER硬件的情况下实现SER功能。
例如,在一些多通道基于区块(tile-based)的渲染过程中,2维渲染目标(例如显示屏区域)可以首先被再划分为一组矩形区块。在矩形上的初始处理通道中,GPU可以通过为每个矩形区块中的三角形计算边框来执行SER功能。在第二处理通道中,GPU可以执行基于区块的渲染。基于区块的渲染过程可以使用屏幕扩展信息,即在初始处理通道期间计算边框以确定实际为每个矩形区块做出贡献的三角形(例如每个矩形区块表面上可见的三角形)。因此,基于区块的渲染可以在过程期间仅渲染有贡献的三角形,而不是每个矩形区块所包含的所有三角形。
概述
提供本概述以便用一种简单的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在确定所要求保护的主题的关键或必要特征,也不旨在用于限制所要求保护的主题的范围。
此处描述的是用于实现使用通用图形处理单元(GPU)来执行2维边框计算的单通道图形渲染过程的实施例。如此处所使用的,通用GPU指不包括专用屏幕扩展报告(SER)硬件的GPU。依照各实施例执行的2维边框计算等效于由在包括专用SER硬件的GPU上执行的SER功能所执行的计算。
作为单通道图形渲染过程一部分的SER等效的2维边框计算的实现,相比于独立的处理通道,可以通过降低处理开销来提高处理效率。或者说,作为单通道图形渲染过程一部分的SER等效的2维边框计算的实现可以降低或去除在由通用GPU处理图形期间给中央处理单元(CPU)施加SER计算的负担的需要。
在一个实施例中,单通道边框计算包括渲染第一目标至2维屏幕空间,该第一目标包括至少六个像素。计算进一步包括基于应用程序指定的变换来产生一组几何图元中变换的顶点。计算还包括为一组几何图元中每个变换的顶点生成六个新的点。计算另外包括通过渲染为每个像素生成的至少六个新的点至每个对应的像素,来产生每个像素的初始第三坐标值。计算进一步包括通过栅格化用每个对应像素渲染至每个像素的至少六个新的点,来产生每个像素的栅格化后(post-rasterization)的值。最后,计算包括基于产生的第三坐标值来为几何图元集合计算边框信息。
通过结合附图时给出的以下详细描述,其它实施例将变得更加显而易见。
附图简述
详细描述包括对附图的参考。在附图中,标号最左边的数字标识了该标号最先出现的附图。在不同附图中使用相同的标号指示相似或相同的项目。
图1是示出依照各实施例,用于执行使用通用图形处理单元(GPU)来提供屏幕扩展报告(SER)等效的2维边框计算功能的单通道图形渲染过程的计算环境的简化框图。
图2是示出依照各实施例,包括通用图形处理单元(GPU)并且提供屏幕扩展报告(SER)等效的2维边框计算功能的一个示例性计算机设备的选定组件的简化框图。
图3是示出依照各实施例,用于执行使用通用图形处理单元(GPU)来提供屏幕扩展报告(SER)等效的2维边框计算功能的单通道图形渲染过程的示例性过程的流程图。
图4示出依照各实施例,用于实现用于执行使用通用图形处理单元(GPU)来提供屏幕扩展报告(SER)等效的2维边框计算功能的单通道图形渲染过程的技术和机制的典型计算***。
详细描述
本公开被定向至使用通用图形处理单元(GPU)来执行屏幕扩展报告(SER)等效的2维边框计算功能的单通道图形渲染实现。屏幕扩展报告(SER)是使用投影三角形的2维坐标以计算这些三角形的渲染区域的2维边框的图形功能。计算得到的三角形的边框可以进一步用于三角形碰撞检测、三角形遮挡检测、以及去除冗余的三角形渲染。在一些计算***中,可以在图形渲染期间由装备有专用SER硬件的GPU来执行SER功能。
在GPU缺少专用SER硬件的其它计算***中,每个计算***的GPU可以通过多通道处理来执行SER功能(例如在实际渲染图形图像之前处理将要渲染的图形图像以得到SER信息)。在另一个计算***中,每个计算***中SER功能的实现可以从缺少专用SER硬件的GPU中转移到计算***的中央处理单元(CPU)。但是,为了执行SER功能的多通道处理和转移到CPU的负担都可以导致另外的处理负担和/或处理低效率。
此处的各实施例允许SER等效的2维边框计算功能的实现作为通用GPU的单通道图形渲染过程的一部分。如此处所使用,通用GPU指不包括专用SER硬件的GPU。使用GPU在单通道渲染过程中执行SER功能的能力可以降低或消除在由通用GPU图形处理期间给中央处理单元(CPU)施加SER计算的负担的需要。此外,可以去除在实际图形渲染通道之前由通用GPU执行专用SER处理通道的需要。这一处理的去除可以提高处理效率、减少处理时间和/或在各个的处理器上的负担。参考图1-4,以下描述了依照各实施例使用通用GPU来执行SER功能的单通道图形渲染实现的各示例。
示例性方案
图1示出依照各实施例,用于执行使用通用图形处理单元(GPU)来提供替代的屏幕扩展报告(SER)功能的单通道图形渲染过程的计算环境100。计算环境100可以包括多个图形处理组件,例如但不限于,顶点着色器102、栅格化器104、像素着色器106、几何着色器108、以及边框计算器110。图形处理组件可以以各种组合来从组成多边形模型的几何图元(例如三角形)中提取出SER信息,并且渲染该几何图元为在2维屏幕空间上显示的完成的图像。如以下参考图2进一步描述的,图形处理组件可以采用计算机可读指令、数据结构、程序模块和/或在通用GPU上执行的其它数据的形式。
在至少一个实施例中,顶点着色器102可以从软件应用程序处接收一组几何图元(例如三角形112)。例如,但不作为限制,软件程序可以是需要渲染图形至显示器的任何程序、计算机可读指令或者数据结构。顶点着色器102可以使用GPU以将3维虚拟空间中每个几何图元112的每个顶点的3维位置变换为诸如屏幕空间114的屏幕空间的2维坐标。在由顶点着色器102处理之后,栅格化器104可以使用GPU来用像素填充几何图元112。随后,像素着色器106可以使用GPU来为组成几何图元112的单独像素计算和提供颜色,以生成渲染目标,例如图像116。
在一些实施例中,在由顶点着色器102处理之后,几何图元112可以在由栅格化器104处理之前由几何着色器108进一步处理。在这些实施例中,几何着色器108可以从几何图元中添加或者删除顶点,以及向几何图元提供体积细节。如进一步所述,边框计算器110可以杠杆调节几何着色器108以方便在图像渲染期间计算几何图元112的渲染区域的2维边框。
在各实施例中,由{T0,T1,...Tn }表示的例如三角形112的一组几何图元可以包括顶点{V0,V1,V2,...V3n,V3n+1,V3n+2,},其中每个V表示3维世界空间中的一个点的。顶点着色器102和像素着色器106可以使用GPU来执行用于渲染这些三角形112为一个或多个渲染目标的应用程序指定的变换和计算,包括渲染目标R0(图像116)。在各示例中,应用程序指定的变换和计算可以由游戏程序、图形编辑软件、视频编辑软件等的屏幕动画请求控制。如以下所述,三角形112的屏幕扩展信息还可以在各实施例中在同一渲染通道中计算。
在同一渲染通道中,边框计算器110可以激活顶点着色器102和像素着色器106使用GPU以创建新的渲染目标R1,其中R1={(x0,y0),(x1,y1),(x2,y2),(x3,y3)...(x5,y5)}。新的渲染目标R1以包括其屏幕坐标即为2维空间中的坐标(x0,y0)...(x5,y5)的六个像素。渲染目标R1可以被初始化为0.0。可以明白在其它实施例中,边框计算器110可以被配置为创建包括多于六个像素的新的渲染目标R1。但是,如以下进一步所述,由于屏幕扩展信息包括六个不同的边界值(即xmin,xmax,ymin,ymax,zmin,zmax),其中每个边界值可以基于像素计算,因此边框计算器110一般不使用多于六个的像素。
在初始化之后,边框计算器110可以上传三角形112到GPU中以用于由顶点着色器102渲染。在各实施例中,顶点着色器102可以在渲染期间为三角形的所有顶点{V0,V1,V2,...V3n V3n+1 V3n+2}执行应用程序指定的变换和计算。在这些实施例中,应用程序指定的变换可以是为渲染目标R0执行的相同的变换和计算。顶点着色器102的这一渲染可以为诸如屏幕空间102的屏幕空间产生变换的顶点118{V’0,V’1,V’2,...V’3n V’3n+1 V’3n+2}。例如,变换的顶点V’i的屏幕坐标可以是(x’i,y’i,z’i),x’i和y’i可以是顶点V’i的屏幕位置,并且z’i可以是顶点V’i在[0.0,1.0]内的深度值。
为了继续计算三角形112的屏幕扩展,边框计算器110可以调用几何着色器108以为每个变换的三角形顶点118生成六个新的点。在至少一个实施例中,为{V’0,V’1,V’2,...V’3n V’3n+1 V’3n+2}中的每个变换的顶点V’i(x’i,y’i,z’i),几何着色器108可以生成六个新的点V’i0(x0,y0,x’i)、V’i1(x1,y1,x1-x’i)、V’i2(x2,y2,y’i)、V’i3(x3,y3,y1-y’i)、V’i4(x4,y4,z’i)、V’i5(x5,y5,1.0-z’i)。随后,每个变换的三角形顶点110的每个新的点可以被几何着色器108以一对一的方式渲染为新的渲染目标R1中对应的像素(例如六个以前生成像素中的一个像素)。几何着色器108可以在边框计算器110的指导下完成这一操作。
如在生成六个新的点中所使用的,x1和y1可以是大的常数值。例如,在至少一个实施例中,渲染目标R0的宽度测量可以当作x1的值,而渲染目标R0的高度测量可以当作y1的值。每个渲染的像素的第三坐标值(即z-值或深度值)可以被存储在z-缓存中。
在渲染之后,每个新的点可以被栅格化器104栅格化为渲染目标R1中对应的像素。随后,边框计算器110可以比较每个像素的当前(即栅格化后)第三坐标值与渲染目标R1冲像素以前的(即栅格化前)第三坐标值。在至少一个实施例中,边框计算器110可以访问z-缓存中的每个像素以前的第三坐标值。
对于每个渲染的像素,如果像素当前的第三坐标值大于像素以前的第三坐标值,则边框计算器110可以存储像素当前的第三坐标值到z-缓存的对应阵列元素中。否则,边框计算器110可以忽略像素当前的第三坐标值,并且保留z-缓存的对应阵列元素中以前的第三坐标值。采用这种方式,通过存储在z-缓存的阵列元素中的最终的第三坐标值,如由r0,r1,r2,r3,r4,r5表示,边框计算器110可以为三角形112计算屏幕扩展信息120:xmin=r0,xmax=x1-r1,ymin=r2,ymax=y1-r3,zmin=r4以及zmax=1.0-r5。在各实施例中,屏幕扩展信息120可以用于渲染目标R0(图像116)的后续渲染,和/或渲染目标R0(图像116)与另外的图像(例如用于碰撞检测、遮挡检测、以及去除冗余渲染)的渲染。
因此,通过在渲染几何图元112(例如三角形)为在2维屏幕空间上显示的完成的图像期间执行屏幕扩展计算,屏幕扩展信息120可以在一个渲染通道中用渲染的图像(例如渲染目标R0)生成。
可以明白尽管在采用三角形形式的几何图元的上下文中描述了提供替代的屏幕扩展报告(SER)功能的单通道图形渲染过程的实现,但是这一实现可以使用采用其它多边形(例如矩形、正方形等)形式的几何图元进一步实现,只要这些多边形包括至少三个顶点。此外,尽管用一组三个几何图元(三角形)在图3中示出渲染过程的实现,应当明白提供SER功能的单通道图形渲染过程的实际实现可以在包括任意数量的几何图元的集合上用类似的方式实现。因此,此处描述的实施例不旨在作为限制。
示例性组件
图2是示出包括通用图形处理单元(GPU)204的示例性计算机设备200的选定组件的框图。图1的计算环境100可以在计算设备200上实现。示例性计算设备200可以依照各实施例,使用通用GPU 204来执行提供屏幕扩展报告等效的边框计算功能的单通道图形渲染过程。计算设备200可以包括一个或多个中央处理单元202和存储器206。存储器206可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等的信息的任何方法或技术实现的易失性和/或非易失性的存储器、可移动和/或不可移动的介质。这一存储器可以包括但不限于,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储、磁带盒、磁带、磁盘存储或其它磁存储设备、RAID存储***、或能用于存储所需信息且能够由计算机***访问的任何其它介质。
图形处理单元(GPU)204可以是用于处理在计算机设备200的显示界面(未示出)上显示的2维和/或3维图形的专用图形渲染设备。在各实施例中,GPU 204可以是包括用于执行SER功能的专用硬件的GPU、或者不包括专用SER硬件的通用GPU中的一个。
存储器206可以存储程序指令。程序指令或模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件和数据结构。选定的程序指令可以包括顶点着色器模块102、栅格化器104、像素着色器106、几何着色器模块108、边框计算器110、边框计算器应用程序接口(API)模块208、用户界面模块210以及数据存储模块212。依次地,边框计算器110可以包括复制渲染组件214、顶点变换组件216、点生成组件218、点渲染组件220、比较组件222以及边框计算组件224。
顶点着色器102可以在GPU 204上执行。顶点着色器102可以将3维虚拟空间中几何图元的每个顶点的3维位置变换为屏幕空间的2维坐标。
栅格化器104可以在GPU 204上执行。栅格化器104可以在几何图元已经由顶点着色器处理过之后,用像素填充几何图元(例如三角形)。
像素着色器模块像素着色器106可以在GPU 204上执行。像素着色器可以向组成几何图元(例如三角形)的个别像素计算和提供颜色,以生成诸如图像116(图1)的渲染的图像。
几何着色器108可以在GPU 204上执行。几何着色器108可以为几何图元添加和删除顶点,并且向几何图元提供体积的细节。
边框计算器模块110可以在GPU 204上执行。例如,边框计算器模块110的复制渲染组件214可以命令顶点着色器102渲染诸如目标R1的包括至少六个像素的目标。顶点变换组件216可以命令顶点着色器102为几何图元的顶点产生诸如变换的顶点118的变换的顶点。点生成组件218可以命令几何着色器108为诸如变换的顶点118的顶点生成点。点渲染组件220可以命令几何着色器108用由复制渲染组件214生成的像素来渲染由点生成组件218生成的点。点渲染组件220还可以将每个像素的初始(例如栅格化前)第三坐标值存储在存储器206中,诸如z-缓存中。同样地,点栅格化组件222可以命令几何着色器108用由复制渲染组件214生成的像素来栅格化由点生成组件218生成的点。点栅格化组件222还可以将每个像素的栅格化后的第三坐标值存储在存储器206中,诸如z-缓存中。
边框计算器模块110的比较模块224可以比较每个像素栅格化前的第三坐标值与其栅格化后的第三坐标值,以确定两个值中较大的一个,并且保留或者存储该值于存储器206中,诸如z-缓存中。计算组件226可以允许通过存储在存储器206中的第三坐标值来计算2维边框信息。
边框计算器应用程序接口(API)模块208可以被软件应用程序调用以激活边框计算器110。采用这种方式,软件应用程序可以在渲染几何图元到2维屏幕空间中的期间,使用边框计算器110来实现SER等效的边框计算功能。因此,几何图元的渲染区域的2维边框计算可以在通过几何图元渲染图像的相同通道中执行。
在各实施例中,边框计算器API模块208可以使得软件应用程序能够杠杆调节边框计算器110以执行单通道图像渲染。单通道图像渲染被配置为使用通用GPU 204来计算SER等效的边框信息。这一单通道图像渲染和SER信息计算可以取代多通道处理和/或将SER计算转移到CPU 202。在GPU 204包括专用SER硬件的其它实施例中,边框计算器API模块208可以使得软件应用程序能够选择性地执行至少某些SER信息计算而不使用专用SER硬件,诸如在硬件故障的情况下。边框计算器API模块208还可以当作向软件应用程序提供一组几何图元的2维边框信息的界面。
用户界面模块210可以通过用户界面(未示出)与用户交互。用户界面可以包括诸如显示器等的数据输出设备,以及一个或多个数据输入设备。数据输入设备可以包括但不限于,小键盘、键盘、鼠标设备、触摸屏、话筒、语音识别包、以及其它合适设备或其它电子/软件选择方法的一个或多个的组合。
用户界面模块210可以被配置为使得用户能够激活或禁用边框计算器110。例如,用户界面模块212可以使得用户能够选择性地禁用边框计算器110以便SER计算由通用GPU 204或者由CPU 202在多个通道中执行。或者,用户界面模块210可以被配置为使显示器向用户输出边框计算器110的当前状态(例如活跃的、被禁用的、错误等)。
数据存储模块212可以被配置为将数据存储在存储器206的一部分中(例如数据库)。在各实施例中,数据存储模块212可以被配置为存储在SER等效的边框计算期间由边框计算器110产生的SER等效的边框信息,以及由边框计算器110产生的任何中间数据。数据存储模块212还可以包括z-缓存。可以明白z-缓存一般被配置为存储生成的像素的深度(第三坐标值)。z-缓存通常被排列为每个元素对应一个像素的2维阵列(例如x-y),阵列中的每个元素可以用像素的当前第三坐标值来连续地更新。
示例性过程
图3示出依照各实施例,用于执行使用通用图形处理单元(GPU)来提供屏幕扩展报告(SER)等效的边框计算功能的单通道图形渲染过程的示例性过程300。图3中的示例性流程300被示出为逻辑流程图中的方框集合,这表示了能够用硬件、软件和两者组合实现的一系列操作。在软件的上下文中,方框表示在由一个或多个处理器执行时执行所述操作的计算机可执行指令。一般地,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。所述操作的顺序不旨在被解释为限制,并且可以以任何顺序和/或并行地组合任何数量的所述方框以实现过程。为了论述的目的,参考图2的示例性计算设备200描述过程,尽管过程可以在其它***体系结构中实现。
在方框302处,顶点着色器102和像素着色器106可以使用图形处理单元(GPU)来执行用于渲染几何图元(例如三角形)为2维屏幕空间中的一个或多个渲染目标图像的应用程序指定的变换和计算,所述一个或多个渲染目标图像可以包括第一渲染目标R0(图1)。
在方框304处,边框计算器110可以激活顶点着色器102和像素着色器106以使用GPU来创建包括六个像素的第二渲染目标图像。第二渲染目标图像可以是渲染目标R1(图1)。在各实施例中,第二渲染目标图像可以包含其屏幕坐标即为2维空间中的坐标(x0,y0)...(x5,y5)的六个像素。在这些实施例中,第二渲染目标可以被初始化为0.0。
在方框306处,边框计算器110可以激活顶点着色器102以基于几何图元为2维屏幕空间产生变换的顶点。在各实施例中,顶点着色器102可以通过执行与在方框302处执行的相同的变换和计算来产生变换的顶点。
在方框308处,边框计算器110可以使用几何着色器108来由每个几何图元(例如三角形)的每个变换的顶点生成六个新的点。
在方框310处,边框计算器110可以使用几何着色器108来渲染每个变换的顶点的新的点为第二渲染目标图像中对应的像素(例如六个以前生成像素中的像素)。在各实施例中,可以采用一对一的方式来完成渲染每个变换的顶点的每个新的点为对应的像素。换句话说,如图1中所示,对于每个变换的顶点,每个新的点被渲染为六个以前生成的像素中的一个唯一的像素。每个渲染的像素的第三坐标值(即z-值或深度值)然后可以被存储在z-缓存的阵列元素中。
在方框312处,边框计算器110可以激活栅格化器104栅格化用每个像素渲染为每个像素的新的点(来自所有变换的顶点)。可以明白栅格化可以造成每个像素第三坐标值的改变。
在方框314处,边框计算器110可以将来自方框310处的像素栅格化前的第三坐标值以及来自方框312处的像素栅格化后的第三坐标值进行比较。
在判定方框316处,边框计算器110可以确定像素栅格化后的第三坐标值是否大于栅格化前的第三坐标值。如果像素栅格化后的第三坐标值大于像素栅格化前的第三坐标值,(判定方框316处的“是”),则过程300可以进行到方框318处。
在方框318处,边框计算器110可以将栅格化后的第三坐标值存储到存储像素栅格化前的第三坐标值的z-缓存的阵列元素中。换句话说,z-缓存中像素栅格化前的第三坐标值被像素栅格化后的值所取代。
返回至方框316,如果边框计算器110确定像素栅格化后的第三坐标值不大于像素栅格化前的坐标值,(判定方框316处的“否”),则过程300可以进行到方框320处。
在方框320处,边框计算器110可以忽略像素栅格化后的第三坐标值,并且保留像素的z-缓存阵列元素中栅格化前的第三坐标值。
在判定方框322处,边框计算器110可以确定是否将为一个或更多另外的像素执行栅格化前和栅格化后的第三坐标值比较。换句话说,边框计算器110可以确定是否已经为至少六个像素中的全部实现了比较。如果边框计算器110确定可以为另外的像素执行比较,(判定方框322处的“是”),则过程300可以循环返回至方框314处。可以重复循环直至已经为至少的像素中的全部实现了栅格化前和栅格化后的第三坐标值比较为止。
然而,如果边框计算器110确定已经为至少六个像素中的全部执行了栅格化前和栅格化后的第三坐标值比较(判定方框322处的“否”),则过程300可以进行到方框324处。
在方框324处,边框计算器110可以基于存储在z-缓存中的像素的第三坐标值来计算边框信息。如上所述,在第三坐标值可以由r0,r1,r2,r3,r4,r5表示的实施例中,边框计算器110可以计算几何图元的2维边框信息为:xmin=r0,xmax=x1-r1,ymin=r2,ymax=y1-r3,zmin=r4,和zmax=1.0-r5。
在方框326处,可以为使用提供计算的边框信息(例如用于碰撞检测、遮挡检测、以及去除冗余渲染)。在各实施例中,计算的边框信息可以是显示的、向应用程序提供的、存储在数据存储中的、或者输入回用于渲染另外的图像的顶点着色器102、栅格化器104和/或像素着色器106中的至少一个。
可以明白可以在与方框302相同的处理通道中实现方框304到324。因此,可以降低处理开销并且提高处理效率。
示例性计算环境
图4示出用于实现用于执行使用通用图形处理单元(GPU)来提供屏幕扩展报告(SER)等效的边框计算功能的单通道图形渲染过程的技术和机制的典型计算***400。如图2中所述的示例性计算设备200可以包括计算***400的一个或多个组件。但是,可以容易地明白本技术和机制可以用其它计算设备、***和环境实现。图4中所示的计算***400仅是计算设备的一个示例,并且不旨在暗示对计算机和网络体系结构的使用或功能的范围的任何限制。计算***400也不应被解释为具有与在示例计算设备中所示的组件的任何一个或组合有关的任何依赖或需求。
在非常基本的配置中,计算***400一般包括至少一个处理单元402、图形处理单元(GPU)404以及***存储器406。取决于计算设备的确切配置和类型,***存储器406可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)、或者两者的某些组合。***存储器406一般包括操作***408、一个或多个程序模块410、并且可以包括程序数据412。操作***408包括基于组件的框架414,该基于组件的框架414可以支持组件(包括属性和事件)、对象、继承、多态、反射,并且提供基于面向对象的组件的应用程序编程接口(API),例如但不限于,由华盛顿州雷德蒙德市的微软公司制作的.NETTM框架的API设备。设备400具有由虚线416划分的非常基本的配置。此外,终端可以有更少的组件,但是将与具有这一基本配置的计算设备交互。
计算***400可以有另外的特征或功能。例如,计算***400还可以包括另外的数据存储设备(可移动和/或不可移动的),例如磁盘、光盘或磁带等。这一另外的存储在图4中由可移动存储418和不可移动存储420示出。计算机存储介质可以包括以用于存储例如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。***存储器406、可移动存储418和不可移动存储420都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或能用于存储所需信息且能够由计算设备400访问的任何其它介质。任何这样的计算机存储介质都可以是设备400的一部分。计算设备400还可以具有输入设备422,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等。还可以包括输出设备424,诸如显示器、扬声器、打印机等。这些设备在本领域中公知并且无需在此处详细讨论。
计算***400还可以包含允许该设备与其它计算设备428诸如通过网络通信的通信连接426。这些网络可以包括有线网络和无线网络。通信连接426是通信介质的若干示例。通信介质可以一般地由计算机可读指令、数据结构、程序模块等包含。
可以明白所示计算***400仅是合适设备的一个示例,并且不旨在暗示对所述各实施例的使用或功能范围的任何限制。适合于各实施例使用的其它公知的计算设备、***、环境和/或配置包括但不限于,个人计算机、服务器计算机、手持式或膝上型设备、多处理器***、基于微处理器的***、机顶盒、游戏控制台、可编程消费者电子产品、网络计算机、小型计算机、大型计算机、包括任何以上***或设备的分布式计算环境等。
作为通用GPU上单通道图形渲染过程一部分的SER等效的边框计算的实现,相比于独立的处理通道,可以通过降低处理开销来提高处理效率。或者说,作为单通道图形渲染过程一部分的SER等效的边框计算的实现可以降低或去除在由通用GPU处理图形期间给中央处理单元(CPU)施加SER计算的负担的需要。因此,依照本公开的各实施例可以提高通用GPU上图像处理和渲染的效率。
结论
最后,尽管用结构特征和/或方法动作专用的语言描述了各实施例,但是可以理解,所附权利要求书中定义的主题不必限于所述具体特征或动作。相反,所述具体特征和动作是作为实现所要求保护的主题的示例形式而公开的。
Claims (14)
1.一种单通道边框计算***,包括:
多个渲染组件,所述多个渲染组件基于一组几何图元(112)来渲染一个或多个目标至2维屏幕空间(114),所述多个渲染组件包括顶点着色器(102)、栅格化器(104)、几何着色器(108)以及像素着色器(106),所述一个或多个目标包括第一目标(116);以及
边框计算器(110),所述边框计算器包括:
复制渲染组件(214),所述复制渲染组件(214)命令顶点着色器(102)渲染第二目标至2维屏幕空间(114),所述第二目标包括至少六个像素;
顶点变换组件(216),所述顶点变换组件(216)命令顶点着色器(102)为该组几何图元(112)产生变换的顶点(118);
点生成组件(218),所述点生成组件(218)命令几何着色器(108)为每个变换的顶点(118)生成至少六个新的点;
点渲染组件(220),所述点渲染组件(220)命令几何着色器渲染为每个变换的顶点(118)生成的至少六个新的点为该至少六个像素中对应的像素,所述每个渲染为对应的像素产生对应像素的初始第三坐标值;
点栅格化组件(222),所述点栅格化组件(222)命令栅格化器(104)栅格化用每个对应像素渲染为每个对应像素的至少六个新的点,所述每个栅格化为对应的像素产生对应像素栅格化后的第三坐标值;
比较组件(224),所述比较组件(224)存储每个像素的初始第三坐标值和栅格化后的第三坐标值中较大的值;以及
计算组件(226),所述计算组件(226)基于至少六个像素的存储的较大值来为该组几何图元(112)计算边框信息。
2.如权利要求1所述的***,其特征在于,还包括接口组件以向应用程序提供计算的边框信息,以用于几何图元碰撞检测、几何图元遮挡检测、或者去除冗余渲染中的至少一个。
3.如权利要求1所述的***,其特征在于,所述边框计算器通过将较大 的值分别表示为r0,r1,r2,r3,r4,r5,并且计算边框信息为:
xmin=r0,xmax=x1-r1,ymin=r2,ymax=y1-r3,zmin=r4,和zmax=1.0-r5,其中x1和y1是常数值,来为几何图元集合计算边框信息。
4.如权利要求3所述的***,其特征在于,所述x1是第一目标的宽度测量,并且所述y1是第一目标的长度测量。
5.如权利要求1所述的***,其特征在于,还包括允许在所述边框计算器中激活或禁用组件之一的应用程序编程接口(API)。
6.如权利要求1所述的***,其特征在于,所述几何图元集合包括多边形。
7.一种单通道边框计算方法,包括:
渲染第一目标至2维屏幕空间(114),所述第一目标包括至少六个像素;
基于应用程序指定的变换产生一组几何图元(108)中变换的顶点(118);
为该组几何图元(108)中每个变换的顶点生成至少六个新的点;
通过渲染为每个像素生成的至少六个新的点为每个对应的像素来产生每个对应像素的初始第三坐标值;
通过栅格化用每个对应像素渲染为每个像素的至少六个新的点来产生每个像素栅格化后的值;
存储每个像素的初始第三坐标值和栅格化后的第三坐标值中较大的值;以及
基于至少六个像素的存储的较大值来为该组几何图元(108)计算边框信息。
8.如权利要求7所述的方法,其特征在于,还包括在渲染第一目标之前,基于该组几何图元以及应用程序指定的变换来渲染一个或多个其它目标至2维屏幕空间,所述一个或多个其它目标包括第二目标,所述渲染一个或多个其它目标在与计算边框信息相同的处理通道中进行。
9.如权利要求7所述的方法,其特征在于,所述为该组几何图元计算边框信息包括将较大的值分别表示为r0,r1,r2,r3,r4,r5,并且计算边框信息为:
xmin=r0,xmax=x1-r1,ymin=r2,ymax=y1-r3,zmin=r4,和zmax=1.0-r5,其中x1和y1是常数值。
10.如权利要求9所述的方法,其特征在于,所述x1是第二目标的宽度测量,并且所述y1是第二目标的长度测量。
11.一种单通道边框计算设备,包括:
用于渲染第一目标至2维屏幕空间(114)的装置,所述第一目标包括至少六个像素;
用于基于应用程序指定的变换产生一组几何图元(108)中变换的顶点(118)的装置;
用于为该组几何图元(108)中每个变换的顶点生成至少六个新的点的装置;
用于通过渲染为每个像素生成的至少六个新的点为每个对应的像素来产生每个对应像素的初始第三坐标值的装置;
用于通过栅格化用每个对应像素渲染为每个像素的至少六个新的点来产生每个像素栅格化后的值的装置;
用于存储每个像素的初始第三坐标值和栅格化后的第三坐标值中较大的值的装置;以及
用于基于至少六个像素的存储的较大值来为该组几何图元(108)计算边框信息的装置。
12.如权利要求11所述的设备,其特征在于,还包括用于在渲染第一目标之前、基于该组几何图元以及应用程序指定的变换来渲染一个或多个其它目标至2维屏幕空间的装置,所述一个或多个其它目标包括第二目标,所述渲染一个或多个其它目标在与计算边框信息相同的处理通道中进行。
13.如权利要求11所述的设备,其特征在于,所述为该组几何图元计算边框信息包括将较大的值分别表示为r0,r1,r2,r3,r4,r5,并且计算边框信息为:
xmin=r0,xmax=x1-r1,ymin=r2,ymax=y1-r3,zmin=r4,和zmax=1.0-r5,其中x1和y1是常数值。
14.如权利要求13所述的设备,其特征在于,所述x1是第二目标的宽度测量,并且所述y1是第二目标的长度测量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/361,676 | 2009-01-29 | ||
US12/361,676 US8217962B2 (en) | 2009-01-29 | 2009-01-29 | Single-pass bounding box calculation |
PCT/US2010/020782 WO2010088029A2 (en) | 2009-01-29 | 2010-01-12 | Single-pass bounding box calculation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102301401A CN102301401A (zh) | 2011-12-28 |
CN102301401B true CN102301401B (zh) | 2013-03-06 |
Family
ID=42353820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080006307.2A Active CN102301401B (zh) | 2009-01-29 | 2010-01-12 | 单通道边框计算 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8217962B2 (zh) |
CN (1) | CN102301401B (zh) |
WO (1) | WO2010088029A2 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2519933B1 (en) * | 2009-12-30 | 2020-04-01 | Telecom Italia S.p.A. | Method for the calculation of the bounding box of vectorial graphic shapes |
US20120243031A1 (en) * | 2011-03-25 | 2012-09-27 | Konica Minolta Laboratory U.S.A., Inc. | Gpu accelerated color analysis and control system |
US9196083B2 (en) * | 2012-01-16 | 2015-11-24 | Intel Corporation | Time-continuous collision detection using 3D rasterization |
US20130257885A1 (en) * | 2012-03-28 | 2013-10-03 | Intel Corporation | Low Power Centroid Determination and Texture Footprint Optimization For Decoupled Sampling Based Rendering Pipelines |
US9280449B2 (en) * | 2012-05-10 | 2016-03-08 | Sap Se | HIT testing of visual objects |
US9858709B2 (en) | 2012-11-29 | 2018-01-02 | Samsung Electronics Co., Ltd. | Apparatus and method for processing primitive in three-dimensional (3D) graphics rendering system |
WO2014108733A1 (en) | 2013-01-08 | 2014-07-17 | Freescale Semiconductor, Inc. | Method and apparatus for estimating a fragment count for the display of at least one three-dimensional object |
JP6066755B2 (ja) * | 2013-02-07 | 2017-01-25 | 株式会社ソニー・インタラクティブエンタテインメント | 描画処理装置および描画処理方法 |
US9659393B2 (en) * | 2013-10-07 | 2017-05-23 | Intel Corporation | Selective rasterization |
US10198856B2 (en) * | 2013-11-11 | 2019-02-05 | Oxide Interactive, LLC | Method and system of anti-aliasing shading decoupled from rasterization |
CN104240284A (zh) * | 2014-10-10 | 2014-12-24 | 重庆邮电大学 | 一种基于Flash游戏图像渲染方法及*** |
US11023993B2 (en) | 2015-06-23 | 2021-06-01 | Nxp Usa, Inc. | Apparatus and method for verifying fragment processing related data in graphics pipeline processing |
US9836808B2 (en) | 2015-06-23 | 2017-12-05 | Nxp Usa, Inc. | Apparatus and method for verifying image data comprising mapped texture image data |
US20160379331A1 (en) * | 2015-06-23 | 2016-12-29 | Freescale Semiconductor, Inc. | Apparatus and method for verifying the integrity of transformed vertex data in graphics pipeline processing |
US10062191B2 (en) * | 2016-03-28 | 2018-08-28 | Nurulize, Inc. | System and method for rendering points without gaps |
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
US10755383B2 (en) * | 2017-09-29 | 2020-08-25 | Apple Inc. | Multi-space rendering with configurable transformation parameters |
GB201809387D0 (en) * | 2018-06-07 | 2018-07-25 | Ucl Business Plc | Perceptual Rasterization For Image Rendering |
US11722439B2 (en) * | 2018-10-01 | 2023-08-08 | Microsoft Technology Licensing, Llc | Bot platform for mutimodal channel agnostic rendering of channel response |
US11043028B2 (en) * | 2018-11-02 | 2021-06-22 | Nvidia Corporation | Reducing level of detail of a polygon mesh to decrease a complexity of rendered geometry within a scene |
CN112449078A (zh) * | 2019-08-29 | 2021-03-05 | 福建天泉教育科技有限公司 | 一种生成缩略图的方法及终端 |
US11436783B2 (en) | 2019-10-16 | 2022-09-06 | Oxide Interactive, Inc. | Method and system of decoupled object space shading |
CN115660935B (zh) * | 2022-10-08 | 2024-03-01 | 芯动微电子科技(珠海)有限公司 | 一种分块渲染模式图形处理方法及*** |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5864342A (en) * | 1995-08-04 | 1999-01-26 | Microsoft Corporation | Method and system for rendering graphical objects to image chunks |
US6072505A (en) * | 1998-04-01 | 2000-06-06 | Real 3D, Inc. | Method and apparatus to efficiently interpolate polygon attributes in two dimensions at a prescribed clock rate |
US6747663B2 (en) * | 2000-08-24 | 2004-06-08 | Sun Microsystems, Inc. | Interpolating sample values from known triangle vertex values |
US7800631B2 (en) * | 2003-03-18 | 2010-09-21 | Qualcomm Incorporated | Triangle rendering using direct evaluation |
GB0307095D0 (en) * | 2003-03-27 | 2003-04-30 | Imagination Tech Ltd | Improvements to a tiling system for 3d rendered graphics |
US20040207622A1 (en) * | 2003-03-31 | 2004-10-21 | Deering Michael F. | Efficient implementation of shading language programs using controlled partial evaluation |
US7218331B2 (en) * | 2003-05-13 | 2007-05-15 | Via Technologies, Inc. | Bounding box in 3D graphics |
US8194071B2 (en) * | 2004-05-24 | 2012-06-05 | St-Ericsson Sa | Tile based graphics rendering |
JP4199159B2 (ja) * | 2004-06-09 | 2008-12-17 | 株式会社東芝 | 描画処理装置、描画処理方法、及び描画処理プログラム |
US7362325B2 (en) * | 2004-12-21 | 2008-04-22 | Qualcomm Incorporated | 2D/3D line rendering using 3D rasterization algorithms |
US8203564B2 (en) * | 2007-02-16 | 2012-06-19 | Qualcomm Incorporated | Efficient 2-D and 3-D graphics processing |
US7791605B2 (en) * | 2007-05-01 | 2010-09-07 | Qualcomm Incorporated | Universal rasterization of graphic primitives |
-
2009
- 2009-01-29 US US12/361,676 patent/US8217962B2/en not_active Expired - Fee Related
-
2010
- 2010-01-12 WO PCT/US2010/020782 patent/WO2010088029A2/en active Application Filing
- 2010-01-12 CN CN201080006307.2A patent/CN102301401B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102301401A (zh) | 2011-12-28 |
US20100188404A1 (en) | 2010-07-29 |
WO2010088029A2 (en) | 2010-08-05 |
WO2010088029A3 (en) | 2010-10-21 |
US8217962B2 (en) | 2012-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102301401B (zh) | 单通道边框计算 | |
US10685152B2 (en) | Systems and methods for fast simulation and visualization of sparse fluids | |
EP3308359B1 (en) | Rendering using ray tracing to generate a visibility stream | |
JP4579262B2 (ja) | 3次元画像のレンダリングにおける早期zテスト方法およびシステム | |
JP3599268B2 (ja) | 画像処理方法、画像処理装置及び記録媒体 | |
CN102365657B (zh) | 在图像中生成阴影的方法 | |
US20080170082A1 (en) | Graphics engine and method of distributing pixel data | |
US20010012018A1 (en) | Occlusion culling for complex transparent scenes in computer generated graphics | |
US20110199377A1 (en) | Method, apparatus and computer-readable medium rendering three-dimensional (3d) graphics | |
KR101609266B1 (ko) | 타일 기반의 랜더링 장치 및 방법 | |
JP2015535978A (ja) | 3次元シーンをレンダリングするためのコンピュータグラフィックス方法 | |
EP3580726B1 (en) | Buffer index format and compression | |
US7064755B2 (en) | System and method for implementing shadows using pre-computed textures | |
US7898549B1 (en) | Faster clears for three-dimensional modeling applications | |
CN111145329A (zh) | 模型渲染方法、***及电子装置 | |
JP5916764B2 (ja) | 仮想環境における隠蔽の推定方法 | |
JPH09179999A (ja) | 画像生成方法およびその装置 | |
JP3889392B2 (ja) | 画像描画装置及び方法、プログラム並びに記録媒体 | |
US20080165208A1 (en) | 3-Dimensional graphic processing apparatus and operating method thereof | |
EP4094230A1 (en) | Hybrid binning | |
MXPA01012052A (es) | Metodo y aparato para generar imagenes.. | |
US11756258B2 (en) | Techniques for ray cone tracing and texture filtering | |
JP7475625B2 (ja) | 3次元空間における入力受付および入力表示方法、プログラム、および3次元空間における入力受付および入力表示装置 | |
US11443475B2 (en) | Techniques for ray cone tracing and texture filtering | |
US20070216685A1 (en) | Scene write-once vector and triangle rasterization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150421 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150421 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |