用可编程偏移位置处理纹理样本的方法和系统转让专利

申请号 : CN200810111006.0

文献号 : CN101339647B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 安德斯·M·库格勒亚历山大·L·明金威廉·P·小纽霍尔克里斯托弗·J·米格达尔佩米特·R·费尔南多卢普-延·彼得·扬穆罕默德·杰姆·杰贝诺扬于里·Y·乌拉尔斯凯

申请人 : 辉达公司

摘要 :

本发明揭示一种用用户指定的偏移位置来执行纹理操作的方法和系统。具体地说,本发明的一个实施例陈述一种方法,其包括以下步骤:基于与投影在纹理图中的像素相关联的原始样本位置和由用户指定的第一偏移位置来导出第一目的地纹素位置;以及取出所述第一目的地纹素位置处的纹素属性以用于所述纹理操作。

权利要求 :

1.一种用于执行纹理过滤的方法,其包含:

基于与投影在纹理图中的像素相关联的原始样本位置和由用户指定的第一偏移位置来导出第一目标纹素位置;

取出所述第一目标纹素位置处的纹素属性以用于所述纹理过滤;以及其中所述第一目标纹素位置处的第一目标纹素是与所述纹理图中的所述像素相关联并位于其邻近处的四个双线性样本中的一者。

2.根据权利要求1所述的方法,其进一步包含:

从来自所述第一偏移位置的所述四个双线性样本中导出第二目标纹素的第二偏移位置;

基于所述原始样本位置和所述第二偏移位置导出所述第二目标纹素的第二目标纹素位置;以及取出所述第二目标纹素位置处的纹素属性以用于所述纹理过滤。

3.根据权利要求2所述的方法,其中所述第二目标纹素位置沿着所述纹理图的至少一个轴对称于所述第一目标纹素位置。

4.根据权利要求3所述的方法,其进一步包含将由所述用户指定的比例因数应用于所述第一偏移位置和所述第二偏移位置。

5.根据权利要求2所述的方法,其进一步包含:

将所述第二偏移位置的沿所述纹理图的第一轴的坐标值设为等于所述第一偏移位置的沿所述纹理图的第二轴的坐标值。

6.根据权利要求1所述的方法,其进一步包含:

基于所述原始样本位置和由用户指定的第二偏移位置从所述四个双线性样本中导出第二目标纹素的第二目标纹素位置;以及取出所述第二目标纹素位置处的纹素属性以用于所述纹理过滤。

7.根据权利要求1所述的方法,其中所述纹理过滤包括向所述四个双线性样本应用过滤器权数,用于为所述像素产生唯一值。

8.根据权利要求7所述的方法,其中所述过滤器权数可具有任意值。

9.根据权利要求1所述的方法,其中所述纹理过滤包括在所述像素与所述取出的纹素属性之间执行深度比较。

10.根据权利要求9所述的方法,其中所述纹理过滤包括对深度比较操作的结果应用过滤操作。

11.一种经配置以执行纹理过滤的计算装置,所述计算装置包含:用于基于与投影在纹理图中的像素相关联的原始样本位置和由用户指定的第一偏移位置来导出第一目标纹素位置的装置;

用于取出所述第一目标纹素位置处的纹素属性以用于所述纹理过滤的装置;以及其中所述第一目标纹素位置处的第一目标纹素是与所述纹理图中的所述像素相关联并位于其邻近处的四个双线性样本中的一者。

12.根据权利要求11所述的计算装置,其中所述计算装置进一步包括:用于从来自所述第一偏移位置的所述四个双线性样本中导出第二目标纹素的第二偏移位置的装置;

用于基于所述原始样本位置和所述第二偏移位置导出所述第二目标纹素的第二目标纹素位置的装置;和用于取出所述第二目标纹素位置处的纹素属性以用于所述纹理过滤的装置。

13.根据权利要求12所述的计算装置,其中所述第二目标纹素位置沿着所述纹理图的至少一个轴对称于所述第一目标纹素位置。

14.根据权利要求13所述的计算装置,其中由所述用户指定的比例因数被应用于所述第一偏移位置和所述第二偏移位置。

15.根据权利要求12所述的计算装置,其中所述计算装置进一步包括用于将所述第二偏移位置的沿所述纹理图的第一轴的坐标值设为等于所述第一偏移位置的沿所述纹理图的第二轴的坐标值的装置。

16.根据权利要求11所述的计算装置,其中所述计算装置进一步包括:用于基于所述原始样本位置和由用户指定的第二偏移位置从所述四个双线性样本中导出第二目标纹素的第二目标纹素位置的装置;和用于取出所述第二目标纹素位置处的纹素属性以用于所述纹理过滤的装置。

