CN107851330A - 用于图形处理的零像素剔除 - Google Patents
用于图形处理的零像素剔除 Download PDFInfo
- Publication number
- CN107851330A CN107851330A CN201680041182.4A CN201680041182A CN107851330A CN 107851330 A CN107851330 A CN 107851330A CN 201680041182 A CN201680041182 A CN 201680041182A CN 107851330 A CN107851330 A CN 107851330A
- Authority
- CN
- China
- Prior art keywords
- scan lines
- coordinates
- triangle
- determining
- coordinate
- 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
- 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
- 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
- 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
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/12—Indexing scheme for image data processing or generation, in general involving antialiasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
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
一种图形处理单元GPU可包含三角形设置引擎TSE,所述TSE经配置以确定三角形的坐标、基于某一角度来旋转所述三角形的坐标。为了旋转所述坐标,所述TSE生成所述三角形在旋转域中的坐标,且基于所述三角形在所述旋转域中的所述坐标来确定所述旋转域中的包围盒的坐标。所述TSE确定所述旋转域中的第一多个平行扫描线和所述旋转域中的第二多个平行扫描线。所述第一和第二多个扫描线垂直。所述TSE确定所述包围盒坐标是否位于两个相邻扫描线内。如果所述包围盒坐标位于所述两个相邻扫描线内,那么所述TSE从所述场景移除所述三角形。
Description
技术领域
本发明涉及用于图形处理的技术。
背景技术
可由图形处理单元(GPU)产生用于显示的视觉内容,例如用于图形用户接口和视频游戏的内容。GPU可将二维或三维(3D)对象转换为可显示的二维(2D)像素表示。将关于3D对象的信息转换为可显示的位图被称为像素渲染,且其要求相当大的存储器和处理能力。在过去,3D图形能力仅在强大工作站上可用。然而,现在3D图形加速器常见于个人计算机(PC)中以及嵌入式装置中,例如智能电话、平板计算机、便携式媒体播放器、便携式视频游戏控制台及其类似者。通常,与常规PC相比,嵌入式装置具有较小计算能力和存储器容量。由此,3D图形渲染技术中增大的复杂性在此类技术实施于嵌入式系统时带来困难。
发明内容
本发明描述用于在图形处理单元(GPU)中执行零像素剔除的技术。在本发明的实例中,GPU可被配置成剔除(移除)在经渲染的情况下将不可见的图元。GPU可通过执行称为“零像素剔除”的技术来剔除具有零像素的图元。在零像素剔除期间,GPU可基于图元是否与所述GPU所生成的扫描线相交来剔除所述图元。本发明的所述技术通过使用未定向成与x轴和y轴相切的扫描线来提高零像素剔除的效率。
在本发明的一个实例中,一种用于剔除场景的图元的方法包括:确定三角形的坐标,其中所述三角形是待由GPU渲染的场景的部分;基于某一角度来旋转所述三角形的所述坐标,其中旋转所述三角形的所述坐标生成所述三角形在旋转域中的坐标;基于所述三角形在所述旋转域中的所述坐标来确定所述旋转域中的包围盒的坐标;确定所述旋转域中的第一多个平行扫描线;确定所述旋转域中的第二多个平行扫描线,其中所述第二多个平行扫描线垂直于所述第一多个平行扫描线;确定所述旋转域中的所述包围盒坐标是否位于所述第一多个扫描线中的第一两个相邻扫描线内或所述第二多个扫描线中的第二两个相邻扫描线内;响应于确定所述包围盒坐标位于所述第一两个相邻扫描线或所述第二两个相邻扫描线内,从所述场景移除所述三角形。
在本发明的另一实例中,一种装置包括图形处理单元(GPU),所述GPU被配置成:确定三角形的坐标,其中所述三角形是待由所述GPU渲染的场景的部分;基于某一角度来旋转所述三角形的所述坐标,其中为了旋转所述三角形的所述坐标,至少一个处理器经配置以生成所述三角形在旋转域中的坐标;基于所述三角形在所述旋转域中的所述坐标来确定所述旋转域中的包围盒的坐标;确定所述旋转域中的第一多个平行扫描线;确定所述旋转域中的第二多个平行扫描线,其中所述第二多个平行扫描线垂直于所述第一多个平行扫描线;确定所述旋转域中的所述包围盒坐标是否位于所述第一多个扫描线中的第一两个相邻扫描线内或所述第二多个扫描线中的第二两个相邻扫描线内;以及响应于确定所述包围盒坐标位于所述第一两个相邻扫描线或所述第二两个相邻扫描线内,从所述场景移除所述三角形。
在本发明的另一实例中,一种装置包括:用于确定三角形的坐标的装置,其中所述三角形是待渲染的场景的部分;用于基于某一角度来旋转所述三角形的所述坐标的装置,其中所述用于旋转所述三角形的所述坐标的装置包括用于生成所述三角形在旋转域中的坐标的装置;用于基于所述三角形在所述旋转域中的所述坐标来确定所述旋转域中的包围盒的坐标的装置;用于确定所述旋转域中的第一多个平行扫描线的装置;用于确定所述旋转域中的第二多个平行扫描线的装置,其中所述第二多个平行扫描线垂直于所述第一多个平行扫描线;用于确定所述旋转域中的所述包围盒坐标是否位于所述第一多个扫描线中的第一两个相邻扫描线内或所述第二多个扫描线中的第二两个相邻扫描线内的装置;以及用于响应于确定所述包围盒坐标位于所述第一两个相邻扫描线或所述第二两个相邻扫描线内而从所述场景移除所述三角形的装置。
在本发明的另一实例中,一种非暂时性计算机可读存储媒体包含其上存储的指令,所述指令在执行时使至少一个处理器:确定三角形的坐标,其中所述三角形是待由GPU渲染的场景的部分;基于某一角度来旋转所述三角形的所述坐标,其中使所述至少一个处理器旋转所述三角形的所述坐标的指令使所述至少一个处理器生成所述三角形在旋转域中的坐标;基于所述三角形在所述旋转域中的所述坐标来确定所述旋转域中的包围盒的坐标;确定所述旋转域中的第一多个平行扫描线;确定所述旋转域中的第二多个平行扫描线,其中所述第二多个平行扫描线垂直于所述第一多个平行扫描线;确定所述旋转域中的所述包围盒坐标是否位于所述第一多个扫描线中的第一两个相邻扫描线内或所述第二两个相邻扫描线中的第二两个相邻扫描线内;以及响应于确定所述包围盒坐标位于所述第一两个相邻扫描线或所述第二多个相邻扫描线内,从所述场景移除所述三角形。
在附图和下文描述中阐述本发明的一或多个实例的细节。本发明的其它特征、目标和优势将从所述描述和图式以及从权利要求书中显而易见。
附图说明
图1是展示经配置以使用本发明的技术的实例计算装置的框图。
图2是更详细地展示图1的组件的框图。
图3是展示执行零像素剔除的实例过程的概念图。
图4是展示根据本发明的技术执行零像素剔除的实例过程的概念图。
图5是以额外细节展示根据本发明的技术的执行零像素剔除的纹理的实例的概念图。
图6是展示根据本发明的技术执行零像素剔除和多重取样抗锯齿的实例的概念图。
图7是展示本发明的零像素剔除的实例方法的流程图。
图8是展示本发明的实例方法的流程图。
具体实施方式
GPU可渲染由多边形组成的三维场景和/或处理二维像素阵列。GPU可将一或多个纹理应用和渲染到多边形中的每个多边形。在图像渲染过程期间,GPU可经配置以执行各种剔除操作以移除具有在经渲染的情况下将不可见的像素的图元。剔除操作的实例包含:背面剔除、视锥剔除、视口剔除和零像素剔除。本发明的技术涉及零像素剔除。零像素剔除是其中GPU确定三角形的像素是否在经渲染时因为与图元相关联的像素将小于一个像素(即,将为零个像素大小)而将不可见的过程。下文将更详细地论述零像素剔除。
在一些实例中,为了执行零像素剔除,GPU生成一系列水平和竖直扫描线。对于给定图元,GPU生成围绕所述图元的包围盒。GPU接着确定包围盒是否拟合于两个相邻水平扫描线或两个相邻扫描线内。扫描线包括一组垂直的竖直和水平线。在本发明中,扫描线可对应于用于输出的像素值或样本值的位置。如果包围盒完全拟合于两个相邻水平扫描线或相邻竖直扫描线内,那么GPU确定图元在经渲染的情况下将具有零个可见像素。基于确定图元将具有零个可见像素,GPU可从待渲染的场景剔除(移除)所述图元。通过移除不可见图元,GPU可增大渲染性能,这是因为剔除的零像素图元将不被GPU光栅化。
本发明提出用于通过配置GPU以基于某一角度而旋转图元来提高零像素剔除技术的技术。旋转图元的坐标会使所述坐标处于经旋转的u-v域中。在旋转图元之后,GPU经配置以生成围绕经旋转的图元坐标的包围盒。如果图元位于u-v域中的两个平行扫描线内,则GPU剔除所述图元。u-v域中的平行扫描线彼此垂直而定向,但相对于传统零像素剔除的x-y扫描线成角度地定向。下文将更详细地描述本发明的技术的额外实例。
图1是说明可用于实施本发明的用于在图形处理单元(GPU)中执行零像素剔除的技术的实例计算装置2的框图。计算装置2可包括例如个人计算机、桌上型计算机、膝上型计算机、平板计算机、计算机工作站、视频游戏平台或控制台、例如蜂窝式电话或卫星电话的移动电话、陆线电话、因特网电话、例如便携式视频游戏装置或个人数字助理(PDA)的手持式装置、个人音乐播放器、视频播放器、显示装置、电视、电视机顶盒、服务器、中间网络装置、主机计算机、任何移动装置,或处理和/或显示图形数据的任何其它类型的装置。
如图1的实例中所说明,计算装置2可包含用户输入接口4、中央处理单元(CPU)6、存储器控制器8、系统存储器10、GPU 12、图形存储器14、显示接口16、显示器18以及总线20和22。应注意,在一些实例中,图形存储器14可与GPU 12“在芯片上”。即,图形存储器14可在不使用任何共享总线(例如,总线20或总线22)的情况下可由GPU 12存取。在一些情况下,图1中展示的CPU 6、存储器控制器8、GPU 12和图形存储器14以及可能显示接口16可例如在芯片上系统(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、Direct3DAPI、X3D API、RenderMan API、WebGL API或任何其它公共或专有标准图形API。为了处理图形渲染指令,CPU 6可将一或多个图形渲染命令发布到GPU 12(例如,通过GPU驱动程序7)以使得GPU 12执行图形数据的渲染中的一些或全部。在一些实例中,待渲染的图形数据可包含例如点、线、三角形、四边形、三角带等的图形图元的列表。
在其它实例中,在CPU 6上执行的软件指令可使GPU 12执行通用着色器以用于执行适用于通过GPU硬件的高度并行性质执行的较通用计算。此类通用应用程序可以是所谓的通用图形处理单元(GPGPU)且可符合通用API,例如OpenCL。
存储器控制器8有助于进出系统存储器10的数据传送。举例来说,存储器控制器8可接收存储器读取和写入命令,且相对于系统存储器10服务此类命令以便为计算装置2中的组件提供存储器服务。存储器控制器8经由存储器总线22以通信方式耦合到系统存储器10。虽然在图1中将存储器控制器8说明为与CPU 6和系统存储器10两者分开的处理模块,但在其它实例中,存储器控制器8的一些或全部功能性可在CPU 6和系统存储器10中的一或两者上实施。
系统存储器10可存储可存取以由CPU 6执行的程序模块和/或指令和/或由在CPU6上执行的程序使用的数据。举例来说,系统存储器10可存储窗口管理器应用程序,其由CPU6使用以在显示器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可包含经配置以并行方式对多个顶点或像素进行操作的多个处理元件。在一些情况下,相比于使用CPU 6直接将场景绘制到显示器18,GPU 12的高度并行性质允许GPU 12更快速地将图形图像(例如,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通过消除需要GPU 12经由总线20读取和写入数据(这可能经历繁重的总线业务)而以更高效的方式操作。然而,在一些情况下,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可以是经由缆线或无线链路连接至个人计算机的计算机监视器或平板显示器。
根据本发明的一个实例,如将在下文更详细地解释,GPU 12可经配置以:确定三角形的坐标,其中所述三角形是待通过GPU 12渲染的场景的部分;基于某一角度来旋转所述三角形的所述坐标,其中为了旋转所述三角形的各点,GPU 12经配置以生成所述三角形在旋转域中的坐标;基于所述三角形在旋转域中的坐标来确定所述旋转域中的包围盒的坐标;确定旋转域中的第一多个平行扫描线;确定旋转域中的第二多个平行扫描线,其中第二多个平行扫描线垂直于第一多个平行扫描线。GPU 12可经进一步配置以确定旋转域中的包围盒坐标是否位于第一多个扫描线或第二多个扫描线中的两个相邻扫描线内。响应于确定包围盒坐标位于两个相邻扫描线内,GPU 12可从所述场景移除所述三角形。应理解,本发明的技术可通过GPU 12的固定功能硬件单元执行,可通过GPU 12的执行软件的可编程硬件单元执行,或两者的组合。
图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、光栅化级36、三角形设置引擎37和像素处理管线39。三角形设置引擎37进一步包含零像素剔除引擎38。图形处理管线30中的组件中的每一个可实施为固定功能组件、可编程组件(例如,作为在可编程着色器单元上执行的着色器程序的部分),或实施为固定功能和可编程组件的组合。可供CPU 6和GPU 12使用的存储器可包含系统存储器10和帧缓冲器15。帧缓冲器15可以是系统存储器10的一部分或可与系统存储器10分开。帧缓冲器15可存储经渲染图像数据。
软件应用程序24可以是利用GPU 12的功能性的任何应用程序。举例来说,软件应用程序24可以是GUI应用程序、操作系统、便携式制图应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序,或可利用GPU的另一类型的软件应用程序。
软件应用程序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将经渲染数据输出到与显示装置相关联的帧缓冲器15。图形处理管线30可经配置以在多种不同的渲染模式的一者中执行,包含分格渲染模式和直接渲染模式。
GPU驱动程序7可经进一步配置以编译一或多个着色器程序且将所编译的着色器程序下载到GPU 12内所含的一或多个可编程着色器单元上。可用高级着色语言编写着色器程序,例如OpenGL着色语言(GLSL)、高级着色语言(HLSL)、C for Graphics(Cg)着色语言等。经编译的着色器程序可包含控制GPU 12内的可编程着色器单元的操作的一或多个指令。举例来说,着色器程序可包含顶点着色器程序和/或像素着色器程序。顶点着色器程序可控制可编程顶点着色器单元或统一着色器单元的执行,且包含指定一或多个逐顶点操作的指令。像素着色器程序可包含控制可编程像素着色器单元或统一着色器单元的执行的像素着色器程序,且包含指定一或多个逐像素操作的指令。
图形处理管线30可经配置以经由GPU驱动程序7从CPU 6接收一或多个图形处理命令,且执行所述图形处理命令以生成可显示图形图像。如上文所论述,图形处理管线30包含一起操作以执行图形处理命令的多个级。然而,应注意,此类级不需要一定实施在单独的硬件块中。举例来说,几何处理级34和像素处理管线39的部分可实施为统一着色器单元的部分。同样,图形处理管线30可经配置以在多种不同的渲染模式的一者中执行,包含分格渲染模式和直接渲染模式。
命令引擎32可接收图形处理命令且配置图形处理管线30内的其余处理级以执行用于实行图形处理命令的各种操作。图形处理命令可包含例如绘制命令和图形状态命令。绘制命令可包含顶点规格命令,所述顶点规格命令指定一或多个顶点的位置坐标,且在一些情况下,指定与所述顶点中的每一个相关联的其它属性值,例如,色彩坐标、法向量、纹理坐标和雾坐标。图形状态命令可包含图元类型命令、变换命令、光照命令等。图元类型命令可指定待渲染图元的类型和/或顶点如何组合以形成图元。变换命令可指定待在顶点上执行的变换的类型。光照命令可指定图形场景内的不同光的类型、方向和/或放置。命令引擎32可使几何处理级34相对于与一或多个所接收命令相关联的顶点和/或图元执行几何处理。
几何处理级34可在一或多个顶点上执行逐顶点操作和/或图元设置操作,以便生成用于光栅化级36的图元数据。每一顶点可与一组属性(例如,位置坐标、色彩值、法向量和纹理坐标)相关联。几何处理级34根据各种逐顶点操作修改这些属性中的一或多个。举例来说,几何处理级34可对顶点位置坐标执行一或多个变换以产生经修改的顶点位置坐标。几何处理级34可例如将建模变换变换、视见变换、投影变换、ModelView变换、ModelViewProjection变换、视口变换和深度范围缩放变换中的一或多者应用于顶点位置坐标以生成经修改的顶点位置坐标。在一些情况下,顶点位置坐标可以是模型空间坐标,且经修改的顶点位置坐标可以是屏幕空间坐标。可在所述建模、视见、投影和视口变换的应用之后获得屏幕空间坐标。在一些情况下,几何处理级34还可对顶点执行逐顶点光照操作以生成顶点的经修改的色彩坐标。几何处理级34还可执行其它操作,包含例如法线变换、法线标准化操作、视体(view volume)裁剪、均匀分割和/或背面剔除操作。在各种实例中,几何处理级34可执行滤光。
几何处理级34可产生包含定义待光栅化的图元的一组一或多个经修改的顶点的图元数据以及指定所述顶点如何组合以形成图元的数据。所述经修改的顶点中的每一个可包含例如与所述顶点相关联的经修改的顶点位置坐标和经处理的顶点属性值。图元数据可共同对应于待由图形处理管线30的进一步级光栅化的图元。在概念上,每一顶点可对应于图元的两个边缘会合的图元拐角。几何处理级34可将图元数据提供到光栅化级36以用于进一步处理。
在一些实例中,几何处理级34的全部或部分可由在一或多个着色器单元上执行的一或多个着色器程序实施。举例来说,在此类实例中,几何处理级34可由顶点着色器、几何着色器或其任何组合实施。在其它实例中,可将几何处理级34实施为固定功能硬件处理管线,或实施为固定功能硬件与在一或多个着色器单元上执行的一或多个着色器程序的组合。
光栅化级36可经配置以从几何处理级34接收表示待光栅化图元的图元数据,且光栅化所述图元以生成对应于经光栅化图元的多个源像素。在一些实例中,光栅化级36可确定哪些屏幕像素位置由待光栅化的图元覆盖,且生成用于被确定由图元覆盖的每一屏幕像素位置的源像素。光栅化级36可通过使用所属领域的技术人员已知的技术来确定哪些屏幕像素位置由图元覆盖,所述已知的技术例如边缘遍历(edge-walking)技术、评估边缘方程式等。光栅化级36可将所得源像素提供到像素处理管线39以用于进一步处理。光栅化级36还可经配置以执行如本文所描述的抗锯齿技术。举例来说,光栅化级36可经配置以执行多重取样抗锯齿(MSAA)、超级取样抗锯齿(SSAA)和/或本文未明确描述的其它抗锯齿技术。
由光栅化级36生成的源像素可对应于屏幕像素位置,例如,目的地像素,且与一或多个色彩属性相关联。针对特定经光栅化图元所生成的所有源像素可称为与经光栅化图元相关联。由光栅化级36确定的待由图元覆盖的像素可在概念上包含表示所述图元的顶点的像素、表示所述图元的边缘的像素和表示所述图元的内部的像素。
光栅化级36包含三角形设置引擎(TSE)37。三角形设置引擎(TSE)37可经配置以接收图元,执行图元设置、浮点到定点转换、裁剪、视口变换和剔除。TSE 37可经配置以生成供光栅化级36使用的变量,包含包围盒和边缘方程式。TSE 37还可生成用于渲染的重心系数I、J、Z和W。TSE 37还包含零像素剔除引擎38。零像素剔除引擎38可经配置以执行本发明的零像素剔除技术。
像素处理管线39经配置以接收与经光栅化图元相关联的源像素且对源像素执行一或多个逐像素操作。可通过像素处理管线39执行的逐像素操作包含例如阿尔法测试、纹理映射、色彩计算、像素着色、逐像素光照、雾处理、混合、像素所有权测试、源阿尔法测试、模板测试、深度测试、剪刀测试和/或点刻操作。另外,像素处理管线39可执行一或多个像素着色器程序以执行一或多个逐像素操作。由像素处理管线39产生的所得数据可在本文中称作目的地像素数据,且存储在帧缓冲器15中。目的地像素数据可与帧缓冲器15中具有与经处理的源像素相同的显示位置的目的地像素相关联。目的地像素数据可包含例如色彩值、目的地阿尔法值、深度值等数据。
帧缓冲器15存储用于GPU 12的目的地像素。每一目的地像素可与唯一的屏幕像素位置相关联。在一些实例中,帧缓冲器15可存储每个目的地像素的色彩分量和目的地阿尔法值。举例来说,帧缓冲器15可存储每一像素的红、绿、蓝、阿尔法(RGBA)分量,其中“RGB”分量对应于色彩值且“A”分量对应于目的地阿尔法值。虽然将帧缓冲器15和系统存储器10说明为单独的存储器单元,但在其它实例中,帧缓冲器15可以是系统存储器10的部分。
在根据本发明的技术的实例中,GPU 12的TSE 37可经配置以:确定三角形的坐标,其中所述三角形是待通过GPU 12渲染的场景的部分;基于某一角度而旋转所述三角形的坐标。为了旋转三角形的坐标,TSE 37可经配置以生成所述三角形在旋转域中的坐标,且基于所述三角形在旋转域中的坐标而确定旋转域中的包围盒的坐标。TSE 37可经进一步配置以确定所述旋转域中的第一多个平行扫描线,且确定所述旋转域中的第二多个平行扫描线。第二多个平行扫描线垂直于第一多个平行扫描线。TSE 37可经进一步配置以确定所述旋转域中的包围盒坐标是否位于第一多个扫描线中的两个相邻扫描线内或第二多个扫描线内的两个相邻扫描线内。响应于确定包围盒坐标位于两个相邻扫描线内:TSE 37可从场景移除所述三角形。
图3是展示执行零像素剔除的实例过程的概念图。图3包含四个三角形40、42、44和46。在x-y笛卡尔(Cartesian)坐标系中说明三角形40、42、44和46。TSE 37生成彼此垂直的竖直扫描线(例如扫描线41)和水平扫描线(例如扫描线43)。所述扫描线被说明为平行于x和y轴且以规则间隔发生的额外线。扫描线的相交点对应于GPU 12将输出到图形渲染管线中的后续级的像素的位置。虽然图3的实例展现垂直的扫描线,但应理解,在其它实例中,还可使用非垂直的扫描线。举例来说,x轴可旋转一个角度,且y轴可旋转另一不同的角度。
当执行零像素剔除时,TSE 37确定图元(例如三角形40、42、44和46中的一个)是否位于一组相邻竖直扫描线或一组相邻水平扫描线内。如果图元仅位于相邻的一组竖直或水平扫描线内,则TSE 37确定图元的像素将不可见。图元的像素将不可见,这是因为图元的像素将如此小以至于无法促成经渲染帧的可见像素。如果图元将不可见,则TSE 37可从待渲染的场景剔除(移除)所述图元。从场景移除图元允许GPU 12避免执行与渲染所述图元相关的额外光栅化计算,且因此增大渲染性能。
为了更快速地确定三角形图元是否可见,TSE 37可确定包围每一三角形图元的包围盒。包围盒是矩形,其具有等于三角形的两个最远点之间的距离(即宽)的宽度和等于三角形的高的高度。为了易于理解,说明了对应于三角形42的样本包围盒48。如将在下文更详细地论述,每一包围盒具有四个坐标。
在图3的实例中,TSE确定三角形40位于两个相邻水平扫描线内且因此可剔除,这是因为所述三角形将产生零个经渲染的像素。类似地,TSE 37确定三角形42位于两个竖直相邻的扫描线内,且因此TSE 37可剔除三角形42。因为三角形44和46成某一角度,且与两个相邻水平扫描线和两个相邻竖直扫描线相交,所以尽管三角形44和46小得足以在经渲染的情况下将不对应于任何像素,但TSE 37无法确定三角形44和46是否应被剔除。
图4是展示根据本发明的技术执行零像素剔除的实例过程的概念图。鉴于图3,相对于图3所描述的过程描述了零像素剔除技术,这些技术并不移除成角度定向的零像素图元,因为扫描线是水平地和竖直地定向且不成角度。在图4的实例中,TSE 37基于某一角度而旋转图元的坐标以生成旋转域中的图元。通过旋转图元,且通过关联用于零像素剔除的扫描线,根据所述技术配置的GPU可在执行零像素剔除时所剔除的图元的数目。
图4说明如图3中所说明的相同三角形40、42、44和46。然而,不同于图3,图4还包含例如扫描线60、62的垂直扫描线,其被说明为虚线,且相对于实线水平和竖直扫描线成角度地定向。零像素剔除引擎38可基于有角度的扫描线60和62等剔除图元。为了执行根据本发明的技术的零像素剔除,TSE 37基于某一角度旋转三角形40、42、44、46的坐标。在各种实例中,所述角度可以是45度。然而,在其它实例中,可使用任一其它角度或角度组合。
旋转三角形40、42、44、46的x-y坐标致使所述坐标置于称为“u-v”域的域中。x-y坐标系和u-v坐标均可包括左手笛卡尔坐标系。左手笛卡尔坐标系大体上包含指向右侧的x(u)分量。然而,不同于传统的左手笛卡尔坐标系,y(v)坐标向下(即y值在沿着y轴向下移动时增大)而非向上指向。所述u-v域还是二维笛卡尔域。本发明中的u-v域和坐标相对于x-y域旋转某一角度。旋转的角度(θ)相对于x轴顺时针定向。
TSE 37可应用变换矩阵以将三角形40、42、44、46的坐标旋转到u-v域中。所述变换矩阵可包括:
其中x和y是三角形的x坐标和y坐标,且u和v是u-v域经旋转坐标。在旋转坐标之后,TSE 37可确定三角形40、42、44、46中的每一个的包围盒的坐标。出于举例目的,同样说明了对应于三角形42的包围盒48(此次具有实线边框)。
在确定包围盒坐标之后,TSE 37接着确定与三角形40、42、44或46相关联的包围盒中的任一个是否位于u-v域中的两个相邻水平扫描线内或两个相邻竖直扫描线内。在图4的实例中,u-v域的扫描线说明为有角度的虚线。归因于TSE 37应用的旋转,将u-v域扫描线说明为相对于x-y轴成角度。因此,在图4的实例中,TSE 37确定三角形44和46的包围盒完全位于相邻平行有角度的扫描线内。
TSE 37确定三角形40和42并未完全位于相邻平行有角度的扫描线内。在此实例中,TSE 37不剔除三角形40和42。然而,在一些实例中,TSE 37可经配置以执行x-y域中和经旋转的x-y域中的剔除。举例来说,TSE 37可经配置以针对经旋转的x-y域中的多个不同角度同时剔除图元。基于确定三角形46和44位于u-v域中的平行相邻扫描线内,TSE 37可因三角形44和46在经渲染的情况下将不对应于任何像素而将所述三角形剔除。在其它实例中,TSE 37可经配置以确定图元的形状、指派角度给所述图元(例如,在非经旋转的x-y域中)且基于所指派的角度执行剔除。
图5是以额外细节展示根据本发明的技术的执行零像素剔除的纹理的实例的概念图。在图5的实例中,TSE 37已基于给定旋转角而确定要置于u-v域中的三角形61的坐标。有角度的虚线中的每一个对应于扫描线。相邻扫描线中的每一个对应于所述域中的一个单元相对于前一平行相邻扫描线的递增或递减。因此,对于给定扫描线k,相邻扫描线将具有值k+1或k-1。
在x-y域中,三角形61具有左下顶点(具有x-y坐标(x1,y1))、中间顶点(具有坐标(x0,y0))和右上顶点坐标(x2,y2)。在将旋转矩阵应用于三角形61的先前坐标之后,对应于(v1,v1)的所得u-v坐标是(x1+y1,x1-y1)。(u0,v0)的u-v坐标对应于(x0+y0,x0-y0),且(u2,v2)的坐标对应于(x2+y2,x2-y2)。
在确定三角形61的经旋转u-v坐标之后,TSE 37确定包围三角形61的包围盒的四个拐角的u-v坐标。TSE 37将包围盒的四个坐标确定为:(Umin,Vmin)、(Umax,Vmin)、(Umax,Vmax)和(Umin,Vmax),其中Umax和Umin分别是三角形的最大和最小u坐标且Vmin和Vmax是三角形的最大和最小v坐标。基于包围盒的坐标,TSE 37确定包围盒是否拟合于两个相邻平行水平或两个相邻竖直u-v域扫描线内。在一些实例中,TSE37可通过确定Umax与Umin的差的绝对值是否大于小于一来确定包围盒是否在两个相邻扫描线内。TSE 37还可确定Vmax与Vmin的差的绝对值是否小于一。如果前述差值中的任一个小于一,则包围盒拟合于两个相邻扫描线内。如果包围盒拟合于两个相邻扫描线内,TSE 37可接着剔除三角形图元,即此实例中的三角形61。
图6是展示根据本发明的技术执行结合多重取样抗锯齿的零像素剔除的实例的概念图。在图6的实例中,两个三角形82和84包括场景的图元。相对于笛卡尔x-y轴以及对应于有角度的虚线和实线扫描线的u-v域说明所述图元。在图6的实例中,扫描线彼此平行或垂直。
当渲染图6的场景时,GPU 12对场景的图元执行抗锯齿。GPU 12可使用多重取样抗锯齿(MSAA)、超级取样抗锯齿(SSAA)和/或本文未明确描述的另一抗锯齿技术来对场景执行抗锯齿。
当对场景执行抗锯齿时,GPU 12基本上在比用于所述场景的最终显示分辨率更高的(超级取样)分辨率下渲染所述场景。更确切地说,GPU 12确定用于待在最终场景中渲染的每一像素的多个样本。GPU 12对与所述像素中的每一个相关联的样本进行下取样(即,组合)以确定待渲染的最终像素值。在图6的实例中,确定每一像素的4个样本。将单个像素内的样本位置中的每一个说明为每一扫描线包围的盒子内的圆形。现将简要描述各种抗锯齿技术。
SSAA是一种性能更强的抗锯齿技术,其中GPU在无需确定待下取样的样本是否属于同一图元的情况下以及无需考虑样本是否位于图元边缘的情况下执行下取样。MSAA类似于SSAA。然而,作为MSAA中的通则且不同于SSAA,着色器单元仅对覆盖多于一个图元的像素执行某些抗锯齿计算(例如,下取样)。与其中对每个像素执行下取样的SSAA相比,根据MSAA减小下取样计算减小了MSAA的性能代偿。
如图6中所说明,当GPU 12执行抗锯齿时,GPU 12对场景的每一像素进行多次取样。在图6中,举例来说,每一像素被取样四次,这可对应于4×MSAA。当执行结合抗锯齿的零像素剔除时,TSE 37例如使用上文所描述的旋转矩阵而基于某一角度来旋转三角形80的坐标以在u-v域中安置所述三角形坐标。
然而,并非如在图4到5中一样基于像素位置的相交点生成扫描线,TSE 37在u-v域中生成与每一像素的样本位置相交的扫描线。有角度的实线和虚线扫描线是与样本位置相交的此类扫描线的实例。如上文相对于图3到5所描述,如果针对图元生成的包围盒位于两个平行扫描线内,TSE 37可剔除所述图元。在图6的实例中,三角形82并非在两个相邻扫描线内。因此,TSE 37不能剔除三角形82。三角形80位于两个相邻扫描线内,因此TSE 37可剔除三角形80。
归因于在执行抗锯齿时针对每一像素生成的额外样本以及对应的额外扫描线和其相关联角度,TSE 37可在结合执行抗锯齿执行零像素剔除时使用不同旋转角度。举例来说,TSE 37可例如在执行4×MSAA时使用63.5度旋转角度。在一些实例中,TSE 37可在结合执行抗锯齿执行零像素剔除时首先使用45度旋转角度。TSE 37可接着在执行抗锯齿时使用63.5度旋转角度且剔除任何零图元。如下文将更详细地论述,使用63.5度剔除角度可在执行抗锯齿时使更高百分比的图元被剔除。现将描述用于执行三角形旋转和剔除确定的实例伪码。
首先,TSE 37接收具有顶点A、B和C的输入三角形。所述三角形具有笛卡尔顶点坐标:A(x0,y0)、B(x1,y1)和C(x2,y2)。TSE 37还接收旋转角度(T)。
接着,TSE 37根据以下方程式确定所述三角形在旋转域中的坐标:
x0'=cos(T)*x0-sin(T)*y0=u0
y0'=sin(T)*x0+cos(T)*y0=v0
x1'=cos(T)*x1-sin(T)*y1=u1
y1'=sin(T)*x1+cos(T)*y1=v1
x2'=cos(T)*x2-sin(T)*y2=u2
y2'=sin(T)*x2+cos(T)*y2=v2。
TSE 37接着根据以下方程式确定最大和最小的u和v值:
uMax=max(u0,u1,u2),uMin=min(u1,u1,u2)
vMax=max(v0,v1,v2),vMin=min(v1,v1,v2),
其中min是返回其自变量最小值的函数,且max是返回其自变量最大值的函数。
在确定u-v坐标和相关联的值之后,TSE 37确定是否abs(uMax-uMin)或abs(vMax-vMin)<1,
其中abs是绝对值函数。如果以上条件为真,则TSE 37可剔除所述图元。
当执行MSAA时,TSE 37可在硬件、软件或其组合中执行以下伪码以执行零像素剔除。
本发明的零像素剔除技术可以浮点或定点格式执行。在以上实例中,使用具有8个小数位的精度(n.8precision)的定点格式。
现将论述与本发明的技术相关联的各种性能改进。GFXBench是常用的图形性能基准测试程序,其由GPU所渲染的若干场景构成。测试场景中的一些包含“埃及”、“霸王龙”和“曼哈顿”。表1描述通过使用结合各种MSAA模式的45度旋转角度在图元剔除率上的百分比改进:
表1:利用45度角的零像素剔除改进
因此,在几乎每个场景中,在执行零像素剔除时使用45度旋转会得到性能改进。然而,在4×MSAA情况下,零图元剔除百分比率相对较低。为了解决此情况,在各种实例中,TSE37可在执行零像素剔除时利用63.5度旋转。在一些实例中,TSE 37可在45度角下执行零像素剔除,且接着在63.5的角度下执行零像素剔除。下文在表2中描述各种角度组合在4×MSAA下的性能改进。
表2:利用4×MSAA的零像素剔除
因此,如表2中所描述,使用63.5度旋转可略微提高剔除的图元的百分比。在执行零像素剔除时使用45度和63.5度旋转两者可进一步提高剔除的图元的百分比。
图7是展示本发明的零像素剔除的实例方法的流程图。应理解,出于举例目的,零像素剔除引擎38可执行图7中说明的一些或所有技术。零像素剔除引擎38可经配置以获得输入三角形和旋转角度(90)。零像素剔除引擎38可使三角形x-y坐标旋转以产生u-v坐标(92)。零像素剔除引擎38可接着寻找经旋转的已抗锯齿包围盒(AABB),其具有最大和最小u-v坐标(94)。Umax对应于最大u坐标,且Umin对应于最小u坐标。Vmin对应于最小v坐标,且Vmax对应于最大v坐标。
零像素剔除引擎38确定包围盒是否在像素网格内(96)。如果零像素剔除引擎38在像素网格内(决策框96的“是”分支),零像素剔除引擎38剔除三角形(98)。
图8是展示本发明的实例方法的流程图。图4的方法可由GPU 12的一或多个硬件单元(包含TSE 37)实行。图8描绘一种方法,其中GPU 12的TSE 37可经配置以:确定三角形的坐标,其中所述三角形是待通过GPU 12渲染的场景的部分(100);以及基于某一角度而旋转所述三角形的坐标(102)。为了旋转三角形的坐标,TSE 37可经配置以生成所述三角形在旋转域中的坐标(104),且基于所述三角形在旋转域中的坐标而确定旋转域中的包围盒的坐标(106)。TSE 37可经进一步配置以确定旋转域中的第一多个平行扫描线且确定旋转域中的第二多个平行扫描线,其中第二多个平行扫描线垂直于第一多个平行扫描线(108)。TSE37可经进一步配置以确定所述旋转域中的包围盒坐标是否位于第一多个扫描线中的两个相邻扫描线内或第二多个扫描线内的两个相邻扫描线内(110)。响应于确定包围盒坐标位于两个相邻扫描线内:TSE 37可从场景移除所述三角形(112)。
在一或多个实例中,上文所描述的功能可在硬件、软件、固件或其任何组合中实施。如果在软件中实施,则所述功能可作为一或多个指令或代码存储在包括非暂时性计算机可读媒体的制品上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可以是可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。作为实例而非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器,或可用来携带或存储呈指令或数据结构形式的所要程序代码且可由计算机存取的任何其它媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上各者的组合也应包含在计算机可读媒体的范围内。
代码可由一或多个处理器执行,例如一或多个DSP、通用微处理器、ASIC、FPGA或其它等效集成或离散逻辑电路。此外,在一些方面,本文所描述的功能性可在专用硬件和/或软件模块内提供。另外,所述技术可完全实施于一或多个电路或逻辑元件中。
本发明的技术可实施于广泛多种装置或设备中,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。各种组件、模块或单元描述于本发明中以强调经配置以执行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编解码器硬件单元中,或通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已描述各种实例。这些和其它实例在所附权利要求书的范围内。
Claims (30)
1.一种通过图形处理单元GPU执行的方法,所述方法包括:
确定三角形的坐标,其中所述三角形是待通过所述GPU渲染的场景的部分;
基于某一角度旋转所述三角形的所述坐标,
其中旋转所述三角形的所述坐标会生成所述三角形在旋转域中的坐标;
基于所述三角形在所述旋转域中的所述坐标来确定所述旋转域中的包围盒的坐标;
确定所述旋转域中的第一多个平行扫描线;
确定所述旋转域中的第二多个平行扫描线,
其中所述第二多个平行扫描线垂直于所述第一多个平行扫描线;
确定所述旋转域中的所述包围盒坐标是否位于所述第一多个扫描线中的第一两个相邻扫描线内或所述第二多个扫描线中的第二两个相邻扫描线内;以及
响应于确定所述包围盒坐标位于所述第一两个相邻扫描线或所述第二两个相邻扫描线内:
从所述场景移除所述三角形。
2.根据权利要求1所述的方法,其中所述角度在45度与63.5度之间,且包含45度及63.5度。
3.根据权利要求1所述的方法,其中旋转所述三角形的所述坐标进一步包括:
根据以下变换矩阵旋转所述三角形坐标:
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mi>u</mi>
</mtd>
</mtr>
<mtr>
<mtd>
<mi>v</mi>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>c</mi>
<mi>o</mi>
<mi>s</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>cos</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mi>x</mi>
</mtd>
</mtr>
<mtr>
<mtd>
<mi>y</mi>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>,</mo>
</mrow>
其中u和v是所述旋转域中的点的坐标,以及
其中θ是所述角度。
4.根据权利要求3所述的方法,其中确定所述包围盒坐标位于所述第一两个相邻扫描线或所述第二两个相邻扫描线内包括:
确定所述包围盒的最大u坐标与所述包围盒的最小u坐标之间的差的绝对值;
确定所述包围盒的最大v坐标与所述包围盒的最小v坐标之间的差的绝对值;以及
响应于确定所述最大u坐标与所述最小v坐标值之间的所述差的所述绝对值小于一,或所述最大u坐标与所述最小u坐标之间的所述差的所述绝对值小于一:
确定所述包围盒坐标位于所述第一两个相邻扫描线内或所述第二两个相邻扫描线内;以及
从所述场景移除所述三角形。
5.根据权利要求1所述的方法,其中所述第一多个平行扫描线与所述第二多个扫描线的相交点对应于所述场景中的像素的相交点。
6.根据权利要求1所述的方法,其进一步包括:
对所述三角形的像素进行多重取样,
其中所述第一多个平行扫描线与所述第二多个扫描线的相交点相交于所述三角形的经多重取样的像素。
7.根据权利要求1所述的方法,其进一步包括基于所述是否已对所述场景进行抗锯齿而确定所述角度。
8.根据权利要求7所述的方法,其进一步包括:
响应于确定已对所述场景进行抗锯齿,确定所述角度等于63.5度;以及
响应于确定未对所述场景进行抗锯齿,确定所述角度等于45度。
9.根据权利要求1所述的方法,其中所述三角形坐标包括x-y笛卡尔坐标。
10.一种设备,其包括:
存储器;以及
图形处理单元GPU,其经配置以:
确定三角形的坐标,其中所述三角形是待通过所述GPU渲染的场景的部分;
基于某一角度旋转所述三角形的所述坐标,
其中为了旋转所述三角形的所述坐标,至少一个处理器经配置以生成所述三角形在旋转域中的坐标;
基于所述三角形在所述旋转域中的所述坐标来确定所述旋转域中的包围盒的坐标;
确定所述旋转域中的第一多个平行扫描线;
确定所述旋转域中的第二多个平行扫描线,
其中所述第二多个平行扫描线垂直于所述第一多个平行扫描线;
确定所述旋转域中的所述包围盒坐标是否位于所述第一多个扫描线中的第一两个相邻扫描线内或所述第二多个扫描线中的第二两个相邻扫描线内;以及
响应于确定所述包围盒坐标位于所述第一两个相邻扫描线或所述第二两个相邻扫描线内:
从所述场景移除所述三角形。
11.根据权利要求10所述的设备,其中所述至少一个处理器包括所述GPU的三角形设置引擎的处理器。
12.根据权利要求10所述的设备,其进一步包括:
中央处理单元CPU;以及
显示器,
其中所述设备包括移动计算装置。
13.根据权利要求10所述的设备,其中所述角度在45度与63.5度之间,且包含45度及63.5度。
14.根据权利要求10所述的设备,其中为了旋转所述三角形的所述坐标,所述GPU经进一步配置以:
根据以下变换矩阵旋转所述三角形坐标:
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mi>u</mi>
</mtd>
</mtr>
<mtr>
<mtd>
<mi>v</mi>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>c</mi>
<mi>o</mi>
<mi>s</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>cos</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mi>x</mi>
</mtd>
</mtr>
<mtr>
<mtd>
<mi>y</mi>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>,</mo>
</mrow>
其中u和v是所述旋转域中的点的坐标,以及
其中θ是所述角度。
15.根据权利要求14所述的设备,其中为了确定所述包围盒坐标位于所述第一两个相邻扫描线或所述第二两个相邻扫描线内,所述GPU经进一步配置以:
确定所述包围盒的最大u坐标与所述包围盒的最小u坐标之间的差的绝对值;
确定所述包围盒的最大v坐标与所述包围盒的最小v坐标之间的差的绝对值;以及
响应于确定所述最大u坐标与所述最小v坐标值之间的所述差的所述绝对值小于一,或所述最大u坐标与所述最小u坐标之间的所述差的所述绝对值小于一:
确定所述包围盒坐标位于所述第一两个相邻扫描线内或所述第二两个相邻扫描线内;以及
从所述场景移除所述三角形。
16.根据权利要求10所述的设备,其中所述第一多个平行扫描线与所述第二多个扫描线的相交点对应于所述场景中的像素的相交点。
17.根据权利要求10所述的设备,其中所述GPU经进一步配置以:
对所述三角形的像素进行多重取样,
其中所述第一多个平行扫描线与所述第二多个扫描线的相交点相交于所述三角形的经多重取样的像素。
18.根据权利要求10所述的设备,其中所述GPU经进一步配置以:
基于所述是否已对所述场景进行抗锯齿而确定所述角度。
19.根据权利要求18所述的设备,其中所述GPU经进一步配置以:
响应于确定已对所述场景进行抗锯齿,确定所述角度等于63.5度;以及
响应于确定未对所述场景进行抗锯齿,确定所述角度等于45度。
20.根据权利要求10所述的设备,其中所述三角形坐标包括x-y笛卡尔坐标。
21.一种设备,其包括:
用于确定三角形的坐标的装置,其中所述三角形是待渲染的场景的部分;
用于基于某一角度旋转所述三角形的所述坐标的装置,
其中所述用于旋转所述三角形的所述坐标的装置包括用于生成所述三角形在旋转域中的坐标的装置;
用于基于所述三角形在所述旋转域中的所述坐标来确定所述旋转域中的包围盒的坐标的装置;
用于确定所述旋转域中的第一多个平行扫描线的装置;
用于确定所述旋转域中的第二多个平行扫描线的装置,
其中所述第二多个平行扫描线垂直于所述第一多个平行扫描线;
用于确定所述旋转域中的所述包围盒坐标是否位于所述第一多个扫描线中的第一两个相邻扫描线内或所述第二多个扫描线中的第二两个相邻扫描线内的装置;以及
用于响应于确定所述包围盒坐标位于所述第一两个相邻扫描线或所述第二两个相邻扫描线内而从所述场景移除所述三角形的装置。
22.根据权利要求21所述的设备,其中所述角度在45度与63.5度之间,且包含45度及63.5度。
23.根据权利要求21所述的设备,其中所述用于旋转所述三角形的所述坐标的装置进一步包括:
用于根据以下变换矩阵旋转所述三角形坐标的装置:
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mi>u</mi>
</mtd>
</mtr>
<mtr>
<mtd>
<mi>v</mi>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>c</mi>
<mi>o</mi>
<mi>s</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>cos</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mi>x</mi>
</mtd>
</mtr>
<mtr>
<mtd>
<mi>y</mi>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>,</mo>
</mrow>
其中u和v是所述旋转域中的点的坐标,以及
其中θ是所述角度。
24.根据权利要求23所述的设备,其中所述用于确定所述包围盒坐标位于所述第一两个相邻扫描线或所述第二两个相邻扫描线内的装置包括:
用于确定所述包围盒的最大u坐标与所述包围盒的最小u坐标之间的差的绝对值的装置;
用于确定所述包围盒的最大v坐标与所述包围盒的最小v坐标之间的差的绝对值的装置;
用于响应于确定所述最大u坐标与所述最小v坐标值之间的所述差的所述绝对值小于一或所述最大u坐标与所述最小u坐标之间的所述差的所述绝对值小于一而确定所述包围盒坐标位于所述第一两个相邻扫描线内或所述第二两个相邻扫描线内的装置;以及
用于从所述场景移除所述三角形的装置。
25.根据权利要求21所述的设备,其进一步包括:
用于对所述三角形的像素进行多重取样的装置,
其中所述第一多个平行扫描线与所述第二多个扫描线的相交点相交于所述三角形的经多重取样的像素。
26.一种上面存储有指令的非暂时性计算机可读存储媒体,所述指令在执行时致使至少一个处理器进行以下操作:
确定三角形的坐标,其中所述三角形是待通过GPU渲染的场景的部分;
基于某一角度旋转所述三角形的所述坐标,
其中使所述至少一个处理器旋转所述三角形的所述坐标的所述指令使所述至少一个处理器生成所述三角形在旋转域中的坐标;
基于所述三角形在所述旋转域中的所述坐标来确定所述旋转域中的包围盒的坐标;
确定所述旋转域中的第一多个平行扫描线;
确定所述旋转域中的第二多个平行扫描线,
其中所述第二多个平行扫描线垂直于所述第一多个平行扫描线;
确定所述旋转域中的所述包围盒坐标是否位于所述第一多个扫描线中的第一两个相邻扫描线内或所述第二两个相邻扫描线中的第二两个相邻扫描线内;以及
响应于确定所述包围盒坐标位于所述第一两个相邻扫描线或所述第二多个相邻扫描线内:
从所述场景移除所述三角形。
27.根据权利要求26所述的非暂时性计算机可读存储媒体,其中所述角度在45度与63.5度之间,且包含45度及63.5度。
28.根据权利要求26所述的非暂时性计算机可读存储媒体,其中指令进一步使所述至少一个处理器进行以下操作:
根据以下变换矩阵旋转所述三角形坐标:
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mi>u</mi>
</mtd>
</mtr>
<mtr>
<mtd>
<mi>v</mi>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>c</mi>
<mi>o</mi>
<mi>s</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>cos</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mi>x</mi>
</mtd>
</mtr>
<mtr>
<mtd>
<mi>y</mi>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>,</mo>
</mrow>
其中u和v是所述旋转域中的点的坐标,以及
其中θ是所述角度。
29.根据权利要求28所述的非暂时性计算机可读存储媒体,其中指令进一步使所述至少一个处理器进行以下操作:
确定所述包围盒的最大u坐标与所述包围盒的最小u坐标之间的差的绝对值;
确定所述包围盒的最大v坐标与所述包围盒的最小v坐标之间的差的绝对值;
响应于确定所述最大u坐标与所述最小v坐标值之间的所述差的所述绝对值小于一或所述最大u坐标与所述最小u坐标之间的所述差的所述绝对值小于一而确定所述包围盒坐标位于所述第一两个相邻扫描线内或所述第二两个相邻扫描线内;以及
从所述场景移除所述三角形。
30.根据权利要求26所述的非暂时性计算机可读存储媒体,其中指令进一步使所述至少一个处理器进行以下操作:
对所述三角形的像素进行多重取样,
其中所述第一多个平行扫描线与所述第二多个扫描线的相交点相交于所述三角形的经多重取样的像素。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/805,088 | 2015-07-21 | ||
US14/805,088 US9959665B2 (en) | 2015-07-21 | 2015-07-21 | Zero pixel culling for graphics processing |
PCT/US2016/034456 WO2017014838A1 (en) | 2015-07-21 | 2016-05-26 | Zero pixel culling for graphics processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107851330A true CN107851330A (zh) | 2018-03-27 |
CN107851330B CN107851330B (zh) | 2019-05-14 |
Family
ID=56133057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680041182.4A Active CN107851330B (zh) | 2015-07-21 | 2016-05-26 | 用于图形处理的零像素剔除 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9959665B2 (zh) |
EP (1) | EP3326155A1 (zh) |
JP (1) | JP6386692B1 (zh) |
KR (1) | KR20180034413A (zh) |
CN (1) | CN107851330B (zh) |
BR (1) | BR112018001215A2 (zh) |
WO (1) | WO2017014838A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111815788A (zh) * | 2020-07-22 | 2020-10-23 | 腾讯科技(深圳)有限公司 | 三维地图处理方法、装置、设备和存储介质 |
CN113453069A (zh) * | 2021-06-18 | 2021-09-28 | 海信视像科技股份有限公司 | 一种显示设备及缩略图生成方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10037620B2 (en) | 2015-05-29 | 2018-07-31 | Nvidia Corporation | Piecewise linear irregular rasterization |
US10032308B2 (en) * | 2016-06-22 | 2018-07-24 | Advanced Micro Devices, Inc. | Culling objects from a 3-D graphics pipeline using hierarchical Z buffers |
US10460513B2 (en) | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
CN111127620B (zh) * | 2019-12-27 | 2024-02-09 | 芯瞳半导体技术(山东)有限公司 | 一种生成半球域采样模式的方法、装置及计算机存储介质 |
CN111553957A (zh) * | 2020-04-26 | 2020-08-18 | 郑州轻工业大学 | 一种计算机图像处理中对矢量化图形进行数据压缩的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030179195A1 (en) * | 2002-03-21 | 2003-09-25 | Erik Ordentlich | Systems and methods for compressing rasterization setup data within a sort middle graphics architecture |
WO2004086309A2 (en) * | 2003-03-27 | 2004-10-07 | Imagination Technologies Limited | Improvements to a tiling system for 3d rendered graphics |
US20070229546A1 (en) * | 2006-03-31 | 2007-10-04 | Research In Motion Limited | Method of applying a spherical correction to map data for rendering direction-of-travel paths on a wireless communications device |
US7307628B1 (en) * | 2004-08-06 | 2007-12-11 | Nvidia Corporation | Diamond culling of small primitives |
CN102737401A (zh) * | 2011-05-06 | 2012-10-17 | 新奥特(北京)视频技术有限公司 | 一种图形渲染中光栅化阶段的三角片填充方法 |
US20150178983A1 (en) * | 2013-12-19 | 2015-06-25 | Tomas G. Akenine-Moller | Variable Shading |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6624823B2 (en) | 1998-02-17 | 2003-09-23 | Sun Microsystems, Inc. | Graphics system configured to determine triangle orientation by octant identification and slope comparison |
US6771264B1 (en) | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
US7119809B1 (en) | 2000-05-15 | 2006-10-10 | S3 Graphics Co., Ltd. | Parallel architecture for graphics primitive decomposition |
US7212204B2 (en) | 2005-01-27 | 2007-05-01 | Silicon Graphics, Inc. | System and method for graphics culling |
US7468726B1 (en) | 2005-12-01 | 2008-12-23 | Nvidia Corporation | Culling in a vertex processing unit |
US10217272B2 (en) * | 2014-11-06 | 2019-02-26 | Intel Corporation | Zero-coverage rasterization culling |
-
2015
- 2015-07-21 US US14/805,088 patent/US9959665B2/en not_active Expired - Fee Related
-
2016
- 2016-05-26 EP EP16729688.8A patent/EP3326155A1/en not_active Withdrawn
- 2016-05-26 WO PCT/US2016/034456 patent/WO2017014838A1/en active Search and Examination
- 2016-05-26 CN CN201680041182.4A patent/CN107851330B/zh active Active
- 2016-05-26 BR BR112018001215A patent/BR112018001215A2/pt not_active Application Discontinuation
- 2016-05-26 JP JP2018502229A patent/JP6386692B1/ja active Active
- 2016-05-26 KR KR1020187001925A patent/KR20180034413A/ko active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030179195A1 (en) * | 2002-03-21 | 2003-09-25 | Erik Ordentlich | Systems and methods for compressing rasterization setup data within a sort middle graphics architecture |
WO2004086309A2 (en) * | 2003-03-27 | 2004-10-07 | Imagination Technologies Limited | Improvements to a tiling system for 3d rendered graphics |
US7307628B1 (en) * | 2004-08-06 | 2007-12-11 | Nvidia Corporation | Diamond culling of small primitives |
US20070229546A1 (en) * | 2006-03-31 | 2007-10-04 | Research In Motion Limited | Method of applying a spherical correction to map data for rendering direction-of-travel paths on a wireless communications device |
CN102737401A (zh) * | 2011-05-06 | 2012-10-17 | 新奥特(北京)视频技术有限公司 | 一种图形渲染中光栅化阶段的三角片填充方法 |
US20150178983A1 (en) * | 2013-12-19 | 2015-06-25 | Tomas G. Akenine-Moller | Variable Shading |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111815788A (zh) * | 2020-07-22 | 2020-10-23 | 腾讯科技(深圳)有限公司 | 三维地图处理方法、装置、设备和存储介质 |
CN111815788B (zh) * | 2020-07-22 | 2022-05-17 | 腾讯科技(深圳)有限公司 | 三维地图处理方法、装置、设备和存储介质 |
CN113453069A (zh) * | 2021-06-18 | 2021-09-28 | 海信视像科技股份有限公司 | 一种显示设备及缩略图生成方法 |
CN113453069B (zh) * | 2021-06-18 | 2022-11-11 | 海信视像科技股份有限公司 | 一种显示设备及缩略图生成方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3326155A1 (en) | 2018-05-30 |
BR112018001215A2 (pt) | 2018-09-11 |
CN107851330B (zh) | 2019-05-14 |
US20170024926A1 (en) | 2017-01-26 |
JP6386692B1 (ja) | 2018-09-05 |
KR20180034413A (ko) | 2018-04-04 |
US9959665B2 (en) | 2018-05-01 |
WO2017014838A1 (en) | 2017-01-26 |
JP2018528513A (ja) | 2018-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9489710B2 (en) | Hybrid rendering in graphics processing | |
EP3308359B1 (en) | Rendering using ray tracing to generate a visibility stream | |
JP6571884B2 (ja) | グラフィックス処理におけるシャドーレイのツリー横断のための開始ノード決定 | |
US9959665B2 (en) | Zero pixel culling for graphics processing | |
US9019280B2 (en) | Area-based rasterization techniques for a graphics processing system | |
US10078883B2 (en) | Writing graphics data from local memory to system memory | |
US9280956B2 (en) | Graphics memory load mask for graphics processing | |
US9324127B2 (en) | Techniques for conservative rasterization | |
US20160042549A1 (en) | High order filtering in a graphics processing unit | |
US9646359B2 (en) | Indefinite texture filter size for graphics processing | |
US9454841B2 (en) | High order filtering in a graphics processing unit | |
WO2019055918A1 (en) | ADDING METADATA TO TEXTURE SURFACES FOR BANDWIDTH COMPRESSION |
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 |