图形处理单元中的三维裁剪的制作方法

文档序号:6487768阅读:104来源:国知局
图形处理单元中的三维裁剪的制作方法
【专利摘要】本发明提供一种图形处理单元(GPU),其使用用于其它图形功能的处理单元来有效地执行三维(3D)裁剪。所述GPU包括第一和第二硬件单元和至少一个缓冲器。所述第一硬件单元使用用于第一图形功能的第一处理单元执行对基元的3D裁剪,所述第一处理单元例如为用于三角形设置、深度梯度设置等的ALU。所述第一硬件单元可通过以下操作执行3D裁剪:(a)计算用于每一基元的每一顶点的裁剪代码;(b)基于用于所述基元的所有顶点的所述裁剪代码而确定是传递、抛弃还是裁剪所述基元;以及(c)相对于裁剪平面裁剪待裁剪的每一基元。所述第二硬件单元例如使用用于属性梯度设置、属性内插等的ALU计算用于从所述3D裁剪产生的新顶点的属性值。所述缓冲器存储所述3D裁剪的中间结果。
【专利说明】图形处理单元中的三维裁剪
【技术领域】
[0001]本发明大体上涉及图形图像,且更具体地说,涉及用于在图形处理单元(GPU)中执行3D裁剪的技术。
【背景技术】
[0002]图形处理单元(GPU)是用于针对各种应用渲染二维(2D)和/或三维(3D)图像的专门硬件单元,所述应用例如为视频游戏、图形、计算机辅助设计(CAD)、模拟和显像工具、成像等。3D图像可用数个表面建模,且每一表面可用数个基元近似。基元是基本几何单位且可包括三角形、线条等。GPU可执行例如变换、光栅化、着色、掺合等各种图形操作以渲染3D图像。这些图形操作可能为计算密集的。此外,用于表示3D图像的基元的数目可能较大,例如达数百万。因此,可能消耗许多处理和存储器资源来对大量几何数据执行计算以便渲染3D图像。
[0003]可执行3D裁剪以识别并抛弃不能看见且因此无需渲染的基元。可通过省略用于被抛弃的基元的计算来实现改进的性能。然而,3D裁剪本身是项复杂的操作。GPU可具有专用硬件来执行所有3D裁剪操作。然而,此专用3D裁剪硬件将增加GPU的成本和功耗,这可能对于例如移动和手持式装置等某些应用来说是不合需要的。可通过在可在中央处理单元(CPU)、数字信号处理器(DSP)等上执行的软件中执行3D裁剪来避免使用专用3D裁剪硬件。然而,使用CPU或DSP (其还用于其它目的)执行3D裁剪可能引起其它问题,例如用于输送基元数据和3D裁剪结果的数据总线上的较高负载、发送出以用于3D裁剪的基元与待渲染的其它基元之间的同步等。

【发明内容】

[0004]本文描述一种图形处理单元(GPU),其使用用于其它图形功能的一个或一个以上处理单元来有效地执行3D裁剪。所述GPU可通过在硬件中执行3D裁剪来提供改进的性能,通过不必调用CPU或DSP执行3D裁剪来降低对3D图形管线的破坏,且提供其它好处。
[0005]在一种设计中,所述GPU包括第一和第二硬件单元以及至少一个缓冲器。所述第 一硬件单元使用用于第一图形功能的第一处理单元来执行对基元的3D裁剪,所述第
一处理单元例如为用于三角形设置、深度梯度设置等的算术逻辑单元(ALU)。第一硬件单元可通过以下操作来执行3D裁剪:Ca)计算用于每一基元的每一顶点的裁剪代码;(b)基于用于每一基元的所有顶点的裁剪代码而确定是传递、抛弃还是裁剪所述基元;以及(C)相对于裁剪平面裁剪待裁剪的每一基元。所述第二硬件单元计算用于从3D裁剪产生的新顶点的属性分量值。第二硬件单元使用用于第二图形功能的第二处理单元,例如用于属性梯度设置、属性内插等的ALU。缓冲器存储第一硬件单元所进行的3D裁剪的中间结果。
【专利附图】