17.根据权利要求11所述的计算装置,其中所述计算装置进一步包括用于在所述纹理过滤中向所述四个双线性样本应用相等过滤器权数,用于为所述像素产生唯一值的装置。

18.根据权利要求11所述的计算装置,其中所述计算装置进一步包括用于在所述纹理过滤中在所述像素与所述取出的纹素属性之间执行深度比较的装置。

说明书 :

用可编程偏移位置处理纹理样本的方法和系统

技术领域

[0001] 本发明大体上涉及计算机图形,且更明确地说,涉及一种用可编程偏移位置处理纹理样本的方法和系统。

背景技术

[0002] 除非本文另外指示,否则此部分中所描述的方法不作为本申请案中的权利要求书的现有技术,且不因包括在此部分中而被承认是现有技术。
[0003] 用以解决混叠假像的常用纹理过滤方法涉及沿着围绕映射到纹理空间中的像素中心的不同轴存取和过滤相等数目的纹素。此方法通常采用双线性过滤器或三线性过滤器。作为说明,图1A是纹理图100,其中现有技术2×2过滤器核心在单个时钟循环中存取围绕像素中心102的四个邻近纹素104、106、108和110且接着对所述纹素进行双线性过滤。
[0004] 然而,一些纹理应用以不同方式过滤纹素。一个实例是基于纹理的阴影图,且另一实例是高度动态范围(HDR)渲染。阴影映射是一种用以在计算机所产生的场景中增强真实感的阴影渲染技术。更具体地说,在阴影映射过程期间,首先从光的观点对场景进行渲染以产生特殊纹理图(通常称为阴影图),其中阴影图中的每一纹素存储与可见表面相关联的深度值。接着,从观测者的观点对场景视图进行渲染,通过此操作将屏幕空间中的处于(x,y)位置处的像素投影到光-空间坐标并接着测试其可见性。此测试将像素的深度值与存储在深度图中的相应位置处的深度值进行比较,以确定所述像素是否位于物体后面。基于所述比较结果,以阴影绘制所述像素或照亮所述像素。为了呈现令眼睛舒服的光滑阴影,可能需要对每个像素取样来自阴影图的四个以上纹素,且这些纹素通常不是彼此邻近的。
[0005] 就HDR渲染技术来说,其是一种用于保留具有显著对比差异的场景中的细节的技术。换句话说,如果在场景中存在黑暗和明亮区域两者,那么可使用此技术来准确表示所述区域两者。类似于上文描述的阴影映射技术,HDR渲染技术也可对每个像素取样四个以上纹素。这些纹素通常比2×2区更稀疏地分布,例如图1B所示的纹素124、126、128和130。
[0006] 在前述阴影映射和HDR渲染操作中采用现有技术2×2过滤器核心具有若干缺点。首先,2×2过滤器核心有可能仅能够在每个时钟循环中存取稀疏分布的纹素中的一者。因而,为了存取所有所需纹素,需要多个时钟循环。为了说明,假设纹理应用需要存取纹素
124、126、128和130,且使用现有技术2×2过滤器核心。因为2×2过滤器核心的尺寸没有大到足以同时覆盖所有四个所需纹素,但可覆盖所述四个纹素中的一者(例如纹素124),所以过滤器核心的可用纹理存取带宽的四分之三没有被使用。对于需要对每个像素存取四个以上纹素(例如,16个纹素)的纹理应用来说,2×2过滤器核心的低效率将甚至更为明显。第二,现有技术2×2过滤器核心双线性地权衡所取样的纹素,这可能对于某些纹理应用来说不是最佳的,例如涉及上文论述的阴影映射和HDR渲染操作的纹理应用。
[0007] 如前文说明,此项技术中因此需要一种纹理过滤技术,其可有效且灵活地取样指定纹素并至少解决上文陈述的问题。

发明内容

[0008] 本发明揭示一种用用户指定的偏移位置来执行纹理操作的方法和系统。具体地说,本发明的一个实施例陈述一种方法,其包括以下步骤:基于与投影在纹理图中的像素相关联的原始样本位置和由用户指定的第一偏移位置来导出第一目标纹素位置;以及取出所述第一目标纹素位置处的纹素属性以用于纹理操作。
[0009] 本文所揭示的本发明的至少一个优点是对用户指定的偏移位置所确定的位置处的纹理样本进行操作以便可灵活实施并有效进行纹理操作的能力。

附图说明

