深度缓冲的制作方法

文档序号:8435888阅读:1857来源:国知局
深度缓冲的制作方法
【专利说明】深度缓冲
【背景技术】
[0001] 本发明总体上涉及深度缓冲领域,特别地,涉及与用于针对三维图形创建中的图 形渲染的改进的深度缓冲的技术相关的实施例。
[0002] 计算机图形系统用于建模具有三维物体的场景,然后将三维物体显示在二维显示 设备上。一种常用的这种系统为基于多边形、物体排序的图形系统,其中,场景中的三维物 体分别由与图像中所描绘的物体的形状近似的多个多边形表示。根据所选择的用于在二维 中查看该场景的取向,表示场景中物体的图元将被隐藏在其它图元后面并且不被显示。未 完全隐藏的图元被称为是可见的,并且将被全部或部分显示,这取决于在显示设备的所渲 染的图像中给定图元的一部分是否被隐藏。随着待渲染场景的深度复杂性的增加,最终可 由显示设备的观察者看见的表示该场景的所有图元的百分比显著降低。因此,在很多情况 下,场景的许多图元将被隐藏。
【附图说明】
[0003] 关于以下附图描述了一些实施例:
[0004] 图1是本发明的一个实施例的系统图;
[0005] 图2是根据一个实施例的图1所示的深度缓冲器的更详细的示意图;
[0006] 图3是本发明一个实施例的系统图;以及
[0007] 图4是一个实施例的前视图。
【具体实施方式】
[0008] 传统的计算机图形系统可具有帧缓冲器和深度缓冲器。帧缓冲器通常是保存图像 中每个像素或样本的色彩和强度的数字表示的存储器。帧缓冲器也被称为视频位映射。深 度缓冲器(也被称为Z缓冲器)是一个具有针对帧缓冲器中每个像素或样本的条目的大存 储器阵列。
[0009] 一种用于确定哪些图元将是可见的或被隐藏的方法涉及使用深度缓冲器。图形系 统中的深度轴反映距特定观察者的视点的距离。因此,较大的深度值表示距视点的较大距 离。深度缓冲涉及比较所生成的物体上的点的深度值,以确定哪个物体最接近视点,并且因 此应该出现二维显示器上。作为对针对场景的图形数据的处理的一部分,为场景中的每个 图元生成像素。
[0010] 在传统的深度缓冲中,随着每个像素的生成,将其深度坐标与之前存储在针对图 像该位置的深度缓冲器中的深度坐标进行比较。在处理针对场景的第一图元之前,通过将 与最大距离相对应的值存储在针对每个像素的深度缓冲器条目中来初始化深度缓冲器,从 而使得初始的、旧的深度值与最大距离相对应。一般地,如果新的深度值小于旧的深度值 (这表示该像素与之前的视点相比更靠近视点),则该象素被写入到显示设备中,并且深度 缓冲器被更新以包含新的值。如果新的值大于或等于旧的值,则该象素不被写入并且深度 缓冲器保持不变。需要注意的是,上述文字描述了被称为"小于"的深度测试,即,深度缓冲 器保持小于之前值的值。也可使用其它深度测试。在处理期间,针对最终被完全隐藏的图 元的所有像素可在深度缓冲器被覆盖(overwrite),从而使得图元不被显示。
[0011] 在计算机图形中,"渲染"是将一组数据转换为可被显示的图像的过程。在渲染过 程中,图像数据库通常保持所读取的多边形数据,并由渲染硬件逐像素地执行计算以决定 每个像素的色彩。色彩计算器通常执行该功能。当多边形被渲染时,为多边形覆盖的每个 像素获得色彩样本。如果进行了过采样,则每个像素具有多个相应的色彩值,这些色彩值经 平均后给出最终的色彩。每个色彩均具有相关联的深度值和位置。例如,在小于深度测试 中,深度缓冲器存储每个位置的最小深度值和计数器。如果色彩样本具有小于深度缓冲器 中所记录的该位置的值的深度值,则将该样本写入到帧缓冲器中并更新深度缓冲器。否则, 舍弃该色彩样本。
[0012] 因此,在深度缓冲中,每个像素的色彩确定以及与三维图形相关联的许多其它功 能(例如,使用包括不同阴影、孔洞、透明纹理、半透明纹理及其它特征的不同的纹理)通常 是在图形处理器的渲染引擎中执行的。渲染引擎通过利用渲染管线来执行这些功能。图形 数据沿渲染管线流动。通常,直到管道末端才执行深度缓冲。深度缓冲的理念在于移除针 对将被遮挡的图元的像素。因此,可节省处理时间并提高效率。
[0013] 根据一些实施例,深度值可被分成较重要位(moresignificantbit)和较不重要 位(lesssignificantbit)。通过这样操作,可仅基于较重要位来完成一些处理。在较重 要位的数量显著少于位的总数的情况下,可保存一些存储器带宽。换言之,通过仅使用较重 要位以用于深度缓冲操作中的一些操作,可减少存储器带宽的使用,从而提高效率。
[0014] 在一些情况下,存储器带宽利用率是功耗的最重要的决定因素。在包括移动应用 的许多应用中,功耗是首要考虑的因素。
[0015] 在计算机系统中,存储器访问是最消耗功率的操作之一。因此,在最大可能程度上 减少内存带宽的使用是重要的。
[0016] 在一些情况下,通过在图形处理器中减少到深度缓冲器以及从深度缓冲器的存储 器带宽的使用,可获得显著的功耗节省。因此,在一些实施例中,通过减少用于表示深度值 的位的数量,可减少存储器带宽,同时也降低了功耗。本文所描述的技术可与普通的深度缓 冲技术(包括深度缓冲器高速缓存、深度缓冲器压缩、Zmax消隐以及Zmin消隐)结合使用。
[0017] 在包括DirectX以及OpenGL的许多图形处理规范中,深度值可以24位整数或32 位浮点值来存储。本申请的发明人已发现,在深度值的最不重要位中具有相对无用的内容。 因此,深度值Z可具有N位,目前通常是24位或32位。H个最重要位可用术语Zhi表示, L个最不重要位可用Z1。来表示。因此,Z= (ZhkOj+Z1。。(Zhi〈〈L)+000...00b〈 =Z〈= (Zhi〈〈L)+lll...lib成立,其中000. ..00b表示L个二进制零,111...lib表示L个二进制 1。为简单起见,Zf= (Zhi〈〈L)+000...00b,(其中Z被量化至H位,并且下舍入),且Zc = (Zhi〈〈L) +111. ? ? 1lb,(其中Z被量化至H位,并且上舍入)。
[0018] 通常,借助Zmin/Zmax消隐,图形处理器读取当前的深度值,接着是逐样本或像素 进行深度比较,并且如果通过深度比较,则经由深度高速缓存将新的深度值写入到深度缓 冲器。根据本发明的一些实施例,通过在第一实例中仅使用zhi并仅在需要时使用Z1(5而继 续,深度比较可保留地(conservatively)进行,以便从不生成任何不正确的深度比较。
[0019] 在本文所述的实施例中,深度测试为小于测试,这是因为如果传入的样本的深度 小于深度缓冲器中的相应的深度,则深度测试通过。然而,在本发明的其它实施例中可使用 任何深度测试。
[0020] 参照图1,深度管线可包括耦合到存储器系统18的光栅化器12、HiZ单元14和深 度单元16。在一个实施例中,所述HiZ单元14执行Zmin/Zmax消隐。在深度单元16和存 储单元18之间传递的数据量确定所需要的带宽,并最终控制单元的功耗的一部分部分。因 此,在本发明的一些实施例中,期望的是减少在深度单元和存储器系统之间的存储器传送 的带宽。这些存储器传送通常关于存储器读或存储器写。
[0021] 因此,如果仅由深度单元16从存储器系统中通过读取2*^而读取深度值的H个位, 则可以减带宽少。即,通过使用Zhi值来执行来保留深度测试,
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1