【附图说明】
[0006]图1展示用于没有3D裁剪的GPU的3D图形管线。[0007]图2展示用于具有3D裁剪的GPU的3D图形管线。
[0008]图3展示用于3D图形的视见平截头体。
[0009]图4展示相对于视口的基元。
【具体实施方式】
[0010]3D图像可用数个基元(例如,三角形、线条、其它多边形等)表示。每一基元由一个或一个以上顶点界定,例如用于三角形的三个顶点。每一顶点与例如空间坐标、色彩、纹理坐标等各种属性相关联。每一属性可具有多达四个分量。举例来说,空间坐标可由三个分量X、y和z或四个分量X、y、z和w给定,其中x和y是水平和垂直坐标,z是深度,且w是齐次坐标。色彩可由三个分量r、g和b或四个分量r、g、b和a给定,其中r是红色,g是绿色,b是蓝色,且a是确定像素透明度的透明度因数。纹理坐标通常由水平和垂直坐标U和V)给定。顶点还可与其它属性相关联。
[0011]图1展示用于GPU100的3D图形管线的框图。顶点着色器110对几何数据执行顶8点处理,所述几何数据可包含例如三角形和线条等基元。举例来说,顶点着色器512可针对顶点计算光量值,针对几何形状执行掺合等。顶点着色器110还可确定每一顶点的坐标(例如,x、y、z、w)和属性分量值,向三角形设置和深度(z)梯度设置单元120提供顶点坐标,且向顶点高速缓冲存储器180提供顶点属性分量值。顶点高速缓冲存储器180存储属性分量值,且可能存储用于顶点和基元的其它数据。
[0012]单元120计算用于后续光栅化过程的参数。举例来说,单元120可执行视口变换以将基元从裁剪坐标系(或裁剪空间)转换为屏幕坐标系(或屏幕空间)。裁剪空间是具有四个维度x、y、z、w的标准化齐次坐标系。屏幕空间是用于显示屏或某种其它输出装置的3维坐标系。单元120还可执行剪切以抛弃不在剪切窗口内的对象,执行背面剔除以抛弃对象背侧上的基元等。单元120可执行三角形/基元设置且计算用于每一基元的边缘的线性等式的系数、用于深度(z)梯度的系数等。光栅化器130将每一基元分解为数个像素且产生用于每一像素的屏幕坐标。
[0013]早期深度/模版测试单元140可执行用于像素的模版测试(如果启用的话)以确定应渲染还是抛弃所述像素。术语“抛弃”、“丢弃”和“拒绝”是同义的。术语“传递”和“接受”也是同义的。单元140可将用于像素的存储在模版缓冲器(图1中未展示)中的模版值与参考值进行比较,且基于比较结果而传递或抛弃所述像素。单元140还可对像素执行深度测试(其还称为z测试)(如果适用的话)以确定应渲染还是抛弃所述像素。单元140可将用于像素的z值(当前z值)与2缓冲器中的对应z值(所存储z值)进行比较,在当前z值比所存储z值更接近/更靠近的情况下传递所述像素并更新所述z缓冲器和(可能)模版缓冲器,且在当前z值比所存储z值更向后的情况下抛弃所述像素。
[0014]属性梯度设置和属性内插单元150内插用于基元顶点的属性分量值,以获得用于所述基元内的像素的属性分量值。单元150可首先基于顶点的属性分量值而计算用于属性内插的参数。这些参数可为用于属性内插的线性等式的属性梯度或系数。单元150可接着基于所述像素的屏幕坐标和内插参数而计算用于每一基元内的每一像素的属性分量值。
[0015]像素/片段着色器160可对像素和片段执行各种图形操作。片段是像素或其相关联信息。举例而言,像素/片段着色器160可执行纹理映射(如果启用的话)以向像素施加纹理。通过在由像素的纹理坐标所指示的位置处用纹理图像的色彩修改所述像素的色彩来实现纹理化。后处理器170可对每一片段执行其它图形操作,例如a测试、雾化掺合、a掺合、逻辑操作、抖动操作等。后处理器170向色彩缓冲器提供输出像素以供在显示9装置上呈现(所述两者均未在图1中展示)。
[0016]GPU100不具有专用3D裁剪硬件,其可能由于3D裁剪所需的复杂计算而为昂贵的且在仅裁剪较小百分比的基元的情况下可能为不合理的。在此情况下,可在CPU或DSP上所执行的软件中执行3D裁剪。在完成顶点处理之后,GPU100可将基元数据发送到CPU或DSP以用于3D裁剪(如果必要的话)。GPU100可接着等待来自CPU或DSP的3D裁剪结果,这将在GPU闲置时浪费GPU资源。或者,GPU100可处理新基元且将结果存储在缓冲器中。在从CPU或DSP接收到具有新基元的3D裁剪结果时,GPU100可将新基元发送到下一级且在缓冲器中绕过所述基元。这避免在等待3D裁剪结果时浪费GPU资源,但需要较多缓冲,且可能引起同步和其它问题。
[0017]图2展示用于GPU200的3D图形管线的框图,所述GPU200使用用于其它图形功能的处理单元来有效地支持3D裁剪。GPU200包括顶点着色器110、光栅化器130、早期深度/模版测试单元140、像素/片段着色器160、后处理器170和顶点高速缓冲存储器180,其如上文针对图1描述那样操作。GPU200进一步包括(a)3D裁剪、三角形设置和深度梯度设置单元220代替图1中的单元120,以及(b)新顶点属性计算、属性梯度设置和属性内插单元250代替图1中的单元150。
[0018]单元220使用用于三角形设置和深度梯度设置的处理单元(例如,ALU)执行用于基元的3D裁剪。对于3D裁剪,单元220确定是传递、抛弃还是裁剪每一基元,且针对待裁剪的每一基元,确定从3D裁剪产生的新顶点的坐标和内插系数。下文描述单元220对3D裁剪所进行的处理。
[0019]单元250计算用于来自3D裁剪的新顶点的属性分量值。单元250可使用用于属性梯度设置和属性内插的处理单元(例如,ALU)执行此计算。单元250可接着针对新基元连同其它基元执行属性梯度设置和属性内插。
[0020]如图2所示执行3D裁剪可提供某些优点,例如(a)通过在硬件中执行3D裁剪实现的改进的性能,(b)通过借用用于其它图形功能的处理单元实现的用以支持3D裁剪的较小额外硬件成本,(c)通过不必调用CPU或DSP执行3D裁剪实现的对3D图形管线的较少破坏,以及(d)可能其它好处。
[0021]图3展示用于3D图形的视见平截头体300。用于渲染引擎的相机位于3D(x,y, z)坐标系的原点处。所述视见平截头体是可能在屏幕上显示的建模世界中的3D空间容积。所述视见平截头体类似经裁剪四面体且由六个平面形成一四个平面用于经裁剪四面体的四个侧面,一个平面(称为z近平面)用于四面体的经裁剪顶部且另一个平面(称为z远平面)用于四面体的底面。位于视见平截头体外部的对象不被渲染且可被抛弃。
[0022]所述Z远平面可放置于无限距离处,使得可渲染对象而不管其距相机的距离如何。在此情况下,视见平截头体由用于四个侧面的四个平面和z近平面形成。
[0023]图4展示相对于视口 400的各种基元。视口是3D场景投影到其中的2D矩形且可对应于视见平截头体的底部。存在z近平面但未在图4的2D表示中展示。安全带410是等于或大于所述视口的矩形。可相对于所述安全带而非所述视口来执行3D裁剪。较大安全带可导致裁剪较少基元(这是合乎需要的),但还导致将较多经裁剪基元传递到下一级。对于较小安全带,情况相反。
[0024]在一种设计中,如果基元的顶点全部位于用于所述视口的五个平面中的任何一者外部,那么抛弃所述基元。如果任何顶点位于用于安全带的五个平面中的任何一者外部,那么裁剪未被抛弃的基元。如果基元未被抛弃或裁剪,那么传递所述基元。在图4所示的实例中,抛弃基元1、6、9、11和12,传递基元2、7、8和10,且裁剪基元3、4、5、13和14。还可基于其它准则而抛弃、传递或裁剪基元。
[0025]可如下执行3D裁剪:
1.确定用于每一基元的每一顶点的裁剪代码,
2.做出用于每一基元的裁剪决策且基于用于所述基元的所有顶点的裁剪代码而确定是传递、抛弃还是裁剪所述基元,
3.计算用于每一经裁剪基元的新顶点的坐标,且
4.计算用于每一经裁剪基元的新顶点的属性分量值。
[0026]图2的GPU200内的单元220可执行步骤1、2和3 (例如,在执行视口变换和三角形设置之前),如下文所描述。裁剪基元可产生在一个或一个以上裁剪平面的交点处的一个或一个以上新顶点。举例来说,相对于安全带裁剪图4中的三角形4将产生相对于顶部平面的两个新顶点和相对于右侧平面的两个新顶点。经裁剪的三角形将是具有五个顶点的多边形,其可被划分为三个新三角形。单元220计算用于新基元的顶点坐标。以与3D裁剪所传递的基元类似的方式,这些新基元被传递到3D图形管线的后续级并由所述后续级处理。
[0027]GPU200的单元250可执行步骤4,如下文所描述。可将用于新顶点的属性分量值的计算交由单元250,以便免除对可能由单元220、130和/或140拒绝的顶点的计算。
[0028]新顶点属性计算可被推迟,因为管线200中的单元220、130和140不对属性进行操作。
[0029]或者,单元220也可计算用于新顶点的属性分量值。
[0030]可相对于安全带裁剪基元,所述安全带可相对于视口通过分别用于X、y和z坐标 的三个安全带参数 GB — Scale_X、GB_Scale_Y 和 GB_Scale_Z 来界定。GB — Scale_X 是
针对X方向的安全带大小与视口大小的比率。如果安全带大小与视口大小相同,那么GB_Scale_X等于1.0,且如果安全带大小大于视口大小,那么GB_Scale — X大于1.0。以类似方式针对y和z方向界定GB — Scale_Y和GB_Scale_Z。
[0031]对于3D裁剪,最初针对每一基元的每一顶点确定裁剪代码。可通过四个分量x、y、z和w界定顶点,其中x、y和z界定顶点在3D空间中的位置,且w界定透视深度。对于安全带,z近平面被给定为_GB_Scale_Z*w,左侧平面被给定为_GB_Scale_X*w,右侧平面被给定为GB_Scale_X*w,底部平面被给定为GB_Scale_Y*w,且顶部平面被给定为-GB—Scale_Y*w。此处忽略z远平面,因为在z远平面处裁剪的机率较低。用z远平面裁剪可等效地通过后续设置管线级以其它方式执行,且未在本文中描述。
[0032]提供先前对本发明的描述是为了使得所属领域的技术人员能够制作或使用本发明。所属领域的技术人员将容易明白对本发明的各种修改,且本文所界定的一般原理可在不脱离本发明的精神或范围的情况下应用于其它变型。因此,本发明不希望限于本文中所描述的实例,而是应被赋予与本文中所揭示的原理和新颖特征一致的最宽范围。
【权利要求】
1.一种图形处理单元,其包含: 第一硬件单元,其用以使用用于第一图形功能的第一处理单元执行对基元的三维(3D)裁剪;以及 至少一个缓冲器,其用以存储所述第一硬件单元所进行的所述3D裁剪的中间结果。
2.根据权利要求1所述的图形处理单元,其进一步包含: 第二硬件单元,其用以使用用于第二图形功能的第二处理单元计算用于从所述3D裁剪产生的新顶点的属性分量值。
3.根据权利要求1所述的图形处理单元,其中所述第一处理单元是用于三角形设置和深度梯度设置中的至少一者的算术逻辑单元(ALU)。
4.根据权利要求2所述的图形处理单元,其中所述第二处理单元是用于属性梯度设置和属性内插中的至少一者的算术逻辑单元(ALU)。
5.根据权利要求1所述的图形处理单元,其中所述第一处理单元在三角形设置和光栅化之前执行3D裁剪。
6.根据权利要求2所述的图形处理单元,其中所述第二处理单元在深度和模版测试之后且在属性梯度设置和属性内插之前计算用于新顶点的属性分量值。
7.根据权利要求1所述的图形处理单元,其中所述基元中的每一者包含至少一个顶点,且其中针对每一基元,所述第一硬件单元产生用于所述基元的每一顶点的裁剪代码且基于用于所述基元的所有顶点的裁剪代码而确定是传递、抛弃还是裁剪所述基元。
8.根据权利要求7所述的图形处理单元,其中所述第一硬件单元相对于多个裁剪平面执行3D裁剪,且其中用于每一顶点的所述裁剪代码指示所述顶点是在所述多个裁剪平面内部还是外部。
9.根据权利要求7所述的图形处理单元,用于每一顶点的所述裁剪代码通过包含用于多个裁剪平面中的每一者的一个位的位图来表示,且其中针对每一顶点,所述第一硬件单元基于所述顶点的坐标和用于所述裁剪平面的参数而确定用于每一裁剪平面的位值。
【文档编号】G06T19/00GK103593875SQ201210285645
【公开日】2014年2月19日 申请日期:2012年8月13日 优先权日:2012年8月13日
【发明者】袁桦, 张玉 申请人:上海威塔数字科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1