[0010] 为了能详细理解本发明的上述特征,可参看实施例来对上文简要概述的本发明作出更明确描述,所述实施例中的一些在附图中说明。然而,应注意附图仅说明本发明的典型实施例且因此不应认为是限制其范围,因为本发明可承认其它同等有效的实施例。
[0011] 图1A是纹理图,其中现有技术2×2过滤器核心在单个时钟循环中存取围绕像素中心的四个邻近纹素且接着对所述纹素应用双线性过滤;
[0012] 图1B是纹理图,其说明纹理操作中所需要的稀疏分布的纹素;
[0013] 图2A是经配置以实施本发明的一个或一个以上方面的计算装置的概念图;
[0014] 图2B是根据本发明一个实施例的图2A所示的GPU 250的一部分的示意图,所述GPU 250用可编程偏移位置进行纹理过滤操作;
[0015] 图2C是根据本发明一个实施例的纹理图的一部分,其说明具有可编程偏移位置的纹理操作;
[0016] 图2D是说明根据本发明一个实施例向目标纹素位置处的一些纹素应用深度图测试所得的一组结果的概念图;
[0017] 图2E是根据本发明一个实施例说明从单个用户指定的偏移位置导出纹素位置的概念图;以及
[0018] 图3是根据本发明一个实施例的用于在纹理单元中用可编程偏移位置执行纹理操作的方法步骤的流程图。

具体实施方式

