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

文档序号:6520674阅读:198来源:国知局
用于对层次深度图采样的系统、方法和计算机程序产品的制作方法
【专利摘要】提供用于对层次深度图采样的系统、过程和计算机程序产品。用于对层次深度图采样的方法包括以下步骤:生成层次深度图,以及基于样本像素和目标像素之间的差异从层次深度图的目标层级读取与样本像素相关联的值。层次深度图包括至少两个层级。
【专利说明】用于对层次深度图采样的系统、方法和计算机程序产品
【技术领域】
[0001]本发明涉及计算机图形,并且更具体地,涉及利用深度缓冲区的算法。
【背景技术】
[0002]深度缓冲区存储指示用于三维场景中的对象表面的深度的多个值。针对许多类型的计算机图形渲染应用实现深度缓冲区。深度值可用来确定相对于特定视点,对象是否被其他对象所遮蔽。典型地,深度缓冲区包括与数字图像中的相应多个像素相关联的多个值。深度缓冲区中的每个值可表示和与特定像素相对应的视点最靠近的对象的深度。
[0003]一些算法,诸如屏幕空间环境光遮蔽算法,对深度缓冲区内的多个不同值采样以针对每个像素计算环境光遮蔽(八0)值。这些技术的净性能由于深度缓冲区的大量分散的读取而受到损害,导致高速缓存效率低下。因此,存在解决该问题和/或与现有技术相关联的其他问题的需要。

【发明内容】

