用于对层次深度图采样的系统、方法和计算机程序产品.pdf

上传人:zhu****69 文档编号:6148801 上传时间:2019-04-19 格式:PDF 页数:21 大小:4.21MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310606910.X

申请日:

2013.11.25

公开号:

CN103838548A

公开日:

2014.06.04

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 9/30申请公布日:20140604|||实质审查的生效IPC(主分类):G06F 9/30申请日:20131125|||公开

IPC分类号:

G06F9/30

主分类号:

G06F9/30

申请人:

辉达公司

发明人:

摩根·麦圭尔; 大卫·帕特里克·利布基; 麦克尔·托马斯·马拉

地址:

美国加利福尼亚州

优先权:

2012.11.26 US 13/685,599

专利代理机构:

北京市磐华律师事务所 11336

代理人:

谢栒;张玮

PDF下载: PDF下载
内容摘要

提供用于对层次深度图采样的系统、过程和计算机程序产品。用于对层次深度图采样的方法包括以下步骤:生成层次深度图,以及基于样本像素和目标像素之间的差异从层次深度图的目标层级读取与样本像素相关联的值。层次深度图包括至少两个层级。

权利要求书

权利要求书
1.  一种方法,包括:
生成层次深度图,其中所述层次深度图包括至少两个层级;以及
基于样本像素和目标像素之间的差异从所述层次深度图的目标层级读取与所述样本像素相关联的值。

2.  根据权利要求1所述的方法,所述层次深度图包括:
基本层级,具有第一分辨率;以及
第一层级,具有第二分辨率,其中所述第二分辨率小于所述第一分辨率。

3.  根据权利要求2所述的方法,其中所述第二分辨率是所述第一分辨率一半的分辨率。

4.  根据权利要求2所述的方法,所述层次深度图进一步包括具有第三分辨率的第二层级,其中所述第三分辨率小于所述第二分辨率。

5.  根据权利要求2所述的方法,其中所述基本层级存储多个值,每个值与数字图像的不同像素相关联,并且其中所述第一层级存储从所述基本层级所选择的值的子集。

6.  根据权利要求5所述的方法,其中所述值的子集基于旋转网格模式来选择。

7.  根据权利要求6所述的方法,其中所述旋转网格模式由将在所述层次深度图的特定层级的值映射到在所述层次深度图的下一较低层级的所选择的值的函数来支配,其中所述值与第一坐标和第二坐标相关联,并且所述所选择的值与第三坐标和第四坐标相关联,其中所述第三坐标等于二倍的所述第一坐标与所述第二坐标和1的按位与和1的按位异或的和,并且所述第四坐标等于二倍的所述第二坐标与所述第一坐标和1的按位与和1的按位异或的和。

8.  根据权利要求1所述的方法,其中所述层次深度图的所述目标层级通过将所述样本像素的屏幕空间位置与目标像素的屏幕空间位置之间的距离与屏幕空间半径增量值的比取以二为底的对数来计算。

9.  根据权利要求8所述的方法,其中所述屏幕空间半径增量值基于以下各项中的至少一个来确定:数字图像的分辨率、图形处理单元的配置为 并行访问所述层次深度图的核心的数目、以及配置为临时地存储所述层次深度图的部分的高速缓存的大小。

10.  根据权利要求1所述的方法,其中生成所述层次深度图包括:
在图形处理器中渲染多个三维对象以生成深度缓冲区;
基于所述深度缓冲区中的值填充所述层次深度图的基本层级;以及
通过从所述层次深度图的所述基本层级选择值的子集来生成所述层次深度图的第一层级。

11.  根据权利要求1所述的方法,进一步包括:
选择与所述目标像素相关联的多个样本像素;
针对所述多个样本像素中的每个特定样本像素:
确定所述层次深度图的相应层级用于所述特定样本像素,以及
从所述层次深度图的所述目标层级读取样本值用于所述特定样本像素。

12.  根据权利要求11所述的方法,进一步包括对与目标像素的2x2阵列相对应的样本值的2x2阵列应用双边滤波器以生成经滤波的样本值。

13.  根据权利要求12所述的方法,进一步包括通过对读取自所述层次深度图的经滤波的样本值的图应用具有数个抽头的双通道双边滤波器来生成环境光遮蔽图。

14.  根据权利要求13所述的方法,其中应用在所述双通道双边滤波器的每个通道中的抽头的数目等于7。

15.  一种非暂时性计算机可读存储介质,其存储指令,所述指令当由处理器所执行时,使所述处理器实施步骤包括:
生成层次深度图,其中所述层次深度图包括至少两个层级;以及
基于样本像素和目标像素之间的差异从所述层次深度图的目标层级读取与所述样本像素相关联的值。

16.  根据权利要求15所述的非暂时性计算机可读存储介质,所述层次深度图包括:
基本层级,具有第一分辨率;以及
第一层级,具有第二分辨率,其中所述第二分辨率小于所述第一分辨率。

17.  根据权利要求16所述的非暂时性计算机可读存储介质,其中所述 基本层级存储多个值,每个值与所述数字图像的不同像素相关联,并且其中所述第一层级存储从所述基本层级所选择的值的子集。

18.  一种系统,包括:
处理器,其配置为:
生成层次深度图,其中所述层次深度图包括至少两个层级;以及
基于样本像素和目标像素之间的差异从所述层次深度图的目标层级读取与所述样本像素相关联的值。

19.  根据权利要求18所述的系统,其中所述处理器包括图形处理单元,所述图形处理单元包括多个处理核心。

20.  根据权利要求19所述的系统,其中所述处理核心中的两个或更多个配置为并行地从所述层次深度图读取值。

说明书