[0019] 在本发明中,术语“用户”始终广义上指代在计算装置上执行的软件程序的用户或开发者。另外,术语“用户指定”和“可编程”可互换使用以限制可由用户指定或修改的纹理样本位置或纹理样本偏移。纹理样本通常称为纹素。同样,本文所提及的“计算机可读媒体”的一些实例包括(但不限于)非易失性媒体(例如,光盘或磁盘)和易失性媒体(例如,动态存储器)。
[0020] 图2A是经配置以实施本发明的一个或一个以上方面的计算装置200的概念图。计算装置200包括中央处理单元(CPU)202、系统接口204、系统存储器210、图形处理单元(GPU)250、GPU本地存储器260和显示器270。CPU 202连接到系统存储器210和系统接口
204。CPU 202执行存储在系统存储器210中的编程指令,对存储在系统存储器210中的数据进行操作,且通过系统接口204与GPU 250通信。在替代实施例中,CPU 202、GPU 250、系统接口204或其任何组合可集成为单个处理单元。另外,GPU 250的功能性可包括在芯片组或其它某种类型的专用处理单元或协处理器中。系统存储器210通常包括动态随机存取存储器(DRAM),其经配置以直接或替代地经由系统接口204连接到CPU 202(如图所示)。
GPU 250接收由CPU 202传输的指令并处理所述指令,以便在显示器270上呈现GPU本地存储器260中所存储的图形数据和图像。显示器270是能够发射对应于输入数据信号的视觉图像的输出装置。
[0021] 系统存储器210含有应用程序212、高级着色器程序214、应用程序编程接口(API)216和GPU驱动器218。应用程序212可调用高级着色器程序214的一个或一个以上实例。高级着色器程序通常包括经设计以对GPU 250内的一个或一个以上处理引擎进行操作的高级编程指令的源代码文本。可通过GPU驱动器218中所包括的编译器或汇编器或替代地通过在计算机装置200或其它计算机装置上操作的脱机编译器或汇编器将高级着色器程序214翻译成可执行程序对象,例如可执行着色器程序262。
[0022] 可执行着色器程序262、纹理缓冲器266和帧缓冲器268全部驻留在GPU本地存储器260中。可执行着色器程序262在由GPU 250中的像素着色器引擎254执行时向渲染管线252的不同组件发布指令。纹理缓冲器266通常存储纹理图,其中包括阴影图。帧缓冲器268包括至少一个二维表面,其用于驱动显示器270。
[0023] 渲染管线252包括像素着色器引擎254,其进一步包括纹理单元256。纹理单元256能够从纹理缓冲器266用可编程偏移位置检索所请求的纹素属性,处理器过滤器权数,且执行深度比较操作和纹理过滤操作。随后段落将进一步详细说明纹理单元256的功能和操作。
[0024] 图2B是根据本发明一个实施例的图2A所示的GPU 250的一部分的示意图,所述GPU 250用可编程偏移位置进行纹理过滤操作。为了说明,假设纹理过滤操作是为图2C所示的屏幕像素P产生阴影状态值S。在一个实施方案中,向纹理单元256发布的着色器程序指令包括输出自变量S和多个输入自变量,例如P、偏移i和纹理[n]。此处,S表示所计算的阴影结果的占位符。P表示投影在阴影图280中的屏幕像素的纹理坐标。偏移i指代阴影图280中的可编程(ui,vi)对。纹理[n]对应于纹理缓冲器266中所存储的特定阴影图,例如阴影图280。
[0025] 使用P、S、偏移i和纹理[n]作为输入,纹理单元256通过将偏移i应用于P来导出目标纹素位置D1、D2、D3和D4。举例来说,如果P由(u0,v0)表示且偏移i由(u偏移,v偏移)表示,那么D1于是为(u0+u偏移,v0+v偏移)或(u1,v1)。另外,如图2C所示,其中原点在P处,每对(ui,vi)还与向量Vi相关联。举例来说,V1与P处的原点和偏移1相关联。此外,在此实施方案中,用户指定四个不同的(u,v)对,且不需要其彼此对称。具体地说,偏移1中的u1长度不需要与偏移2、偏移3和偏移4中的u或v长度中的任一者相等。类似地,偏移1中的v1长度也不需要与偏移2、偏移3和偏移4中的v或u长度中的任一者相等。因此,覆盖这些目标纹素位置的过滤器核心的尺寸和形状可以是任意的。所属领域的技术人员应容易明白:在不超过本发明范围的情况下用N个偏移对来按比例缩放到N个样本。
[0026] 通过目标纹素位置,纹理单元256向纹理缓冲器266发送读取请求以取出D1、D2、D3和D4处的恰当纹素属性,例如深度值。接着,将所述深度值中的每一者与深度图测试中的与P相关联的深度值进行比较。图2D是说明向纹素D1、D2、D3和D4应用深度图测试所得的一组结果的概念图。与P相关联的深度值是大于还是小于存储在D1、D2、D3和D4处的深度值由1或0表示。为了导出最终阴影状态值S,纹理单元256向深度图测试的结果应用过滤器权数。在一个实施例中,纹理单元256通过仅对深度图测试的结果求平均值来计算阴影状态值以模糊混叠效应。此处,因为存在四个样本,所以四个过滤器权数中的每一者等于1/4。或者,纹理单元256还可应用基于所取样纹素与所投影像素之间的相对距离的过滤器权数,例如在常规的双线性过滤器中。纹理单元256将最终阴影状态值S返回到像素着色器引擎254。
[0027] 尽管前述实施例描述其中从用户指定的偏移位置导出每一所取样纹素的位置的一个实施方案,但本发明预期用以导出目标纹素位置的其它可能方式。根据本发明的替代实施例,图2E是说明从单个用户指定的偏移位置导出纹素位置的概念图。明确地说,代替如前述实施例接收四个用户指定的(u,v)对,纹理单元256此处接收单个偏移i,例如(u1,v1)。接着,在没有进一步用户干涉的情况下,纹理单元256对称地将所述(u1,v1)对转换以产生其它三个偏移。在一个实施方案中,偏移2、偏移3和偏移4分别为(v1,-u1)、(-v1,u1)和(-u1,-v1)。举例来说,如果(u1,v1)具有值(3,1),那么偏移2、偏移3和偏移4分别具有值(1,-3)、(-1,3)和(-3,-1)。通过这些偏移1、偏移2、偏移3和偏移4以及所投影屏幕像素P的原始样本位置,计算目标纹素位置D1’、D2’、D3’和D4’。值得注意的是,不同于图2C所示和上文论述的实施方案,此实施方案中所采用的对称转换自动产生彼此镜射的目标纹素位置,且覆盖这些镜射纹素的过滤器核心的尺寸和形状不能是任意的。
[0028] 根据本发明的又一实施例,纹理单元256向所有偏移应用用户指定的比例因数a。假设a为3。回头参看上文论述的实例,按比例缩放的偏移1、偏移2、偏移3和偏移4分别变为(9,3)、(3,-9)、(-3,9)和(-9,-3)。使用所述比例因数,可容易修改覆盖目标纹素位置的过滤器核心的尺寸。
[0029] 根据本发明的另一实施例,代替仅指定单个(u,v)对和依赖于纹理单元256来产生其它三个偏移,纹理单元256接收两个用户指定且非镜射的(u,v)对,并在没有进一步用户干扰的情况下产生其它两个对。举例来说,回头参看图2E,假设纹理单元256接收(u1,v1)和(-v1,u1)。在此实施方案中,纹理单元256对称地镜射所接收的(u,v)对以分别产生(-u1,-v1)、(v1,-u1)。
[0030] 为了触发纹理单元256执行前述操作中的任一者,一种方法是向纹理单元256发布具有某些输入自变量的特定着色器程序指令。此类别的着色器程序指令称为“可编程纹素位置(PTP)指令”。所述PTP指令的输入自变量中的一者可以是一个用户指定的偏移位置或一阵列用户指定的偏移位置。或者,所述输入自变量中的一者触发纹理单元256查找由用户指定并存储在表中的一个或一个以上偏移位置。根据本发明的一个实施例,PTP指令的一些实例不受限制地包括:
[0031] 取样_ptp
[0032] 取样_ptp2
[0033] 取样_ptp4
[0034] 取样_c_ptp
[0035] 取样_c_ptp2
[0036] 取样_c_ptp4
[0037] 加载4_ptp
[0038] 加载4_ptp2
[0039] 加载4_ptp4
[0040] 加载4_c_ptp
[0041] 加载4_c_ptp2
[0042] 加载4_c_ptp4
[0043] 执行上述PTP指令中的任一者会触发纹理单元256存取特定偏移位置处与所投影像素相关联的许多纹素。后缀“ptp”此处意味着在指令中只为一个像素指定一个可编程偏移位置。响应于具有“ptp”后缀的此指令,纹理单元256基于单个用户指定的偏移位置来产生其它三个偏移位置。后缀“ptp2”意味着在指令中指定两个可编程偏移位置。响应于具有“ptp2”后缀的指令,纹理单元256产生镜射所述两个用户指定的偏移位置的其它两个偏移位置。最后,后缀“ptp4”用于指示在指令中定义四个可编程偏移位置。先前段落详细说明了从用户指定的偏移位置导出偏移位置的一些实施方案。
[0044] 图3是根据本发明一个实施例的用于在纹理单元256中执行PTP指令的方法步骤流程图,其涉及可编程偏移位置。更具体地说,结合图2A所示的像素着色器引擎254和纹理单元256,在像素着色器引擎254执行可执行着色器程序262时,可向纹理单元256发布具有至少一个用户指定的偏移位置的PTP指令。为了说明,假设所发布的PTP指令具有后缀“ptp4”且含有四个(u,v)对。在步骤302中,纹理单元256接收指令并从所述指令的后缀中辨认出存在多个(u,v)对。在步骤304中,纹理单元256检索所述四对用户指定的偏移位置,且接着在步骤306中导出目标纹素位置。另一方面,如果所发布的PTP指令改为具有后缀“ptp”,那么纹理单元256仍在步骤304中检索单个用户指定的偏移位置,并在步骤306中执行上文详述的对称转换以导出其它三个目标纹素位置。
[0045] 一旦确定了目标纹素位置,纹理单元256便在步骤308中从PTP指令中所指定的纹理图中取出相关纹素属性,例如深度值。在步骤310中,取决于所发布的PTP指令的类型和内容,纹理单元256执行所述指令所请求的操作。举例来说,如果PTP指令是取样_[ptp/ptp2/ptp4],那么过滤所取出的纹素属性并对每个像素产生唯一纹素。如果PTP指令是取样_c_[ptp/ptp2/ptp4],那么对所取出的纹素属性执行深度比较,并将所述结果过滤以对每个像素产生唯一纹素。如果PTP指令是加载4_[ptp/ptp2/ptp4],那么对每个像素返回所取出的纹素属性。既不执行深度比较操作,也不执行过滤操作。如果PTP指令是加载4c_[ptp/ptp2/ptp4],那么对所取出的纹素属性执行深度比较,且对每个像素返回所述结果。不执行过滤操作。
[0046] 在一个实施方案中,此新类别的PTP指令是图2A所示的API 216的一部分,使得其可由使用API 216开发的任何应用程序调用且可不依赖于硬件平台。而且,这些指令结合纹理单元256使得开发者能够有效实施产生具有较大尺寸和动态产生的形状的过滤器核心的取样方法,例如随机取样技术。此外,除上文论述的双线性过滤和等效平均过滤外,所属领域的技术人员还应容易明白在例如各向异性过滤和各向同性过滤等其它过滤方案中使用可编程偏移位置。举例来说,如果各向异性过滤操作需要查找并过滤16个样本,那么在一个实施方案中,将所述PTP指令中的一者发布四次,使得向所有16个样本应用16个偏移位置。
[0047] 以上描述内容说明了本发明的各种实施例连同可如何实施本发明各方面的实例。不应将以上实例、实施例、指令语义和图式认为是仅有实施例,且展现其是为了说明由所附权利要求书界定的本发明的灵活性和优点。