[0004]提供用于对层次深度图采样的系统、方法和计算机程序产品。用于对层次深度图采样的方法包括下面的步骤:生成层次深度图,以及基于样本像素和目标像素之间的差异((11打虹的⑶)从层次深度图的目标层级读取与样本像素相关联的值。层次深度图包括至少两个层级。
【专利附图】

【附图说明】
[0005]图1示出根据一个实施例的、用于对层次深度图采样的方法的流程图;
[0006]图2示出根据一个实施例的、用于实现可缩放(8(^1处16)环境光遮蔽算法的方法的流程图;
[0007]图3示出根据一个实施例的层次深度图;
[0008]图4示出根据一个实施例的、可缩放环境光遮蔽算法中的用于目标像素的多个样本像素;
[0009]图5示出根据一个实施例的并行处理单元〔??口);
[0010]图6示出根据一个实施例的、图5的流多处理器;以及
[0011]图7示出在其中可实现各先前实施例的各架构和丨或功能性的示例性系统。
【具体实施方式】
[0012]许多不同类型的渲染算法在作为算法一部分的一个或多个计算中利用深度缓冲区(即2缓冲区例如,环境光遮蔽(八0)算法生成着色效果以近似光在真实世界中辐射的路线。八0算法确定附近的几何体对表面上的具体点的遮蔽量。如果附近的几何体遮蔽该点,那么该点可被渲染以包括阴影(例如采用较低强度来渲染然而,如果附近的几何体不遮蔽该点,那么该点可被渲染而没有阴影(例如采用较高强度来渲染本领域普通技术人员将理解的是,使用常规同时维持交互的帧率无法以全高清晰度分辨率实时实施在模型空间中所计算的环境光遮蔽(即通过对每个对象采样来确定对象是否遮蔽了点因此,对全八0算法生成充分近似值的一项技术是屏幕空间环境光遮蔽
[0013]在3^0算法中,模型首先被光栅化以产生深度缓冲区,该深度缓冲区将每个像素位置(或如果以子像素分辨率实现深度缓冲区那么样本位置)与最靠近用于像素的视点的几何体的深度相关联。一旦生成深度缓冲区,那么可通过对多个附近的像素采样来计算用于像素的近似的环境光遮蔽,以确定该像素是否可能被附近的几何体所遮蔽。在一些33八0算法中,用于每个像素的深度和表面法线二者可用来确定近似的遮蔽。常规3^0算法由于深度缓冲区中所采样的点的分散而性能不佳,导致高速缓存效率低下并生成大量长时延存储器访问请求。
[0014]公开了用于对深度缓冲区编码的示例性技术,其提高对深度缓冲区中的大量分散条目采样的算法的性能,从而提高高速缓存效率并减少用于对附近的条目采样的长时延存储器访问请求的数目。
[0015]图1示出根据一个实施例的、用于对层次深度图采样的方法100的流程图。在步骤102,生成层次深度图。在一个实施例中,层次深度图是具有两个或更多个层级的值的阵列,其中基于深度缓冲区中的多个值填充(即叩丨社6)第一层级并且采用来自第一层级的值的子集填充第二层级。在步骤104,从层次深度图的目标层级读取与样本像素相关联的值。在一个实施例中,目标层级基于样本像素与目标像素的距离。应注意的是,虽然本文结合层次深度图阐述各可选特征,但这类特征仅出于示例性目的而阐述,并且其不应被认为是以任何方式进行限制。
[0016]图2示出根据一个实施例的、用于实现可缩放环境光遮蔽(^0)算法的方法200的流程图。应特别注意的是,下面的信息仅出于示例性目的而阐述,并且其不应被认为是以任何方式进行限制,因为其他算法可能利用层次深度图以补充或代替由图2的流程图所示出的“0算法。
[0017]在步骤202,通过在图形处理单元((--)中实施高精度来生成深度缓冲区。在一个实施例中,高精度2-1^88被实施为经过的仅深度预通过模型数据集(即诸如三角形、四边形、或三角形条带的图形基元)被传送到⑶匕随后在深度上变换并光栅化模型数据以产生用于每个片段(即与给定表面对象相关联的像素的一部分)的2坐标。针对与该像素位置相关联的所有其他2坐标测试该2坐标以确定最靠近特定视点的对象,并且如果该2坐标是最靠近的对象,那么将该2坐标存储在深度缓冲区中的与该像素位置相对应的条目处。一旦所有的模型数据已被光栅化,那么最终产生的深度缓冲区表示从视点到在经光栅化的图像中的每个像素位置处的最靠近的表面的光线的长度。
[0018]为了增加“0算法中的结果的准确度,应谨慎地采用可能的最高精度来填充深度缓冲区。在一个实施例中,可通过实现下面的优化来增加深度缓冲区的精度。在将模型视图投影矩阵投向用于上的顶点着色器中所实施的变换的单精度之前,可在主机处理器上以双精度计算模型视图投影矩阵。对于模型视图投影矩阵,可在负无穷(-⑴)的深度处选择远裁剪平面,其可减少当计算矩阵积时所实施的浮点操作的数目。此外,当在中计算变换时,可通过在以列为主的矩阵(例如模型视图投影矩阵)的左侧乘以矢量来节省一半精度。应理解的是,上 述优化仅是用于提高算法准确度的建议,并且其不应被认为是以任何方式进行限制。
[0019]在步骤204,基于深度缓冲区生成层次深度图。在一个实施例中,深度缓冲区用来填充层次深度图的基本层级。典型地,由所生成的深度缓冲区将深度值存储为0和1之间的浮点值。层次深度图的基本层级将深度缓冲区的深度值转换成相机空间值,其指示近裁剪平面(?)的位置和远裁剪平面(?)的位置之间的2值。通过选择来自层次深度图的下一最低层级的值的子集来填充层次深度图的相继较高层级。层次深度图包括至少两个层级,与数字图像的全分辨率相对应的基本层级,以及与小于该基本层级的分辨率(例如基本层级的分辨率的一半)相对应的第一层级。层次深度图的较高层级(即1级、2级等)确保采用高的高速缓存效率读取空间分布的样本(即,当采样的像素较远离目标像素位置时,由
所并行处理的邻近像素将典型地从层次深度图读取相同样本因为层次深度图的每个层级的一小区域留在高速缓存中,所以较少的读取请求将被传送到存储器(即得到高带宽和低时延。
[0020]在步骤206,针对正针对其执行“0算法的数字图像的每个目标像素,选择多个样本像素。在一个实施例中,对于每个目标像素,多个样本像素分布在围绕点的半球上,该半球的中心点在由从视点以与目标像素相关联的方向所投影的光线所相交的表面上的点处。在一个实施例中,根据值\重构点I该值\读取自层次深度图的基本层级、与由X坐标)和7坐标(5^ )所给定的目标像素相关联的索引处。点的X坐标和7坐标由等式给定:
[0021]
【权利要求】
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所述的系统,其中所述处理核心中的两个或更多个配置为并行地从所述层次深度图读取值。
【文档编号】G06F9/30GK103838548SQ201310606910
【公开日】2014年6月4日 申请日期:2013年11月25日 优先权日:2012年11月26日
【发明者】摩根·麦圭尔, 大卫·帕特里克·利布基, 麦克尔·托马斯·马拉 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1