说明书用于对层次深度图采样的系统、方法和计算机程序产品
技术领域
本发明涉及计算机图形,并且更具体地,涉及利用深度缓冲区的算法。
背景技术
深度缓冲区存储指示用于三维场景中的对象表面的深度的多个值。针对许多类型的计算机图形渲染应用实现深度缓冲区。深度值可用来确定相对于特定视点,对象是否被其他对象所遮蔽。典型地,深度缓冲区包括与数字图像中的相应多个像素相关联的多个值。深度缓冲区中的每个值可表示和与特定像素相对应的视点最靠近的对象的深度。
一些算法,诸如屏幕空间环境光遮蔽算法,对深度缓冲区内的多个不同值采样以针对每个像素计算环境光遮蔽(AO)值。这些技术的净性能由于深度缓冲区的大量分散的读取而受到损害,导致高速缓存效率低下。因此,存在解决该问题和/或与现有技术相关联的其他问题的需要。
发明内容
提供用于对层次深度图采样的系统、方法和计算机程序产品。用于对层次深度图采样的方法包括下面的步骤:生成层次深度图,以及基于样本像素和目标像素之间的差异(difference)从层次深度图的目标层级读取与样本像素相关联的值。层次深度图包括至少两个层级。
附图说明
图1示出根据一个实施例的、用于对层次深度图采样的方法的流程图;
图2示出根据一个实施例的、用于实现可缩放(scalable)环境光遮蔽算法的方法的流程图;
图3示出根据一个实施例的层次深度图;
图4示出根据一个实施例的、可缩放环境光遮蔽算法中的用于目标像素的多个样本像素;
图5示出根据一个实施例的并行处理单元(PPU);
图6示出根据一个实施例的、图5的流多处理器;以及
图7示出在其中可实现各先前实施例的各架构和/或功能性的示例性系统。
具体实施方式
许多不同类型的渲染算法在作为算法一部分的一个或多个计算中利用深度缓冲区(即Z缓冲区)。例如,环境光遮蔽(AO)算法生成着色效果以近似光在真实世界中辐射的路线。AO算法确定附近的几何体对表面上的具体点的遮蔽量。如果附近的几何体遮蔽该点,那么该点可被渲染以包括阴影(例如采用较低强度来渲染)。然而,如果附近的几何体不遮蔽该点,那么该点可被渲染而没有阴影(例如采用较高强度来渲染)。本领域普通技术人员将理解的是,使用常规GPU同时维持交互的帧率无法以全高清晰度分辨率实时实施在模型空间中所计算的环境光遮蔽(即通过对每个对象采样来确定对象是否遮蔽了点)。因此,对全AO算法生成充分近似值的一项技术是屏幕空间环境光遮蔽(SSAO)。
在SSAO算法中,模型首先被光栅化以产生深度缓冲区,该深度缓冲区将每个像素位置(或如果以子像素分辨率实现深度缓冲区那么样本位置)与最靠近用于像素的视点的几何体的深度相关联。一旦生成深度缓冲区,那么可通过对多个附近的像素采样来计算用于像素的近似的环境光遮蔽,以确定该像素是否可能被附近的几何体所遮蔽。在一些SSAO算法中,用于每个像素的深度和表面法线二者可用来确定近似的遮蔽。常规SSAO算法由于深度缓冲区中所采样的点的分散而性能不佳,导致高速缓存效率低下并生成大量长时延存储器访问请求。
公开了用于对深度缓冲区编码的示例性技术,其提高对深度缓冲区中的大量分散条目采样的算法的性能,从而提高高速缓存效率并减少用于对附近的条目采样的长时延存储器访问请求的数目。
图1示出根据一个实施例的、用于对层次深度图采样的方法100的流程图。在步骤102,生成层次深度图。在一个实施例中,层次深度图是具有两个或更多个层级的值的阵列,其中基于深度缓冲区中的多个值填充(populate)第一层级并且采用来自第一层级的值的子集填充第二层级。在 步骤104,从层次深度图的目标层级读取与样本像素相关联的值。在一个实施例中,目标层级基于样本像素与目标像素的距离。应注意的是,虽然本文结合层次深度图阐述各可选特征,但这类特征仅出于示例性目的而阐述,并且其不应被认为是以任何方式进行限制。
图2示出根据一个实施例的、用于实现可缩放环境光遮蔽(SAO)算法的方法200的流程图。应特别注意的是,下面的信息仅出于示例性目的而阐述,并且其不应被认为是以任何方式进行限制,因为其他算法可能利用层次深度图以补充或代替由图2的流程图所示出的SAO算法。
在步骤202,通过在图形处理单元(GPU)中实施高精度Z-pass来生成深度缓冲区。在一个实施例中,高精度Z-pass被实施为经过GPU的仅深度预通过(pre-pass)。模型数据集(即诸如三角形、四边形、或三角形条带的图形基元)被传送到GPU。随后在深度上变换并光栅化模型数据以产生用于每个片段(即与给定表面对象相关联的像素的一部分)的z坐标。针对与该像素位置相关联的所有其他z坐标测试该z坐标以确定最靠近特定视点的对象,并且如果该z坐标是最靠近的对象,那么将该z坐标存储在深度缓冲区中的与该像素位置相对应的条目处。一旦所有的模型数据已被光栅化,那么最终产生的深度缓冲区表示从视点到在经光栅化的图像中的每个像素位置处的最靠近的表面的光线的长度。
为了增加SAO算法中的结果的准确度,应谨慎地采用可能的最高精度来填充深度缓冲区。在一个实施例中,可通过实现下面的优化来增加深度缓冲区的精度。在将模型视图投影矩阵投向(cast)用于GPU上的顶点着色器中所实施的变换的单精度之前,可在主机处理器上以双精度计算模型视图投影矩阵。对于模型视图投影矩阵,可在负无穷(-∞)的深度处选择远裁剪平面,其可减少当计算矩阵积时所实施的浮点操作的数目。此外,当在GPU中计算变换时,可通过在以列为主的矩阵(例如模型视图投影矩阵)的左侧乘以矢量来节省一半精度。应理解的是,上述优化仅是用于提高算法准确度的建议,并且其不应被认为是以任何方式进行限制。
在步骤204,基于深度缓冲区生成层次深度图。在一个实施例中,深度缓冲区用来填充层次深度图的基本层级。典型地,由GPU所生成的深度缓冲区将深度值存储为0和1之间的浮点值。层次深度图的基本层级将深度缓冲区的深度值转换成相机空间值,其指示近裁剪平面(zn)的位置和远 裁剪平面(zf)的位置之间的z值。通过选择来自层次深度图的下一最低层级的值的子集来填充层次深度图的相继较高层级。层次深度图包括至少两个层级,与数字图像的全分辨率相对应的基本层级,以及与小于该基本层级的分辨率(例如基本层级的分辨率的一半)相对应的第一层级。层次深度图的较高层级(即1级、2级等)确保采用高的高速缓存效率读取空间分布的样本(即,当采样的像素较远离目标像素位置时,由GPU所并行处理的邻近像素将典型地从层次深度图读取相同样本)。因为层次深度图的每个层级的一小区域留在高速缓存中,所以较少的读取请求将被传送到存储器(即DRAM),得到高带宽和低时延。
在步骤206,针对正针对其执行SAO算法的数字图像的每个目标像素,选择多个样本像素。在一个实施例中,对于每个目标像素,多个样本像素分布在围绕点C的半球上,该半球的中心点在由从视点以与目标像素相关联的方向所投影的光线所相交的表面上的点处。在一个实施例中,根据值zC重构点C,该值zC读取自层次深度图的基本层级、与由x坐标(x′)和y坐标(y′)所给定的目标像素相关联的索引处。点C的x坐标和y坐标由等式给定:
xC=zC·(1-P0,2P0,0-2(x+1/2)w·P0,0)]]>                   (等式1)
yC=zC·(1+P1,2P1,1--2(y+1/2)h·P1,1)]]>                  (等式2)
n^C=normalize(∂C∂y×∂C∂x)]]>                       (等式3)
等式1和2中,w和h表示数字图像的宽度和高度,并且P是模型视图投影矩阵。等式1和2在像素(x′,y′)处对投影矩阵求逆以找到相机空间位置点C。等式3基于z的屏幕空间梯度给定在点C处的估计的表面法线,其给定半球的定向。半球r的世界空间半径与由如下等式所给定的屏幕空间半径r’相对应:
r=-r·SZC]]>                          (等式4)
在等式3中,S’是在z等于负1米的一米半径对象的像素大小。在一 个实施例中,多个样本像素以螺旋模式置于目标像素周围。每个像素样本(si)位于与由等式7所给定的目标像素的不同的距离(hi)的位置,如下文所示。样本像素中的每一个的位置可由下面的公式所给定:
si=<x,y>+hiu^i]]>                                 (等式5)
αi=1s(i+0.5)]]>                                     (等式6)
                      (等式7)
u^i=<cosθ,sinθ>]]>                                  (等式8)
                           (等式9)
在等式7中,常数τ是螺旋中的转数,并且角偏移是由等式9所给定的旋转角。在其他实施例中,多个样本像素可随机分布在半球的表面上。然而,应注意的是,如果多数样本位于半球的仅一部分上那么随机分布具有使结果偏差的潜质。
在步骤208,针对与目标像素相关联的每个样本像素,通过对层次深度图应用双边滤波器来生成经滤波的值。每个样本像素与层次深度图的特定层级(mi)相关联。通过选择与样本像素的位置相关联的层次深度图的特定层级中的值来给定用于样本像素的样本值,如下面等式所给定的:
                           (等式10)
zi=zmi(s^i2mi)]]>                              (等式11)
在公式10中,与样本像素(si)相关联的层级(mi)被钳制到大于或等于零并小于或等于层次深度图中的最高层级的值。常数q′是表示与目标像素的距离的屏幕空间半径增量,由样本像素所引用的层次深度图的层级以该增量改变到层次深度图的不同层级。在一个实施例中,hi′和q′的比被向上舍入到下一最高整数。用于q′的优化值可取决于实现SAO算法的架构。已产生如由一些实验架构所计算的精确环境光遮掩图的、用于q’的示例值在8和32之间。
通过将等式1和2应用到zi(即zC=zi)来重构每个样本像素si。在一个实施例中,可将双边2x2滤波器应用到所生成的样本像素,将四个权重值平均以减少跨连续表面的方差(即滤波器内核采用由所生成的样本像素 和附近的像素之间的深度上的差异所调整的高斯权重来生成经滤波的值)。
在步骤210,通过使用具有数个抽头的双边滤波器对在步骤208中所生成的原始样本图滤波,来针对数字图像的像素中的每一个生成环境光遮蔽图。双边滤波器确保最终值是跨表面平滑的,而不应用该滤波器则跨深度不连续。在一个实施例中,应用每通道中具有七个抽头的双通道双边一维滤波器(一水平通道和一垂直通道),其基于每目标像素196个样本值(基于步骤208中所应用的2x2双边滤波器和步骤210中应用的双通道双边一维滤波器中的7x7个抽头)生成最终AO值。可通过将像素位置在每个方向上递增三个像素来展开抽头中的每一个。在其他实施例中,可在双通道双边一维滤波器中实现不同数目的抽头或抽头之间的距离。
现在将关于各可选架构和特征来阐述更多示例性的信息,根据用户的期望可以采用所述架构和特征来实现或不实现前述的框架。应特别注意的是,下面的信息出于示例性的目的而阐述并且其不应被认为是以任何方式进行限制。下面特征中的任何一个可以可选地合并,排除或无需排除所述的其他特征。
图3示出根据一个实施例的层次深度图300。如图3所示,层次深度图300的基本层级310(Z0)包括与数字图像中的相应多个像素相关联的多个深度值。如本领域中已知的,可从模型中渲染表示几何体数据集的二维(2D)视角的数字图像。对于模型中的每个3D对象,对象(即诸如三角形或三角形条带的基元)被投影到2D视平面上,并且定义3D对象的投影与2D视平面的像素的交集的覆盖掩码被确定。对于被覆盖的像素中的每一个,在与像素相对应的点处的3D对象的表面的深度被确定并与先前经渲染的3D对象中的每一个的、存储在深度缓冲区中的深度相比较。如果3D对象的表面的深度比存储在深度缓冲区中的深度更靠近于视平面,那么更新深度缓冲区并根据用于对象的顶点属性(例如颜色属性、纹理坐标等)来渲染像素。
层次深度图300的基本层级310填充自与数字图像相关联的深度缓冲区。换句话说,基本层级310中的深度值中的每一个与存储在深度缓冲区中的、用于数字图像的像素中的一个的z值相对应。例如,位于基本层级310中的条目Z0(0,0)处的第一深度值与位于数字图像的左上角的数字图像中的第一像素相对应。在一些实施例中,深度值中的每一个与数字图像 的像素的一部分相对应,诸如在图形管线中实现多重采样抗锯齿(MSAA)的实施例。
层次深度图300包括附加层级(例如Z1、Z2等),其包括来自层次深度图300的基本层级310的值的子集。附加层级中的每一个的分辨率可小于层次内的下一较低层级。例如,在一个实施例中,层次深度图300的第一层级320的分辨率是层次深度图300的基本层级310的分辨率的一半(垂直地和水平地二者)。在其他实施例中,层次深度图300的每个相继层级的分辨率可减少不同的量,诸如层次深度图300的每个相继层级的分辨率减少四分之一。
如图3所示,层次深度图300包括分辨率是层次深度图300的基本层级310的一半的第一层级320(Z1)。存储在第一层级320(Z1)中的深度值中的每一个与存储在层次深度图300的基本层级310中的深度值的单一一个相对应。不同于其中较低分辨率mip-map中的值被计算为从较高分辨率mip-map所采样的多个值的平均值的mip-map,层次深度图300的特定层级中的值的每一个选择自层次中的先前层级的每N个值中的一个(例如每4个值中的一个)。
在一个实施例中,基于旋转网格模式(rotated grid pattern)来选择从层次深度图300的下一较低层级中所选择的值。等式12示出根据一个这类旋转网格模式支配值的选择的等式:
        (等式12)
换句话说,从层次深度图300的m层级选择层次深度图300的m+1层级中所存储的具有x’坐标和y’坐标的深度值,层次深度图300的m层级(1)具有第一坐标,其计算为二倍的x’坐标加上y’坐标和1的按位与和1的按位异或;以及(2)具有第二坐标,其计算为二倍y’坐标加上x’坐标和1的按位与和1的按位异或。上文阐述的旋转网格模式针对层次深度图300的特定层级中的每十六个深度值选择四个深度值以生成层次深度图300的下一相继层级中的四个相应的值。其他实施例可基于不同类型的映射来选择深度值,诸如选择像素的每2x2阵列中的左上值的映射或针对每六十四 个深度值(在分辨率被四等分的情况下)选择四个深度值的映射。预期到其他类型的映射在本公开的范围内。
图3示出使用由公式12所示出的旋转网格模式的映射。如图3所示,层次深度图300的第一层级320中的第一深度值325(0)与层次深度图300的基本层级310中的相应第一深度值315(0)相对应。根据等式12,第一深度值325(0)与用于条目Z1(0,0)的坐标(例如0,0)相关联,其与层次深度图300的基本层级310中的条目Z0(1,1)相对应。类似地,层次深度图300的第一层级320中的第二深度值325(1)与层次深度图300的基本层级310中的第二相应深度值315(1)相对应,层次深度图300的第一层级320中的第三深度值325(2)与层次深度图300的基本层级310中的第三相应深度值315(2)相对应,并且层次深度图300的第一层级320中的第四深度值325(3)与层次深度图300的基本层级310中的第四相应深度值315(3)相对应。第二深度值325(1)与用于条目Z1(1,0)的坐标(例如1,0)相关联,其与层次深度图300的基本层级310中的条目Z0(3,0)相对应。第三深度值325(2)与用于条目Z1(0,1)的坐标(例如0,1)相关联,其与层次深度图300的基本层级310中的条目Z0(0,3)相对应。第四深度值325(3)与用于条目Z1(1,1)的坐标(例如1,1)相关联,其与层次深度图300的基本层级310中的条目Z0(2,2)相对应。
层次深度图300还包括分辨率是层次深度图300的第一层级320的一半的第二层级330(Z2)。换句话说,第二层级330的分辨率是层次深度图300的基本层级310的四分之一。存储在第二层级330的条目中的深度值,根据用来将存储在第一层级320的条目中的深度值映射到存储在层次深度图300的基本层级310的条目中的深度值的相同映射,与存储在层次深度图300的第一层级320的条目中的深度值相对应。例如,存储在层次深度图300的第二层级330中的条目Z2(0,0)中的第一深度值335(0)与存储在层次深度图300的第一层级320中的条目Z1(1,1)中的第四深度值325(3)相对应。存储在层次深度图300的第二层级330中的条目Z2(0,0)中的第一深度值335(0)还与存储在层次深度图300的基本层级310中的条目Z0(2,2)中的第四深度值315(3)相对应。在一个实施例中,可并行地生成层次深度图300的不同层级。
虽然未示出,但层次深度图300中可包括附加层级,直到仅包括存储 在条目ZK(0,0)中的单个深度值的最终层级(即第K层级)。只要层次深度图300除基本层级310以外包括至少一个附加层级,则具体实现方案可省略层次深度图300的任何数目的层级。
图4示出根据一个实施例的、用于SAO算法中的目标像素420的多个样本像素430。如上文图2的流程图所述,SAO算法突出一项用于对来自层次深度图300的值采样以生成环境光遮蔽图的技术。为了针对数字图像中的目标像素420计算环境光遮蔽值,SAO算法对深度缓冲区中的多个点采样以确定附近的几何体是否可能遮蔽对象表面上的与目标像素相对应的点。为了针对目标像素420计算环境光遮蔽值,进程(即一个或多个线程)对层次深度图300中的、与数字图像400中的目标像素420附近的多个样本像素430相对应的多个位置采样。
在一个实施例中,当从层次深度图300读取样本时,线程诸如通过对样本像素430的位置应用等式10来确定应从层次深度图300的哪个层级mi读取样本。圆410表示与层次深度图300的不同层级相对应的屏幕空间的部分。例如,第一圆410(0)表示一倍(即20)的qi并具有四个像素的半径。第二圆410(1)表示二倍(即21)的qi并具有八个像素的半径。第三圆410(2)表示四倍(即22)的qi并具有十六个像素的半径。如上所述,屏幕空间半径增量qi典型地在8和32之间以得到好的结果。然而,出于示例性目的在图4中示出四个像素的屏幕空间半径增量。
通过从层次深度图300的基本层级310读取值来实施针对位于第一圆410(0)内的每个样本像素430读取深度值。通过从层次深度图300的第一层级320读取值来实施针对位于第一圆410(0)和第二圆410(1)之间的每个样本像素430读取深度值。通过从层次深度图300的第二层级330读取值来实施针对位于第二圆410(1)和第三圆410(2)之间的每个样本像素430读取深度值,以此类推。
例如,如图4所示,关于数字图像400的左上像素(即具有x坐标0和y坐标0的像素),目标像素420可具有x坐标24和y坐标8。图4中的阴影像素中的每一个表示在环境光遮蔽值的计算中所使用的样本像素430。关于数字图像400的左上像素,样本像素430(0)位于x坐标30和y坐标7处。为了确定从层次深度图300的哪个层级读取与样本像素430(0)相关联的深度值,计算样本像素430(0)到目标像素420的距离。 如图4所示,用于样本像素430(0)的距离hi近似地是5个像素,并且用于样本像素430(0)的值zi从层次深度图300的第一层级320读取。
图5示出根据一个实施例的并行处理单元(PPU)500。虽然本文提供并行处理器作为PPU500的示例,但应特别注意的是,这类处理器仅出于示例性目的而阐述,并且可出于相同目的采用任何处理器以对其进行补充和/或替换。在一个实施例中,PPU500配置为在两个或更多个流多处理器(SM)550中并发地执行多个线程。线程(即执行的线程)是在特定SM550内执行的指令集的实例化。下文结合图6更详细描述的每个SM550可包括但不限于一个或多个处理核心、一个或多个加载/存储单元(LSU)、一级(L1)高速缓存、共享存储器等。
在一个实施例中,PPU500包括输入/输出(I/O)单元505,其配置为通过系统总线502传送和接收来自中央处理单元(CPU)(未示出)的通信(即命令、数据等)。I/O单元505可实现用于高速外围部件互连(PCIe)总线上的通信的PCIe接口。在可替代实施例中,I/O单元505可实现其他类型的公知总线接口。
PPU500还包括主机接口单元510,其将命令解码并将命令传送到PPU500的网格管理单元515或如命令可指定的其他单元(例如存储器接口580)。主机接口单元510配置为路由PPU500的各逻辑单元之间的通信。
在一个实施例中,由CPU将被编码为命令流的程序写入缓冲区。缓冲区是例如存储器504或系统存储器的存储器中的区域,其可由CPU和PPU500二者访问(即读/写)。CPU将命令流写入缓冲区并随后将指向命令流开始的指针传送到PPU500。主机接口单元510为网格管理单元(GMU)515提供指向一个或多个流的指针。GMU515选择一个或多个流并配置为将所选择的流组织成挂起网格池。挂起网格池可包括尚未被选择用于执行的新网格和已被部分地执行并且已被暂停的网格。
耦连在GMU515和SM550之间的工作分布单元520管理活动网格池,选择并分派活动网格用于由SM550执行。当挂起的网格有资格执行、即不具有未解决的数据依赖时,挂起的网格由GMU515转移到活动网格池。当活动网格的执行被依赖阻塞时,活动网格被转移到挂起池。当网格的执行完成时,网格被工作分布单元520从活动网格池移除。除了接收来自主机接口单元510和工作分布单元520的网格以外,GMU510还接收在网格 的执行期间由SM550所动态生成的网格。这些动态生成的网格加入挂起网格池中的其他挂起的网格。
在一个实施例中,CPU执行实现应用编程接口(API)的驱动程序内核,该应用编程接口使能在CPU上执行的一个或多个应用以调度用于在PPU500上执行的操作。应用可包括使驱动程序内核生成一个或多个网格用于执行的指令(即API调用)。在一个实施例中,PPU500实现SIMD(单指令、多数据)结构,其中由线程块中的不同线程对不同数据集并发地执行网格中的每个线程块(即线程束(warp))。驱动程序内核定义包含k个相关线程的线程块,使得相同线程块中的线程可通过共享存储器交换数据。在一个实施例中,线程块包括32个相关线程,并且网格是执行相同流的一个或多个线程块的阵列,并且不同的线程块可通过全局存储器交换数据。
在一个实施例中,PPU500包括X个SM550(X)。例如,PPU500可包括15个不同的SM550。每个SM550是多线程的并配置为并发地执行来自特定线程块的多个线程(例如32个线程)。SM550中的每一个经由交叉开关560(或其他类型的互连网络)连接到二级(L2)高速缓存565。L2高速缓存565连接到一个或多个存储器接口580。存储器接口580实现16、32、64、128位数据总线等等,用于高速数据转移。在一个实施例中,PPU500包括U个存储器接口580(U),其中每个存储器接口580(U)连接到相对应的存储器设备504(U)。例如,PPU500可连接到多达6个存储器设备504,诸如图形双数据速率、版本5、同步动态随机存取存储器(GDDR5SDRAM)。
在一个实施例中,PPU500实现多级存储器层次。存储器504位于耦连到PPU500的SDRAM的片外。来自存储器504的数据可被获取并存储在L2高速缓存565中,该L2高速缓存565位于片上并在各SM550之间共享。在一个实施例中,SM550中的每一个还实现L1高速缓存。L1高速缓存是专用于特定SM550的私有存储器。L1高速缓存中的每一个耦连到共享的L2高速缓存565。来自L2高速缓存565的数据可被获取并存储在L1高速缓存中的每一个中用于SM550的功能单元中的处理。
在一个实施例中,PPU500包括图形处理单元(GPU)。PPU500配置为接收指定用于处理图形数据的着色器程序的命令。图形数据可被定义为 诸如点、线、三角形、四边形、三角形条带等基元的集合。典型地,基元包括指定用于(例如在模型空间坐标系中的)基元的若干顶点以及与基元的每个顶点相关联的属性的数据。PPU500可配置为处理图形基元以生成帧缓冲区(即用于显示器的像素中的每一个的像素数据)。驱动程序内核实现图形处理管线,诸如由OpenGL API定义的图形处理管线。
应用将用于场景的模型数据(即顶点和属性的合集)写到存储器。模型数据定义在显示器上可见的对象中的每一个。应用随后对驱动程序内核做出请求模型数据被渲染和显示的API调用。驱动程序内核读取模型数据并将命令写到缓冲区以实施一个或多个操作来处理模型数据。命令可将包括顶点着色器、外壳着色器、几何着色器、像素着色器等中的一个或多个的不同着色器程序编码。例如,GMU515可配置一个或多个SM550为执行处理由模型数据所定义的若干顶点的顶点着色器程序。在一个实施例中,GMU515可配置不同SM550为并发地执行不同着色器程序。例如,SM550的第一子集可配置为执行顶点着色器程序,而SM550的第二子集可配置为执行像素着色器程序。SM550的第一子集处理顶点数据以产生经处理的顶点数据并将经处理的顶点数据写到L2高速缓存565和/或存储器504。在经处理的顶点数据被光栅化(即从三维数据变换成屏幕空间中的二维数据)以产生碎片数据(fragment data)之后,SM550的第二子集执行像素着色器以产生经处理的碎片数据,其随后与其他经处理的碎片数据混合并被写到存储器504中的帧缓冲区。顶点着色器程序和像素着色器程序可并发地执行,以管线的方式处理来自同一场景的不同数据直到用于场景的所有模型数据已被渲染到帧缓冲区为止。随后,帧缓冲区的内容被传送到显示控制器用于在显示设备上显示。
PPU500可包括在台式计算机、膝上型计算机、平板计算机、智能电话(例如无线、手持设备)、个人数字助理(PDA)、数字相机、手持电子设备等等中。在一个实施例中,PPU500具体化在单个半导体衬底上。在另一实施例中,PPU500连同一个或多个其他逻辑单元被包括在片上系统(SoC)中,所述一个或多个其他逻辑单元诸如精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数模转换器(DAC)等。
在一个实施例中,PPU500可被包括在包括诸如GDDR5SDRAM的一个或多个存储器设备504的图形卡上。图形卡可配置为与包括例如北桥芯 片集和南桥芯片集的、台式计算机的主板上的PCIe槽相接。在又一实施例中,PPU500可以是被包括在主板的芯片集(即北桥)中的集成图形处理单元(iGPU)。
图6示出根据一个实施例的、图5的流多处理器550。如图6所示,SM550包括指令高速缓存605、一个或多个调度器单元610、寄存器堆620、一个或多个处理核心650、一个或多个双精度单元(DPU)651、一个或多个特殊功能单元(SFU)652、一个或多个加载/存储单元(LSU)653、互连网络680、共享存储器/L1高速缓存670以及一个或多个纹理单元690。
如上文所述,工作分布单元520分派活动网格用于在PPU500的一个或多个SM550上执行。调度器单元610从工作分布单元520接收网格并管理用于每个活动网格中的一个或多个线程块的指令调度。调度器单元610调度线程用于在并行线程的组中执行,其中每个组称为线程束。在一个实施例中,每个线程束包括32个线程。调度器单元610可管理多个不同线程块,在每个时钟周期期间将线程块分配到线程束用于执行并随后调度来自各功能单元(即核心650、DPU651、SFU652以及LSU653)上的多个不同线程束的指令。
在一个实施例中,每个调度器单元610包括一个或多个指令分派单元615。每个分派单元615配置为将指令传送到功能单元中的一个或多个。在图6示出的实施例中,调度器单元610包括两个分派单元615,其使能来自同一线程束的两个不同指令在每个时钟周期期间被分派。在可替代实施例中,每个调度器单元610可包括单个分派单元615或附加的分派单元615。
每个SM550包括寄存器堆620,其提供用于SM550的功能单元的寄存器的集合。在一个实施例中,寄存器堆620在功能单元中的每一个之间被划分,使得每个功能单元被分配寄存器堆620的专用部分。在另一实施例中,寄存器堆620在正由SM550执行的不同线程束之间被划分。寄存器堆620为连接到功能单元的数据路径的操作数提供暂时存储。
每个SM550包括L个处理核心650。在一个实施例中,SM550包括大数目的(例如192个等)不同的处理核心650。每个核心650是完全管线(fully-pipelined)的单精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的 IEEE754-2008标准。每个SM550还包括实现双精度浮点运算的M个DPU651、实施特殊功能(例如拷贝矩形、像素混合操作等)的N个SFU652以及在共享存储器/L1高速缓存670和寄存器堆620之间实现加载和存储操作的P个LSU653。在一个实施例中,SM550包括64个DPU651、32个SFU652以及32个LSU653。
每个SM550包括互连网络680,其将功能单元中的每一个连接到寄存器堆620和共享存储器/L1高速缓存670。在一个实施例中,互连网络680是交叉开关,其可配置为将任何功能单元连接到寄存器堆620中的任何寄存器或共享存储器/L1高速缓存670中的任何存储器位置。
在一个实施例中,SM550实现在GPU内。在这类实施例中,SM550包括J个纹理单元690。纹理单元690配置为从存储器504加载纹理图(即纹理元素的2D阵列)并对纹理图采样以产生经采样的纹理值用于在着色器程序中使用。纹理单元690使用mip-map(即变化细节层级的纹理图)实现诸如抗锯齿操作的纹理操作。在一个实施例中,SM550包括16个纹理单元690。
上文所述的PPU500可配置为实施比常规CPU快得多的高度并行计算。并行计算在图形处理、数据压缩、计量生物学、流处理算法等方面具有优势。
例如,存储器104中的应用可配置为使用PPU500生成层次深度图300。在一个实施例中,应用经过驱动程序内核将使PPU500生成用于三维场景的深度缓冲区的命令传送到PPU500。应用可随后(从存储器104或通过经过驱动器内核查询PPU500)读取深度缓冲区以生成层次深度图300。在一个实施例中,层次深度图300可被编码为纹理图,并且可通过实现在PPU500上执行的像素着色器来针对数字图像的不同目标像素并行地实施SAO算法的步骤。像素着色器的线程可与数字图像的特定目标像素相对应,并且环境光遮蔽图可由PPU500来生成。
图7示出在其中可实现各先前实施例的各架构和/或功能性的示例性系统700。如所示,提供了系统700,其包括至少一个连接到通信总线702的中央处理器701。通信总线702可使用任何合适的协议来实现,诸如外围部件互连(PCI)、PCI-Express、AGP(加速图形端口)、超传输、或任何其他总线或点对点通信协议。系统700还包括主存储器704。控制逻辑 (软件)和数据存储在可采取随机存取存储器(RAM)形式的主存储器704中。
系统700还包括输入设备712、图形处理器706以及显示器708,所述显示器708即常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器等等。可从输入设备712例如键盘、鼠标、触摸板、扩音器等接收用户输入。在一个实施例中,图形处理器706可包括多个着色器模块、光栅化模块等。前述模块中的每一个实际上可布置于单个半导体平台上以形成图形处理单元(GPU)。
在本描述中,单个半导体平台可以指单独一个的基于半导体的集成电路或芯片。应注意的是,术语单个半导体平台还可以指具有增强的连通性的多芯片模块,其仿真片上操作,并通过利用常规中央处理单元(CPU)和总线实现方案做出实质的改进。当然,各模块还可根据用户的期望分开地或以半导体平台的各种组合来布置。
系统700还可包括二级存储710。二级存储710包括例如硬盘驱动器和/或表示软盘驱动器、磁带驱动器、压缩光盘驱动器、数字通用光盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存的可移动存储驱动器。可移动存储驱动器以公知的方式从可移动存储单元读取和/或写入到可移动存储单元。
计算机程序或计算机控制逻辑算法可存储在主存储器704和/或二级存储710中。这类计算机程序当被执行时使得系统700能够实施各种功能。存储器704、存储710和/或任何其他存储是计算机可读介质的可能的示例。
在一个实施例中,可在以下内容的上下文中实现各先前示图的架构和/或功能性:中央处理器701、图形处理器706、能够具有中央处理器701和图形处理器706二者的能力的至少一部分的集成电路(未示出)、芯片集(即设计为作为用于实施相关功能的单元来工作和出售的集成电路组等)和/或用于该问题的任何其他集成电路。
还有就是,可在以下内容的上下文中实现各先前示图的架构和/或功能性:通用计算机系统、电路板系统、专用于娱乐目的的游戏机系统、特定于应用的系统和/或任何其他所期望的系统。例如,系统700可采取台式计算机、膝上型计算机、服务器、工作站、游戏机、嵌入式系统和/或任何其他类型的逻辑的形式。还有就是,系统700可采取各种其他设备的形式, 包括但不限于个人数字助理(PDA)设备、移动电话设备、电视机等。
进一步地,虽然未示出,但系统700可耦连到网络(例如电信网络、局域网(LAN)、无线网、诸如互联网的广域网(WAN)、点对点网络、电缆网络等等)用于通信目的。
虽然上文已描述了各实施例,但应理解的是它们通过仅示例而非限制的方式加以呈现。因此,优选实施例的宽度和范围不应被上文所述的示例性实施例中的任何一个所限制,而应仅根据下面的权利要求和其等同物来加以限定。

用于对层次深度图采样的系统、方法和计算机程序产品.pdf_第1页
第1页 / 共21页
用于对层次深度图采样的系统、方法和计算机程序产品.pdf_第2页
第2页 / 共21页
用于对层次深度图采样的系统、方法和计算机程序产品.pdf_第3页
第3页 / 共21页
点击查看更多>>
资源描述

《用于对层次深度图采样的系统、方法和计算机程序产品.pdf》由会员分享,可在线阅读,更多相关《用于对层次深度图采样的系统、方法和计算机程序产品.pdf(21页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103838548 A (43)申请公布日 2014.06.04 CN 103838548 A (21)申请号 201310606910.X (22)申请日 2013.11.25 13/685,599 2012.11.26 US G06F 9/30(2006.01) (71)申请人 辉达公司 地址 美国加利福尼亚州 (72)发明人 摩根麦圭尔 大卫帕特里克利布基 麦克尔托马斯马拉 (74)专利代理机构 北京市磐华律师事务所 11336 代理人 谢栒 张玮 (54) 发明名称 用于对层次深度图采样的系统、 方法和计算 机程序产品 (57) 摘要 提供用于对层次深度图采样。

2、的系统、 过程和 计算机程序产品。用于对层次深度图采样的方法 包括以下步骤 : 生成层次深度图, 以及基于样本 像素和目标像素之间的差异从层次深度图的目标 层级读取与样本像素相关联的值。层次深度图包 括至少两个层级。 (30)优先权数据 (51)Int.Cl. 权利要求书 2 页 说明书 11 页 附图 7 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书11页 附图7页 (10)申请公布号 CN 103838548 A CN 103838548 A 1/2 页 2 1. 一种方法, 包括 : 生成层次深度图, 其中所述层次深度图包括至少两个层级 ; 以及。

3、 基于样本像素和目标像素之间的差异从所述层次深度图的目标层级读取与所述样本 像素相关联的值。 2. 根据权利要求 1 所述的方法, 所述层次深度图包括 : 基本层级, 具有第一分辨率 ; 以及 第一层级, 具有第二分辨率, 其中所述第二分辨率小于所述第一分辨率。 3. 根据权利要求 2 所述的方法, 其中所述第二分辨率是所述第一分辨率一半的分辨 率。 4. 根据权利要求 2 所述的方法, 所述层次深度图进一步包括具有第三分辨率的第二层 级, 其中所述第三分辨率小于所述第二分辨率。 5. 根据权利要求 2 所述的方法, 其中所述基本层级存储多个值, 每个值与数字图像的 不同像素相关联, 并且其中。

4、所述第一层级存储从所述基本层级所选择的值的子集。 6. 根据权利要求 5 所述的方法, 其中所述值的子集基于旋转网格模式来选择。 7. 根据权利要求 6 所述的方法, 其中所述旋转网格模式由将在所述层次深度图的特定 层级的值映射到在所述层次深度图的下一较低层级的所选择的值的函数来支配, 其中所述 值与第一坐标和第二坐标相关联, 并且所述所选择的值与第三坐标和第四坐标相关联, 其 中所述第三坐标等于二倍的所述第一坐标与所述第二坐标和1的按位与和1的按位异或的 和, 并且所述第四坐标等于二倍的所述第二坐标与所述第一坐标和 1 的按位与和 1 的按位 异或的和。 8. 根据权利要求 1 所述的方法,。

5、 其中所述层次深度图的所述目标层级通过将所述样本 像素的屏幕空间位置与目标像素的屏幕空间位置之间的距离与屏幕空间半径增量值的比 取以二为底的对数来计算。 9. 根据权利要求 8 所述的方法, 其中所述屏幕空间半径增量值基于以下各项中的至少 一个来确定 : 数字图像的分辨率、 图形处理单元的配置为并行访问所述层次深度图的核心 的数目、 以及配置为临时地存储所述层次深度图的部分的高速缓存的大小。 10. 根据权利要求 1 所述的方法, 其中生成所述层次深度图包括 : 在图形处理器中渲染多个三维对象以生成深度缓冲区 ; 基于所述深度缓冲区中的值填充所述层次深度图的基本层级 ; 以及 通过从所述层次深。

6、度图的所述基本层级选择值的子集来生成所述层次深度图的第一 层级。 11. 根据权利要求 1 所述的方法, 进一步包括 : 选择与所述目标像素相关联的多个样本像素 ; 针对所述多个样本像素中的每个特定样本像素 : 确定所述层次深度图的相应层级用于所述特定样本像素, 以及 从所述层次深度图的所述目标层级读取样本值用于所述特定样本像素。 12. 根据权利要求 11 所述的方法, 进一步包括对与目标像素的 2x2 阵列相对应的样本 值的 2x2 阵列应用双边滤波器以生成经滤波的样本值。 13. 根据权利要求 12 所述的方法, 进一步包括通过对读取自所述层次深度图的经滤波 权 利 要 求 书 CN 1。

7、03838548 A 2 2/2 页 3 的样本值的图应用具有数个抽头的双通道双边滤波器来生成环境光遮蔽图。 14. 根据权利要求 13 所述的方法, 其中应用在所述双通道双边滤波器的每个通道中的 抽头的数目等于 7。 15. 一种非暂时性计算机可读存储介质, 其存储指令, 所述指令当由处理器所执行时, 使所述处理器实施步骤包括 : 生成层次深度图, 其中所述层次深度图包括至少两个层级 ; 以及 基于样本像素和目标像素之间的差异从所述层次深度图的目标层级读取与所述样本 像素相关联的值。 16. 根据权利要求 15 所述的非暂时性计算机可读存储介质, 所述层次深度图包括 : 基本层级, 具有第一。

8、分辨率 ; 以及 第一层级, 具有第二分辨率, 其中所述第二分辨率小于所述第一分辨率。 17. 根据权利要求 16 所述的非暂时性计算机可读存储介质, 其中所述基本层级存储多 个值, 每个值与所述数字图像的不同像素相关联, 并且其中所述第一层级存储从所述基本 层级所选择的值的子集。 18. 一种系统, 包括 : 处理器, 其配置为 : 生成层次深度图, 其中所述层次深度图包括至少两个层级 ; 以及 基于样本像素和目标像素之间的差异从所述层次深度图的目标层级读取与所述样本 像素相关联的值。 19. 根据权利要求 18 所述的系统, 其中所述处理器包括图形处理单元, 所述图形处理 单元包括多个处理。

9、核心。 20. 根据权利要求 19 所述的系统, 其中所述处理核心中的两个或更多个配置为并行地 从所述层次深度图读取值。 权 利 要 求 书 CN 103838548 A 3 1/11 页 4 用于对层次深度图采样的系统、 方法和计算机程序产品 技术领域 0001 本发明涉及计算机图形, 并且更具体地, 涉及利用深度缓冲区的算法。 背景技术 0002 深度缓冲区存储指示用于三维场景中的对象表面的深度的多个值。 针对许多类型 的计算机图形渲染应用实现深度缓冲区。深度值可用来确定相对于特定视点, 对象是否被 其他对象所遮蔽。 典型地, 深度缓冲区包括与数字图像中的相应多个像素相关联的多个值。 深度。

10、缓冲区中的每个值可表示和与特定像素相对应的视点最靠近的对象的深度。 0003 一些算法, 诸如屏幕空间环境光遮蔽算法, 对深度缓冲区内的多个不同值采样以 针对每个像素计算环境光遮蔽 (AO) 值。这些技术的净性能由于深度缓冲区的大量分散的 读取而受到损害, 导致高速缓存效率低下。因此, 存在解决该问题和 / 或与现有技术相关联 的其他问题的需要。 发明内容 0004 提供用于对层次深度图采样的系统、 方法和计算机程序产品。用于对层次深度图 采样的方法包括下面的步骤 : 生成层次深度图, 以及基于样本像素和目标像素之间的差异 (difference) 从层次深度图的目标层级读取与样本像素相关联的。

11、值。 层次深度图包括至少 两个层级。 附图说明 0005 图 1 示出根据一个实施例的、 用于对层次深度图采样的方法的流程图 ; 0006 图 2 示出根据一个实施例的、 用于实现可缩放 (scalable) 环境光遮蔽算法的方法 的流程图 ; 0007 图 3 示出根据一个实施例的层次深度图 ; 0008 图 4 示出根据一个实施例的、 可缩放环境光遮蔽算法中的用于目标像素的多个样 本像素 ; 0009 图 5 示出根据一个实施例的并行处理单元 (PPU) ; 0010 图 6 示出根据一个实施例的、 图 5 的流多处理器 ; 以及 0011 图 7 示出在其中可实现各先前实施例的各架构和 。

12、/ 或功能性的示例性系统。 具体实施方式 0012 许多不同类型的渲染算法在作为算法一部分的一个或多个计算中利用深度缓冲 区 (即 Z 缓冲区) 。例如, 环境光遮蔽 (AO) 算法生成着色效果以近似光在真实世界中辐射的 路线。AO 算法确定附近的几何体对表面上的具体点的遮蔽量。如果附近的几何体遮蔽该 点, 那么该点可被渲染以包括阴影 (例如采用较低强度来渲染) 。然而, 如果附近的几何体不 遮蔽该点, 那么该点可被渲染而没有阴影 (例如采用较高强度来渲染) 。本领域普通技术人 说 明 书 CN 103838548 A 4 2/11 页 5 员将理解的是, 使用常规 GPU 同时维持交互的帧率。

13、无法以全高清晰度分辨率实时实施在模 型空间中所计算的环境光遮蔽 (即通过对每个对象采样来确定对象是否遮蔽了点) 。因此, 对全 AO 算法生成充分近似值的一项技术是屏幕空间环境光遮蔽 (SSAO) 。 0013 在 SSAO 算法中, 模型首先被光栅化以产生深度缓冲区, 该深度缓冲区将每个像素 位置 (或如果以子像素分辨率实现深度缓冲区那么样本位置) 与最靠近用于像素的视点的 几何体的深度相关联。一旦生成深度缓冲区, 那么可通过对多个附近的像素采样来计算用 于像素的近似的环境光遮蔽, 以确定该像素是否可能被附近的几何体所遮蔽。在一些 SSAO 算法中, 用于每个像素的深度和表面法线二者可用来确。

14、定近似的遮蔽。常规 SSAO 算法由于 深度缓冲区中所采样的点的分散而性能不佳, 导致高速缓存效率低下并生成大量长时延存 储器访问请求。 0014 公开了用于对深度缓冲区编码的示例性技术, 其提高对深度缓冲区中的大量分散 条目采样的算法的性能, 从而提高高速缓存效率并减少用于对附近的条目采样的长时延存 储器访问请求的数目。 0015 图 1 示出根据一个实施例的、 用于对层次深度图采样的方法 100 的流程图。在步 骤 102, 生成层次深度图。在一个实施例中, 层次深度图是具有两个或更多个层级的值的阵 列, 其中基于深度缓冲区中的多个值填充 (populate) 第一层级并且采用来自第一层级。

15、的值 的子集填充第二层级。在步骤 104, 从层次深度图的目标层级读取与样本像素相关联的值。 在一个实施例中, 目标层级基于样本像素与目标像素的距离。 应注意的是, 虽然本文结合层 次深度图阐述各可选特征, 但这类特征仅出于示例性目的而阐述, 并且其不应被认为是以 任何方式进行限制。 0016 图2示出根据一个实施例的、 用于实现可缩放环境光遮蔽 (SAO) 算法的方法200的 流程图。 应特别注意的是, 下面的信息仅出于示例性目的而阐述, 并且其不应被认为是以任 何方式进行限制, 因为其他算法可能利用层次深度图以补充或代替由图 2 的流程图所示出 的 SAO 算法。 0017 在步骤 202。

16、, 通过在图形处理单元 (GPU) 中实施高精度 Z-pass 来生成深度缓冲区。 在一个实施例中, 高精度 Z-pass 被实施为经过 GPU 的仅深度预通过 (pre-pass) 。模型数据 集 (即诸如三角形、 四边形、 或三角形条带的图形基元) 被传送到 GPU。随后在深度上变换并 光栅化模型数据以产生用于每个片段 (即与给定表面对象相关联的像素的一部分) 的 z 坐 标。针对与该像素位置相关联的所有其他 z 坐标测试该 z 坐标以确定最靠近特定视点的对 象, 并且如果该z坐标是最靠近的对象, 那么将该z坐标存储在深度缓冲区中的与该像素位 置相对应的条目处。一旦所有的模型数据已被光栅化。

17、, 那么最终产生的深度缓冲区表示从 视点到在经光栅化的图像中的每个像素位置处的最靠近的表面的光线的长度。 0018 为了增加 SAO 算法中的结果的准确度, 应谨慎地采用可能的最高精度来填充深度 缓冲区。 在一个实施例中, 可通过实现下面的优化来增加深度缓冲区的精度。 在将模型视图 投影矩阵投向 (cast) 用于 GPU 上的顶点着色器中所实施的变换的单精度之前, 可在主机处 理器上以双精度计算模型视图投影矩阵。对于模型视图投影矩阵, 可在负无穷 (- ) 的深 度处选择远裁剪平面, 其可减少当计算矩阵积时所实施的浮点操作的数目。此外, 当在 GPU 中计算变换时, 可通过在以列为主的矩阵 。

18、(例如模型视图投影矩阵) 的左侧乘以矢量来节省 一半精度。 应理解的是, 上述优化仅是用于提高算法准确度的建议, 并且其不应被认为是以 说 明 书 CN 103838548 A 5 3/11 页 6 任何方式进行限制。 0019 在步骤 204, 基于深度缓冲区生成层次深度图。在一个实施例中, 深度缓冲区用来 填充层次深度图的基本层级。典型地, 由 GPU 所生成的深度缓冲区将深度值存储为 0 和 1 之间的浮点值。层次深度图的基本层级将深度缓冲区的深度值转换成相机空间值, 其指示 近裁剪平面 (zn) 的位置和远裁剪平面 (zf) 的位置之间的 z 值。通过选择来自层次深度图 的下一最低层级。

19、的值的子集来填充层次深度图的相继较高层级。 层次深度图包括至少两个 层级, 与数字图像的全分辨率相对应的基本层级, 以及与小于该基本层级的分辨率 (例如基 本层级的分辨率的一半) 相对应的第一层级。层次深度图的较高层级 (即 1 级、 2 级等) 确保 采用高的高速缓存效率读取空间分布的样本 (即, 当采样的像素较远离目标像素位置时, 由 GPU所并行处理的邻近像素将典型地从层次深度图读取相同样本) 。 因为层次深度图的每个 层级的一小区域留在高速缓存中, 所以较少的读取请求将被传送到存储器 (即 DRAM) , 得到 高带宽和低时延。 0020 在步骤 206, 针对正针对其执行 SAO 算。

20、法的数字图像的每个目标像素, 选择多个样 本像素。在一个实施例中, 对于每个目标像素, 多个样本像素分布在围绕点 C 的半球上, 该 半球的中心点在由从视点以与目标像素相关联的方向所投影的光线所相交的表面上的点 处。在一个实施例中, 根据值 zC重构点 C, 该值 zC读取自层次深度图的基本层级、 与由 x 坐 标 (x) 和 y 坐标 (y) 所给定的目标像素相关联的索引处。点 C 的 x 坐标和 y 坐标由等 式给定 : 0021 (等式 1) 0022 (等式 2) 0023 (等式 3) 0024 等式 1 和 2 中, w 和 h 表示数字图像的宽度和高度, 并且 P 是模型视图投影。

21、矩阵。 等式 1 和 2 在像素 (x ,y) 处对投影矩阵求逆以找到相机空间位置点 C。等式 3 基于 z 的屏幕空间梯度给定在点 C 处的估计的表面法线, 其给定半球的定向。半球 r 的世界空间 半径与由如下等式所给定的屏幕空间半径 r 相对应 : 0025 (等式 4) 0026 在等式 3 中, S 是在 z 等于负 1 米的一米半径对象的像素大小。在一个实施例中, 多个样本像素以螺旋模式置于目标像素周围。每个像素样本 (si) 位于与由等式 7 所给定的 目标像素的不同的距离 (hi) 的位置, 如下文所示。样本像素中的每一个的位置可由下面的 公式所给定 : 0027 (等式 5) 。

22、0028 (等式 6) 0029 (等式 7) 说 明 书 CN 103838548 A 6 4/11 页 7 0030 (等式 8) 0031 (等式 9) 0032 在等式 7 中, 常数 是螺旋中的转数, 并且角偏移是由等式 9 所给定的旋转角。 在其他实施例中, 多个样本像素可随机分布在半球的表面上。然而, 应注意的是, 如果多数 样本位于半球的仅一部分上那么随机分布具有使结果偏差的潜质。 0033 在步骤 208, 针对与目标像素相关联的每个样本像素, 通过对层次深度图应用双边 滤波器来生成经滤波的值。每个样本像素与层次深度图的特定层级 (mi) 相关联。通过选择 与样本像素的位置相。

23、关联的层次深度图的特定层级中的值来给定用于样本像素的样本值, 如下面等式所给定的 : 0034 (等式 10) 0035 (等式 11) 0036 在公式 10 中, 与样本像素 (si) 相关联的层级 (mi) 被钳制到大于或等于零并小于 或等于层次深度图中的最高层级的值。常数 q是表示与目标像素的距离的屏幕空间半径 增量, 由样本像素所引用的层次深度图的层级以该增量改变到层次深度图的不同层级。在 一个实施例中, hi和 q的比被向上舍入到下一最高整数。用于 q的优化值可取决于实 现 SAO 算法的架构。已产生如由一些实验架构所计算的精确环境光遮掩图的、 用于 q 的示 例值在 8 和 32。

24、 之间。 0037 通过将等式 1 和 2 应用到 zi(即 zC=zi) 来重构每个样本像素 si。在一个实施例中, 可将双边 2x2 滤波器应用到所生成的样本像素, 将四个权重值平均以减少跨连续表面的方 差 (即滤波器内核采用由所生成的样本像素和附近的像素之间的深度上的差异所调整的高 斯权重来生成经滤波的值) 。 0038 在步骤 210, 通过使用具有数个抽头的双边滤波器对在步骤 208 中所生成的原始 样本图滤波, 来针对数字图像的像素中的每一个生成环境光遮蔽图。双边滤波器确保最终 值是跨表面平滑的, 而不应用该滤波器则跨深度不连续。 在一个实施例中, 应用每通道中具 有七个抽头的双通。

25、道双边一维滤波器 (一水平通道和一垂直通道) , 其基于每目标像素 196 个样本值 (基于步骤 208 中所应用的 2x2 双边滤波器和步骤 210 中应用的双通道双边一维 滤波器中的 7x7 个抽头) 生成最终 AO 值。可通过将像素位置在每个方向上递增三个像素来 展开抽头中的每一个。在其他实施例中, 可在双通道双边一维滤波器中实现不同数目的抽 头或抽头之间的距离。 0039 现在将关于各可选架构和特征来阐述更多示例性的信息, 根据用户的期望可以采 用所述架构和特征来实现或不实现前述的框架。应特别注意的是, 下面的信息出于示例性 的目的而阐述并且其不应被认为是以任何方式进行限制。 下面特征。

26、中的任何一个可以可选 地合并, 排除或无需排除所述的其他特征。 0040 图 3 示出根据一个实施例的层次深度图 300。如图 3 所示, 层次深度图 300 的基 本层级 310(Z0) 包括与数字图像中的相应多个像素相关联的多个深度值。如本领域中已 知的, 可从模型中渲染表示几何体数据集的二维 (2D) 视角的数字图像。对于模型中的每个 说 明 书 CN 103838548 A 7 5/11 页 8 3D 对象, 对象 (即诸如三角形或三角形条带的基元) 被投影到 2D 视平面上, 并且定义 3D 对 象的投影与 2D 视平面的像素的交集的覆盖掩码被确定。对于被覆盖的像素中的每一个, 在 。

27、与像素相对应的点处的3D对象的表面的深度被确定并与先前经渲染的3D对象中的每一个 的、 存储在深度缓冲区中的深度相比较。如果 3D 对象的表面的深度比存储在深度缓冲区中 的深度更靠近于视平面, 那么更新深度缓冲区并根据用于对象的顶点属性 (例如颜色属性、 纹理坐标等) 来渲染像素。 0041 层次深度图 300 的基本层级 310 填充自与数字图像相关联的深度缓冲区。换句话 说, 基本层级 310 中的深度值中的每一个与存储在深度缓冲区中的、 用于数字图像的像素 中的一个的 z 值相对应。例如, 位于基本层级 310 中的条目 Z0(0,0) 处的第一深度值与位 于数字图像的左上角的数字图像中。

28、的第一像素相对应。在一些实施例中, 深度值中的每一 个与数字图像的像素的一部分相对应, 诸如在图形管线中实现多重采样抗锯齿 (MSAA) 的实 施例。 0042 层次深度图 300 包括附加层级 (例如 Z1、 Z2等) , 其包括来自层次深度图 300 的基 本层级 310 的值的子集。附加层级中的每一个的分辨率可小于层次内的下一较低层级。例 如, 在一个实施例中, 层次深度图 300 的第一层级 320 的分辨率是层次深度图 300 的基本层 级 310 的分辨率的一半 (垂直地和水平地二者) 。在其他实施例中, 层次深度图 300 的每个 相继层级的分辨率可减少不同的量, 诸如层次深度图。

29、 300 的每个相继层级的分辨率减少四 分之一。 0043 如图 3 所示, 层次深度图 300 包括分辨率是层次深度图 300 的基本层级 310 的一 半的第一层级 320(Z1) 。存储在第一层级 320(Z1) 中的深度值中的每一个与存储在层次深 度图 300 的基本层级 310 中的深度值的单一一个相对应。不同于其中较低分辨率 mip-map 中的值被计算为从较高分辨率 mip-map 所采样的多个值的平均值的 mip-map, 层次深度图 300的特定层级中的值的每一个选择自层次中的先前层级的每N个值中的一个 (例如每4个 值中的一个) 。 0044 在一个实施例中, 基于旋转网格。

30、模式 (rotated grid pattern) 来选择从层次深度 图 300 的下一较低层级中所选择的值。等式 12 示出根据一个这类旋转网格模式支配值的 选择的等式 : 0045 (等式 12) 0046 换句话说, 从层次深度图 300 的 m 层级选择层次深度图 300 的 m+1 层级中所存储 的具有 x 坐标和 y 坐标的深度值, 层次深度图 300 的 m 层级 (1) 具有第一坐标, 其计算为 二倍的 x 坐标加上 y 坐标和 1 的按位与和 1 的按位异或 ; 以及 (2) 具有第二坐标, 其计算 为二倍 y 坐标加上 x 坐标和 1 的按位与和 1 的按位异或。上文阐述的。

31、旋转网格模式针对 层次深度图300的特定层级中的每十六个深度值选择四个深度值以生成层次深度图300的 下一相继层级中的四个相应的值。其他实施例可基于不同类型的映射来选择深度值, 诸如 选择像素的每 2x2 阵列中的左上值的映射或针对每六十四个深度值 (在分辨率被四等分的 情况下) 选择四个深度值的映射。预期到其他类型的映射在本公开的范围内。 0047 图 3 示出使用由公式 12 所示出的旋转网格模式的映射。如图 3 所示, 层次深度图 说 明 书 CN 103838548 A 8 6/11 页 9 300 的第一层级 320 中的第一深度值 325(0) 与层次深度图 300 的基本层级 3。

32、10 中的相应 第一深度值 315(0) 相对应。根据等式 12, 第一深度值 325(0) 与用于条目 Z1(0,0) 的坐 标 (例如 0,0) 相关联, 其与层次深度图 300 的基本层级 310 中的条目 Z0(1,1) 相对应。类 似地, 层次深度图 300 的第一层级 320 中的第二深度值 325 (1) 与层次深度图 300 的基本层 级 310 中的第二相应深度值 315(1) 相对应, 层次深度图 300 的第一层级 320 中的第三深 度值 325(2) 与层次深度图 300 的基本层级 310 中的第三相应深度值 315(2) 相对应, 并 且层次深度图 300 的第一。

33、层级 320 中的第四深度值 325(3) 与层次深度图 300 的基本层级 310 中的第四相应深度值 315(3) 相对应。第二深度值 325(1) 与用于条目 Z1(1,0) 的坐 标 (例如 1,0) 相关联, 其与层次深度图 300 的基本层级 310 中的条目 Z0(3,0) 相对应。第 三深度值 325(2) 与用于条目 Z1(0,1) 的坐标 (例如 0,1) 相关联, 其与层次深度图 300 的 基本层级 310 中的条目 Z0(0,3) 相对应。第四深度值 325(3) 与用于条目 Z1(1,1) 的坐 标 (例如 1,1) 相关联, 其与层次深度图 300 的基本层级 3。

34、10 中的条目 Z0(2,2) 相对应。 0048 层次深度图 300 还包括分辨率是层次深度图 300 的第一层级 320 的一半的第二层 级 330(Z2) 。换句话说, 第二层级 330 的分辨率是层次深度图 300 的基本层级 310 的四分 之一。存储在第二层级 330 的条目中的深度值, 根据用来将存储在第一层级 320 的条目中 的深度值映射到存储在层次深度图 300 的基本层级 310 的条目中的深度值的相同映射, 与 存储在层次深度图 300 的第一层级 320 的条目中的深度值相对应。例如, 存储在层次深度 图 300 的第二层级 330 中的条目 Z2(0,0) 中的第一。

35、深度值 335(0) 与存储在层次深度图 300 的第一层级 320 中的条目 Z1(1,1) 中的第四深度值 325(3) 相对应。存储在层次深度 图 300 的第二层级 330 中的条目 Z2(0,0) 中的第一深度值 335(0) 还与存储在层次深度 图 300 的基本层级 310 中的条目 Z0(2,2) 中的第四深度值 315(3) 相对应。在一个实施 例中, 可并行地生成层次深度图 300 的不同层级。 0049 虽然未示出, 但层次深度图 300 中可包括附加层级, 直到仅包括存储在条目 ZK (0,0) 中的单个深度值的最终层级 (即第 K 层级) 。只要层次深度图 300 除。

36、基本层级 310 以 外包括至少一个附加层级, 则具体实现方案可省略层次深度图 300 的任何数目的层级。 0050 图 4 示出根据一个实施例的、 用于 SAO 算法中的目标像素 420 的多个样本像素 430。如上文图 2 的流程图所述, SAO 算法突出一项用于对来自层次深度图 300 的值采样以 生成环境光遮蔽图的技术。 为了针对数字图像中的目标像素420计算环境光遮蔽值, SAO算 法对深度缓冲区中的多个点采样以确定附近的几何体是否可能遮蔽对象表面上的与目标 像素相对应的点。为了针对目标像素 420 计算环境光遮蔽值, 进程 (即一个或多个线程) 对 层次深度图 300 中的、 与数。

37、字图像 400 中的目标像素 420 附近的多个样本像素 430 相对应 的多个位置采样。 0051 在一个实施例中, 当从层次深度图 300 读取样本时, 线程诸如通过对样本像素 430 的位置应用等式 10 来确定应从层次深度图 300 的哪个层级 mi读取样本。圆 410 表示与层 次深度图 300 的不同层级相对应的屏幕空间的部分。例如, 第一圆 410 (0) 表示一倍 (即 20) 的 qi并具有四个像素的半径。第二圆 410(1) 表示二倍 (即 21) 的 qi并具有八个像素的半 径。第三圆 410(2) 表示四倍 (即 22) 的 qi并具有十六个像素的半径。如上所述, 屏幕。

38、空间 半径增量 qi典型地在 8 和 32 之间以得到好的结果。然而, 出于示例性目的在图 4 中示出 四个像素的屏幕空间半径增量。 说 明 书 CN 103838548 A 9 7/11 页 10 0052 通过从层次深度图 300 的基本层级 310 读取值来实施针对位于第一圆 410(0) 内 的每个样本像素 430 读取深度值。通过从层次深度图 300 的第一层级 320 读取值来实施针 对位于第一圆 410(0) 和第二圆 410(1) 之间的每个样本像素 430 读取深度值。通过从层 次深度图 300 的第二层级 330 读取值来实施针对位于第二圆 410(1) 和第三圆 410(。

39、2) 之 间的每个样本像素 430 读取深度值, 以此类推。 0053 例如, 如图 4 所示, 关于数字图像 400 的左上像素 (即具有 x 坐标 0 和 y 坐标 0 的 像素) , 目标像素 420 可具有 x 坐标 24 和 y 坐标 8。图 4 中的阴影像素中的每一个表示在环 境光遮蔽值的计算中所使用的样本像素 430。关于数字图像 400 的左上像素, 样本像素 430 (0) 位于 x 坐标 30 和 y 坐标 7 处。为了确定从层次深度图 300 的哪个层级读取与样本像素 430(0) 相关联的深度值, 计算样本像素 430(0) 到目标像素 420 的距离。如图 4 所示,。

40、 用 于样本像素 430(0) 的距离 hi近似地是 5 个像素, 并且用于样本像素 430(0) 的值 zi从层 次深度图 300 的第一层级 320 读取。 0054 图 5 示出根据一个实施例的并行处理单元 (PPU) 500。虽然本文提供并行处理器 作为 PPU500 的示例, 但应特别注意的是, 这类处理器仅出于示例性目的而阐述, 并且可出 于相同目的采用任何处理器以对其进行补充和 / 或替换。在一个实施例中, PPU500 配置为 在两个或更多个流多处理器 (SM) 550 中并发地执行多个线程。线程 (即执行的线程) 是在 特定 SM550 内执行的指令集的实例化。下文结合图 6。

41、 更详细描述的每个 SM550 可包括但不 限于一个或多个处理核心、 一个或多个加载 / 存储单元 (LSU) 、 一级 (L1) 高速缓存、 共享存 储器等。 0055 在一个实施例中, PPU500 包括输入 / 输出 (I/O) 单元 505, 其配置为通过系统总线 502 传送和接收来自中央处理单元 (CPU) (未示出) 的通信 (即命令、 数据等) 。I/O 单元 505 可实现用于高速外围部件互连 (PCIe) 总线上的通信的 PCIe 接口。在可替代实施例中, I/O 单元 505 可实现其他类型的公知总线接口。 0056 PPU500还包括主机接口单元510, 其将命令解码并。

42、将命令传送到PPU500的网格管 理单元 515 或如命令可指定的其他单元 (例如存储器接口 580) 。主机接口单元 510 配置为 路由 PPU500 的各逻辑单元之间的通信。 0057 在一个实施例中, 由 CPU 将被编码为命令流的程序写入缓冲区。缓冲区是例如存 储器504或系统存储器的存储器中的区域, 其可由CPU和PPU500二者访问 (即读/写) 。 CPU 将命令流写入缓冲区并随后将指向命令流开始的指针传送到PPU500。 主机接口单元510为 网格管理单元 (GMU) 515 提供指向一个或多个流的指针。GMU515 选择一个或多个流并配置 为将所选择的流组织成挂起网格池。 。

43、挂起网格池可包括尚未被选择用于执行的新网格和已 被部分地执行并且已被暂停的网格。 0058 耦连在 GMU515 和 SM550 之间的工作分布单元 520 管理活动网格池, 选择并分派活 动网格用于由 SM550 执行。当挂起的网格有资格执行、 即不具有未解决的数据依赖时, 挂起 的网格由 GMU515 转移到活动网格池。当活动网格的执行被依赖阻塞时, 活动网格被转移到 挂起池。当网格的执行完成时, 网格被工作分布单元 520 从活动网格池移除。除了接收来 自主机接口单元 510 和工作分布单元 520 的网格以外, GMU510 还接收在网格的执行期间由 SM550 所动态生成的网格。这些。

44、动态生成的网格加入挂起网格池中的其他挂起的网格。 0059 在一个实施例中, CPU 执行实现应用编程接口 (API) 的驱动程序内核, 该应用编程 说 明 书 CN 103838548 A 10 8/11 页 11 接口使能在 CPU 上执行的一个或多个应用以调度用于在 PPU500 上执行的操作。应用可包 括使驱动程序内核生成一个或多个网格用于执行的指令 (即 API 调用) 。在一个实施例中, PPU500 实现 SIMD(单指令、 多数据) 结构, 其中由线程块中的不同线程对不同数据集并发地 执行网格中的每个线程块 (即线程束 (warp) ) 。驱动程序内核定义包含 k 个相关线程的。

45、线 程块, 使得相同线程块中的线程可通过共享存储器交换数据。 在一个实施例中, 线程块包括 32 个相关线程, 并且网格是执行相同流的一个或多个线程块的阵列, 并且不同的线程块可 通过全局存储器交换数据。 0060 在一个实施例中, PPU500 包括 X 个 SM550(X) 。例如, PPU500 可包括 15 个不同的 SM550。每个 SM550 是多线程的并配置为并发地执行来自特定线程块的多个线程 (例如 32 个线程) 。SM550 中的每一个经由交叉开关 560(或其他类型的互连网络) 连接到二级 (L2) 高速缓存 565。L2 高速缓存 565 连接到一个或多个存储器接口 5。

46、80。存储器接口 580 实现 16、 32、 64、 128 位数据总线等等, 用于高速数据转移。在一个实施例中, PPU500 包括 U 个存 储器接口 580(U) , 其中每个存储器接口 580(U) 连接到相对应的存储器设备 504(U) 。例 如, PPU500 可连接到多达 6 个存储器设备 504, 诸如图形双数据速率、 版本 5、 同步动态随机 存取存储器 (GDDR5SDRAM) 。 0061 在一个实施例中, PPU500实现多级存储器层次。 存储器504位于耦连到PPU500的 SDRAM 的片外。来自存储器 504 的数据可被获取并存储在 L2 高速缓存 565 中,。

47、 该 L2 高速缓 存 565 位于片上并在各 SM550 之间共享。在一个实施例中, SM550 中的每一个还实现 L1 高 速缓存。L1 高速缓存是专用于特定 SM550 的私有存储器。L1 高速缓存中的每一个耦连到 共享的 L2 高速缓存 565。来自 L2 高速缓存 565 的数据可被获取并存储在 L1 高速缓存中的 每一个中用于 SM550 的功能单元中的处理。 0062 在一个实施例中, PPU500 包括图形处理单元 (GPU) 。PPU500 配置为接收指定用于 处理图形数据的着色器程序的命令。 图形数据可被定义为诸如点、 线、 三角形、 四边形、 三角 形条带等基元的集合。典。

48、型地, 基元包括指定用于 (例如在模型空间坐标系中的) 基元的若 干顶点以及与基元的每个顶点相关联的属性的数据。PPU500 可配置为处理图形基元以生 成帧缓冲区 (即用于显示器的像素中的每一个的像素数据) 。驱动程序内核实现图形处理管 线, 诸如由 OpenGL API 定义的图形处理管线。 0063 应用将用于场景的模型数据 (即顶点和属性的合集) 写到存储器。模型数据定义在 显示器上可见的对象中的每一个。 应用随后对驱动程序内核做出请求模型数据被渲染和显 示的 API 调用。驱动程序内核读取模型数据并将命令写到缓冲区以实施一个或多个操作来 处理模型数据。命令可将包括顶点着色器、 外壳着色。

49、器、 几何着色器、 像素着色器等中的一 个或多个的不同着色器程序编码。例如, GMU515 可配置一个或多个 SM550 为执行处理由模 型数据所定义的若干顶点的顶点着色器程序。在一个实施例中, GMU515 可配置不同 SM550 为并发地执行不同着色器程序。例如, SM550 的第一子集可配置为执行顶点着色器程序, 而 SM550 的第二子集可配置为执行像素着色器程序。SM550 的第一子集处理顶点数据以产生 经处理的顶点数据并将经处理的顶点数据写到 L2 高速缓存 565 和 / 或存储器 504。在经 处理的顶点数据被光栅化 (即从三维数据变换成屏幕空间中的二维数据) 以产生碎片数据 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1