图像处理技术的制作方法

文档序号:6338665阅读:210来源:国知局
专利名称:图像处理技术的制作方法
技术领域
本文公开的主题总地涉及图形处理,包括确定渲染哪些阴影。
背景技术
在图像处理技术中,为在屏幕上的独特对象定义阴影。例如,奥斯丁的德克萨斯大 学的 G. Johnson、W. Mark禾口 C. Burns 的“The IrregularZ-Buffer and its Application to Shadow Mapping,,(2009年4 月)(可在http://www· cs. utexas. edu/ftp/pub/techreports/ tr04-09. pdf得到)描述了用于基于光视图和眼睛/相机视图的深度缓冲进行场景的常规 和不规则阴影映射的经典技术,参照它的图4和所附文本。从光的角度看,考虑其中人物站在墙后面的场景。如果该人物完全在墙的阴影中, 则不必估计该人物的阴影,因为墙的阴影覆盖了人物的阴影本该在的区域。典型地,在图形 管线中,将渲染所有人物的三角形以确定人物的阴影。然而,对于该场景而言,人物的阴影 和相应的光视图深度值将是不相关的。相对昂贵的顶点处理用于渲染人物的三角形和阴 影。已知的阴影渲染技术引起在阴影层(shadow pass)期间渲染整个场景或使用对象布置 的专用知识的代价。希望减少在阴影渲染期间发生的处理量。


在附图中通过示例的方式而不是通过限制的方式图示本发明的实施例,并且在附 图中,相同的标号指代相似的部件。图1描绘其中应用请求场景图形的渲染的系统的示例。图2描绘可以在实施例中使用的适当图形管线。图3描绘可以用于确定哪些对象要具有生成的阴影的适当处理。图4描绘用于确定从要生成阴影的对象列表中排除哪些代理边界对象的处理的 另一流程图。图5A描绘模板缓冲(stencil buffer)创建的示例。图5B描绘将包围体投影在模板缓冲上的示例。图6描绘可以使用本发明的实施例的适当系统。
具体实施例方式在整个本说明书中对“一个实施例”、“实施例”的引用表示结合这些实施例描述的 特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在整个本说明书各处出 现的短语“在一个实施例中”、“在实施例中”不必然都指的是相同的实施例。此外,在一个 或多个实施例中,可以组合这些特定特征、结构或特性。各个实施例使得能够通过使用根据眼睛视图的深度缓冲的光视图生成的模板缓 冲来在阴影生成期间进行分级剔除。可以通过将相机视图的标准平面中的深度值投影到光视像平面上来生成模板缓冲。模板缓冲来自光视图,并且指示眼睛视图中可能潜在地 处于阴影中的点或区域。如果在点或区域和光源之间什么也没有,则从光视图照亮该点。如 果在该点或区域和光源之间存在某物,则该点处于阴影中。例如,如果模板缓冲中的区域对 应于来自眼睛视图的可见点或区域,则它可以具有值“1”(或其它值)。该点或区域可以由 标准平面坐标来表示。应用可以渲染简单的几何图形,诸如代理几何图形/包围体,并且使用针对模板 缓冲的遮挡查询来确定任何代理几何图形是否可能已经投射阴影。如果没有,则可以略过 用于渲染与该代理几何图形相关联的对象的阴影的可能昂贵的处理,从而可能减少用于生 成阴影的时间。可以使用分级剔除,使得可以以从最高到最低优先级的顺序对代理几何图形执行 遮挡查询。例如,对于高分辨率人物,可以对整个人物的代理几何图形执行遮挡查询,之后 对该人物的肢体和躯干进行遮挡查询。游戏通常具有可用于物理计算和其它使用的这种代 理几何图形。图1描绘其中应用102请求渲染一个或多个对象的系统的示例。应用102可以发 出场景图形到图形管线104和/或处理器106。场景图形可以包括多个网格。每个网格可 以包括对索引缓冲、顶点缓冲、纹理、顶点、顶点的连接性、着色器(例如,要使用的特定几 何图形着色器、顶点着色器和像素着色器)、纹理以及多级更粗糙的代理几何图形的参考。处理器106可以是单线程或多线程、单核或多核的中央处理单元、图形处理单元, 或执行一般计算操作的图形处理单元。除了其它操作之外,处理器106可以执行图形管线 104的操作。应用102指定场景图形、哪个特定像素着色器要用于生成与颜色值相对的深度 值,以及指定根据其生成深度值的视图的相机视图矩阵(例如,看(look)、向上、侧以及视 场参数)。在各个实施例中,图形管线104使用它的像素着色器(未示出)来针对相机视图 矩阵为应用102提供的场景图形中的对象生成深度缓冲120。可以略过通过图形管线104 进行的输出合并。深度缓冲120可以指示对象在相机空间中的x、y、z位置。ζ位置可以指 示点与相机的距离。深度缓冲120可以与颜色缓冲大小相同(例如为屏幕大小)。图形管 线104将深度缓冲120存储在存储器108中。为了根据相机/眼睛空间生成深度缓冲,可以使用输出深度值的处理器(例如,处 理器或在图形处理单元上的通用计算)、图形管线中的像素着色器(例如,由处理器执行的 软件和在图形处理单元上的通用计算)中的一个或组合。在一些情况下,图形处理器可以填充深度缓冲和颜色缓冲以光栅化(rasterize) 像素。如果使用图形处理器,则可以停用生成颜色缓冲的操作。可以填充深度缓冲以确定 像素拒绝,即,图形处理器拒绝渲染来自相机视角的处于已有像素之后(即,更远)的像素。 深度缓冲存储与1/深度相关的非线性深度值。这些深度值可以标准化到一个范围。处理 器的使用可以减少存储器使用,并且通常当停用对颜色缓冲的渲染时会更快。在像素着色器生成深度缓冲的情况下,像素着色器生成深度值。像素着色器的使 用可以允许线性内插深度值的存储。可以通过使用线性内插深度值减少阴影映射视觉伪 像。场景图形中的深度缓冲包含场景中所有对象从眼睛视图可见的点。在深度缓冲120可用之后,应用102命令处理器106将深度缓冲120从相机空间转换到光空间。处理器 106可以通过将深度值从相机视图投影到光视像平面上来确定模板缓冲。可以使用矩 阵乘法来执行投影。处理器106将来自光空间的深度缓冲120存储在存储器108中作为模 板缓冲122。模板缓冲122包括从眼睛视图可见的所有点的光视图视角。在一些情况下,模 板缓冲122可以盖写深度缓冲,或者可以写入到存储器的另一缓冲中。在各种实施例中,倘若没有其它对象投射阴影在一对象上,模板缓冲122指示相 机/眼睛视图中从光视图可见的点或区域。在一个实施例中,模板缓冲被初始化为全零。如 果来自眼睛/相机视图的像素从光视图可见,则将“ 1 ”存储在模板缓冲的与该区域相关联 的部分中。图5A描绘基于来自眼睛视图的对象的可见性的模板缓冲的示例。“1”被存储在 从光视图可见的区域中。例如,区域可以是4像素乘4像素的区域。如将在后文更详细描 述的,当根据光视图光栅化场景时,可以从要具有绘制的阴影的区域中排除场景中对象的 映射到模板缓冲中的空区域的4像素乘4像素的区域。该约定可以颠倒,使得“0”指示从光视图的可见性,而“1”指示从光视图的不可见性。模板缓冲可以是二维阵列。模板缓冲的大小可以设置为使得模板缓冲中的字节对 应于光视图渲染目标中的4像素乘4像素的区域。可以选择字节大小来匹配散射指令可以 涉及的最小大小。散射指令将存储的值分发到多个目的地。相比之下,传统的存储指令将 值分发到顺序/邻接的地址。例如,软件光栅化器(rasterizer)最大化性能情况下可以一 次操作16个像素,这是由于它的16宽的SIMD指令集。模板缓冲可以是任何大小。较小大小的模板缓冲将更快地生成和使用但是过于保 守,而较大大小将更精确但以更多时间来进行创建和更多存储器覆盖区为代价。例如,如果 模板缓冲是1比特,则将场景映射到模板缓冲中的任何空区域将不太可能产生场景的可以 略过阴影处理的任何部分。如果模板缓冲是较高分辨率的,则将发生对模板缓冲中的多个 像素进行扫描以确定场景的哪些部分不生成阴影。性能调整可以为给定应用产生最佳模板 缓冲分辨率。例如,将来自场景的3D对象投影到2D模板缓冲上产生的渲染的代理几何图形可 以覆盖100X100个像素。在模板缓冲可用之后,应用102可以请求生成简单的代理几何图形或包围体(例 如,矩形、球形或凸包),以表示相同场景图形中用于生成深度缓冲和模板缓冲的对象。例 如,如果对象是茶壶,则可以使用一个或多个包围体或一些三维体来表示对象,所述一个或 多个包围体或一些三维体包围对象但是具有比被包围的对象更少的细节。如果对象是人, 则头部可以表示为球形,并且躯干和每个肢体可以由包围体或一些三维体来表示,所述包 围体或一些三维体包围对象但是具有比被包围的对象更少的细节。此外,应用102可以识别一个或多个场景图形(用于相机视图和光视图二者来生 成模板缓冲的相同的场景图形),并且请求图形管线104来确定场景图形的包围体中的每 个区域是否映射到模板缓冲中的相应区域上。在此情况下,场景图形中每个对象的包围体 用于确定被包围的对象是否在投影到光视图并且从眼睛视图可见对象上投射阴影。相比之 下,深度缓冲和模板缓冲的确定认为对象与其包围体相对。图形管线104使用一个或多个像素着色器来将包围体的多个部分映射到模板缓
7冲的相应部分上。根据光视图,场景图形中的每个包围体可以映射到模板缓冲的相应区域。 根据光视图,如果对象的包围体没有覆盖模板缓冲的标记为“1”的任何区域,则该对象不能 投射阴影到从眼睛视图可见的对象上。因此,从阴影渲染排除该对象。在各个实施例中,对于场景图形中的每个对象,使用图形管线104从光视图渲染 代理几何图形,并且像素着色器读取模板缓冲以确定代理几何图形是否具有阴影。图5B描绘了将包围体投影在参照图5A生成的模板缓冲上的示例。两个包围体1 和2从来自于眼睛视图、产生模板缓冲的光视图变换为不可见。在该示例中,包围体1从光 视图投影在模板缓冲中的1上,因此不从可以为其渲染阴影的对象中排除该相应对象。包 围体2投影在模板缓冲中的0上。因此,可以从阴影渲染排除与包围体2相关联的对象。参照图1,输出缓冲IM可以初始化为零。如果任何区域用“0”覆盖深度缓冲,则 不对输出缓冲进行写入。如果任何区域用“1”覆盖深度缓冲,则向输出缓冲写入“1”。相同 对象的不同区域的并行处理可以同时发生。如果在任何时候向输出缓冲写入“1”,则不从阴 影渲染排除与包围体相关联的对象。在一些情况下,输出缓冲124可以是模板缓冲中的值的和。因此,如果输出缓冲始 终大于零,则不从阴影渲染排除相应对象。在另一情形中,输出缓冲在大小上可以是多个比特的并且具有多个部分。第一像 素着色器可以将代理几何图形的第一部分映射到模板缓冲的相应部分,并且如果代理几何 图形的第一部分映射到模板缓冲中的“1”,则写入“1”到输出缓冲124的第一部分,或者如 果代理几何图形的第一部分映射到模板缓冲中的“0”,则写入“0”。此外,并行地,第二像素 着色器可以将相同代理几何图形的第二部分映射到模板缓冲的相应部分,并且如果代理几 何图形的任何部分映射到模板缓冲中的“1”,则写入“1”到输出缓冲124的第二部分,或者 如果代理几何图形的第二部分映射到模板缓冲中的“0”,则写入“0”。输出缓冲124中的结 果可以“或(OR)”在一起,并且如果输出是“0”,则代理几何图形不生成阴影,并且被排除出 要为其生成阴影的代理对象的列表。如果来自输出缓冲124的“或(OR)”在一起的输出产 生“1”,则不能从要为其生成阴影的代理对象的列表中排除该代理对象。一旦被填充,就可 以在没有竞争的情况下可靠地并行访问模板缓冲内容。图形处理单元或处理器以与模板缓冲的分辨率相同的分辨率光栅化包围体。例 如,如果模板缓冲具有2X2像素区域的分辨率,则以2X2像素区域等光栅化包围体。在确定要从阴影渲染排除哪些对象之后,应用102(图1)向图形管线104提供用 于确定模板缓冲和从阴影渲染排除对象的相同的场景图形,以生成阴影。从要为其生成阴 影的代理对象的列表中排除其包围体被映射到模板缓冲中的“1”的任何对象。在此情况下, 场景图形中与包围体相对的对象用于生成阴影。如果在网格中的任何包围体将阴影投影在 模板缓冲的可见区域上,则针对阴影渲染而估计整个网格。网格阴影标志126可以用于指 示哪些网格具有渲染的阴影。图2描绘了可以在实施例中使用的适当图形管线。图形管线可以符合kgal,M 和 AkeleyX (2004 年)发布的“The OpenGL Graphics System =ASpecification (Version 2. 0) (OpenGL图形系统规范(2. 0版))”、微软出版社(2003年)出版的Microsoft DirectX 9ProgrammabIe Graphics Pipe-line 和Microsoft DirectX 10(例如在微软公司(2006 年)由D. Blythe发布的“The Direct3D lOSystem”中有描述)以及它们的变型。DirectX是涉及输入设备、音频和视频/图形的一组应用程序接口(API)。在各种实施例中,可以使用一个或多个应用程序接口(API)配置图形管线的所有 级。绘制基元(例如,三角形、矩形、正方形、线、点,或具有至少一个定点的形状)在该管线 的顶部流入,并且被变换和光栅化为用于在计算机屏幕上绘制的屏幕-空间像素。输入装配器级202从多达八个顶点缓冲输入流收集顶点数据。可以收集其它 数目的顶点缓冲输入流。在各种实施例中,输入装配器级202还可以支持称为“实例化 (instancing),,的处理,其中输入装配器级202仅用一个绘制调用将对象复制若干次。顶点着色器(VS)级204将顶点从对象空间变换到修剪空间。VS级204读取单个 顶点,并且产生单个变换后的顶点作为输出。几何图形着色器级206接收单个基元的顶点,并且生成零个或多个基元的顶点。 几何图形着色器级206输出基元和线作为顶点的连接条。在一些情况中,几何图形着色器 级206在称为数据放大的处理中从来自顶点着色器级的每个顶点开始发出多达IOM个顶 点。此外,在一些情况下,几何图形着色器级206从顶点着色器级204取得一组顶点,并且 将它们组合以发出较少顶点。流输出级208将来自几何图形着色器级206的几何图形数据直接传送到存储器 250中的帧缓冲的一部分。在数据从流输出级208移动到帧缓冲之后,数据可以返回到管线 中的任何点以用于额外处理。例如,流输出级208可以将几何图形着色器级206输出的顶 点信息的子集以连续顺序拷贝到存储器250中的输出缓冲。光栅化器级210执行诸如修剪、剔除、片段生成、剪裁、透视分隔、视口变换、基元 设置和深度偏移的操作。像素着色器级212读取每个单个像素片段的属性,并且产生具有颜色和深度值的 输出片段。在各种实施例中,基于来自应用的指令选择像素着色器212。当代理几何图形被光栅化时,像素着色器基于包围体的像素位置查找模板缓冲。 像素着色器可以通过将包围体中的每个区域与模板缓冲中的相应区域进行比较,来确定包 围体的任何区域是否可能已经产生了阴影。如果模板缓冲中对应于包围体的区域的所有区 域指示没有阴影被投射在可见对象上,则从要为其渲染阴影的对象的列表中排除对应于该 包围体的对象。因此,实施例提供对对象的识别并从要为其渲染阴影的包围体的列表中排 除对象。如果对象没有投射阴影在可见对象上,则可以略过可能昂贵的高分辨率阴影计算 和光栅化操作。输出合并级214对来自像素着色器级212的片段执行模板和深度测试。在一些情 况下,输出合并级214执行渲染目标混合。存储器250可以实现为以下的任何一个或组合诸如但不限于随机存取存储器 (RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM)的易失性存储器设备,或者任何其它 类型的基于半导体的存储器或磁存储器。图3描绘可以用于确定场景中的哪些对象要具有生成的阴影的适当处理。框302包括提供场景图形来进行光栅化。例如,应用可以提供场景图形到图形管 线来进行光栅化。场景图形可以使用网格、顶点、连接性信息、用于光栅化场景的着色器的 选择,以及包围体来描述要显示的场景。框304包括根据相机视图为场景图形构造深度缓冲。图形管线的像素着色器可以用于根据指定的相机视图生成场景图形中对象的深度值。应用可以指定像素着色器用于存 储场景图形的深度值,并且使用相机视图矩阵来指定相机视图。框306包括基于深度缓冲根据光视图来生成模板缓冲。矩阵数学可以用于将深度 缓冲从相机空间转换到光空间。应用可以命令处理器、图形处理器,或者请求在图形处理器 上的通用计算,来将深度缓冲从相机空间转换到光空间。处理器将所产生的来自光空间的 深度缓冲存储在存储器中作为模板缓冲。参照图1和5A描述了模板缓冲的各种可能实现。框308可以包括基于模板缓冲的内容来确定来自框302中提供的场景图形的对象 是否可以投射阴影。例如,像素着色器可以将对象的代理几何图形中的每个区域与模板缓 冲中的相应区域进行比较。如果代理几何图形中的任何区域与模板缓冲中的“ 1”重叠,则 该代理几何图形投射阴影,并且不从阴影渲染排除相应的对象。如果代理几何图形不与模 板缓冲中的任何“1”重叠,则在框310中从阴影渲染排除该代理几何图形。框308和310可以重复进行,直到检查了所有代理几何图形对象。例如,可以设置 检查对象的顺序来确定它们是否投射阴影。例如,对于高分辨率人形图像,检查整个人图像 的包围框(bounding box),然后接着检查肢体和躯干的包围框。如果没有从人图像的代理 几何图形的任何部分投射阴影,则可以略过该图像的肢体和躯干的代理几何图形。然而,如 果从人图像的代理几何图形的一部分投射阴影,则检查人图像的其它子几何图形以确定是 否有任何部分投射阴影。因此,可以略过一些子几何图形的阴影处理以节省存储器和处理 资源。图4描绘用于确定从要具有渲染的阴影的对象列表中排除哪些代理边界对象的 处理的另一流程图。框402包括设置场景图形的渲染状态。应用可以通过指定像素着色器根据特定相 机视图写入场景图形的深度值来设置渲染状态。应用提供相机视图矩阵以指定相机视图。框404包括应用提供场景图形到图形管线以进行渲染。框406包括图形管线基于指定的相机视图变换来处理输入网格,并且将深度缓冲 存储在存储器中。场景图形可以由图形管线并行处理。管线的很多级可以被并行化。像素 处理可以与顶点处理并行进行。框408包括将深度缓冲位置变换到光空间。应用可以请求处理器将来自相机空间 的深度缓冲的X、1、Z坐标转换为光空间中的X、1、Z坐标。框410包括将三维光位置投影到二维模板缓冲上。处理器可以将光空间中的X、 y、ζ坐标转换为二维模板缓冲。例如,矩阵数学可以用于转换这些位置。模板缓冲可以被 存储在存储器中。框412包括应用对图形管线进行编程以指示代理几何图形是否投射阴影。应用可 以为场景图形选择用于读取模板缓冲的像素着色器。并行地,所选择的像素着色器将代理 几何图形中的位置与模板缓冲中的相应位置进行比较。像素着色器从模板缓冲中的区域读 取模板值,并且如果代理几何图形中的任何相应区域也具有1,则将1写入输出缓冲。参照 图1、5A和5B描述模板缓冲和使用模板缓冲通过代理几何图形来确定阴影生成的各种实施 例。框414包括在场景图形中选择下一个网格。框416包括确定是否已经针对模板缓冲测试了所有网格。如果已经测试了所有网格,则在框416之后执行框450。如果还没有测试所有网格,则在框416之后执行框418。框418包括将输出缓冲清零。输出缓冲指示包围体几何图形是否投射任何阴影。 如果输出缓冲非零,则可以由与包围体相关联的对象投射阴影。当所渲染的与包围体相对 的实际对象用于渲染阴影时,那么是否投射阴影是已知的。在一些情况下,即使包围体和模 板缓冲之间的比较指示投射阴影,对象也不投射阴影。框420包括所选择的像素着色器确定代理几何图形是否投射任何阴影。如果代理 几何图形中的相应位置对应于模板缓冲中的1,则像素着色器遵循来自框412的命令存储1 到输出缓冲。多个像素着色器可以并行操作,来以参照图1描述的方式将代理几何图形的 不同部分与模板缓冲中的相应位置进行比较。框422包括确定输出缓冲是否清零。如果指示没有一个代理几何图形映射到模板 缓冲中的任何1,则输出缓冲清零。如果在执行框420之后输出缓冲清零,则在框430中将 网格标记为不投射阴影。如果在执行框420之后输出缓冲没有清零,则在框422之后执行 框 424。框4 包括确定是否为网格指定网格分级。应用指定该网格分级。如果指定了分 级,则在框4M之后执行框426。如果没有指定分级,则在框4M之后执行框440。框似6包括选择下一个最高优先级的代理几何图形,然后重复框418。对于下一个 最高优先级的代理几何图形执行框418。框440包括将网格标记为投射阴影。如果网格中的任何包围框基于模板缓冲中的 相应位置而具有投影的阴影,则针对阴影渲染考虑该网格中的所有对象。框450包括应用允许阴影的生成。从可以生成阴影的对象列表中排除不生成阴影 的网格。如果网格中的任何包围框在模板缓冲上投影阴影,则针对阴影渲染而估计整个网 格。在一些实施例中,形成模板缓冲可以结合形成不规则ζ缓冲(IZB)光视图表示而 适当地进行。不规则阴影映射的基本数据结构是格栅(grid),但是格栅以光视图中每个像 素的子像素分辨率来存储被投影像素的列表。可以通过以下处理来创建IZB阴影表示。(1)根据眼睛视图光栅化场景,仅存储深度值。(2)将深度值投影在光视像平面上,并且在采样的每像素列表中存储子像素 精确位置(零个或多个眼睛视图点可以映射到同一光视图像素)。这是数据结构构造阶段, 并且在该数据结构构造阶段期间,当每个眼睛视图值被投影到光空间中时,在2D模板缓冲 中设置一比特。尽管多个像素可以对应于同一模板缓冲位置,但是可以存储单个“1”。格栅分布模板缓冲可以在( 期间生成,其指示IZB的没有像素值的区域。具有 像素值的区域与包围体进行比较,以确定是否可以由包围体投射阴影。(3)根据光视图渲染几何图形,针对在(2)中创建的模板缓冲进行测试。如果模板 缓冲中的采样在光视图对象的边缘内,但是相对于光在对象后面(即,在对象更远处),则 采样在阴影中。因此标记被遮蔽的采样。当在(3)中根据光视图光栅化几何图形时,可以 略过映射到模板缓冲中的空区域的区域,因为在UB数据结构的该区域中将不存在要进行 测试的眼睛视图采样。(4)再次根据眼睛视图渲染场景,但是使用从步骤C3)得到的阴影信息。因为许多阴影处理技术(不同于IZB)具有由于不精确和混叠而造成的各种伪像,所以可以(例如,经由简单的比例因子)扩展代理几何图形或者模板缓冲被扩张来使得测 试更加稳妥,从而避免引入更多伪像。在一些实施例中,模板缓冲可以存储来自光视图的深度值以代替1和0。对于一个 区域,如果模板缓冲中的深度值大于从光视图平面到包围体的距离(即,包围体比模板缓 冲中记录的对象更接近光源),则包围体投射阴影在该区域上。对于一个区域,如果模板缓 冲中的深度值小于从光视图平面到包围体的距离(即,包围体比模板缓冲中记录的对象更 远离光源),则包围体不投射阴影在该区域上,并且可以从要具有渲染的阴影的对象中排除 相关联的对象。图6描绘可以使用本发明的实施例的适当系统。计算机系统可以包括主机系统 502和显示器522。计算机系统500可以在手持式个人计算机、移动电话、机顶盒或任何计算 设备中实现。主机系统502可以包括芯片组505、处理器510、主机存储器512、储存器514、 图形子系统515和无线电520。芯片组505可以提供处理器510、主机存储器512、储存器 514、图形子系统515和无线电520之间的互相通信。例如,芯片组505可以包括能够提供 与储存器514的互相通信的存储适配器(未示出)。例如,存储适配器能够根据任何以下协 议与储存器514通信小型计算机系统接口(SCSI)、光纤信道(FC)和/或串行高级技术附 件(S-ATA)。在各种实施例中,计算机系统执行参照图1-4描述的技术,以确定哪些代理几何 图形要具有渲染的阴影。处理器510可以实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处 理器、多核心或任何其它微处理器或中央处理单元。主机存储器512可以实现为易失性存储器设备,诸如但不限于随机存取存储器 (RAM)、动态随机存取存储器(DRAM)或静态RAM (SRAM)。储存器514可以实现为非易失性 存储设备,诸如但不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附接存储设 备、闪速存储器、电池备份SDRAM (同步DRAM),和/或网络可访问存储设备。图形子系统515可以执行对诸如用于显示的静态图像或视频的图像的处理。模拟 或数字接口可以用于通信地耦合图形子系统515和显示器522。例如,接口可以是高清多媒 体接口、显示端口(DisplayPort)、无线HDMI,和/或符合无线HD的技术中的任何一种。图 形子系统515可以集成到处理器510或芯片组505中。图形子系统515可以是通信地耦合 到芯片组505的独立卡。无线电520可以包括能够根据可应用的无线标准(诸如但不限于IEEE802. 11和 IEEE 802. 16的任何版本)发送和接收信号的一个或多个无线电。本文描述的图形和/或视频处理技术可以用各种硬件架构来实现。例如,图形和 /或视频功能可以集成在一个芯片组中。可替代地,可以使用分立的图形和/或视频处理 器。作为另一实施例,图形和/或视频功能可以通过包括多核心处理器的通用处理器来实 现。在另外的实施例中,功能可以实现在消费者电子设备中。本发明的实施例可以实现为以下的任何一个或组合使用主板互连的一个或多个 微芯片或集成电路、硬布线逻辑、由存储器设备存储并由微处理器执行的软件、固件、专用 集成电路(ASIC),和/或现场可编程门阵列(FPGA)。作为示例,术语“逻辑”可以包括软件 或硬件和/或软件和硬件的组合。
例如,本发明的实施例可以提供为计算机程序产品,其可以包括具有在其上存储 的机器可执行指令的一个或多个机器可读介质,当所述机器可执行指令由诸如计算机、计 算机的网络或其它电子设备的一个或多个机器执行时,可以使得所述一个或多个机器进行 根据本发明实施例的操作。机器可读介质可以包括但不限于软盘、光学盘、CD-R0M(光盘只 读存储器)、磁光盘、R0M(只读存储器)、RAM(随机存取存储器)、EPR0M(可擦可编程只读 存储器)、EEPR0M(电可擦可编程只读存储器)、磁卡或光卡、闪速存储器,或其他类型的适 于存储机器可执行指令的介质/机器可读介质。附图和前文的描述给出了本发明的示例。尽管描述为多个不同的功能项,但是本 领域技术人员将意识到,一个或多个这样的部件可以很好地组合到单个功能部件中。可替 代地,某些部件可以分为多个功能部件。来自一个实施例的部件可以添加到另一实施例中。 例如,本文描述的处理顺序可以改变,并且不限于本文描述的方式。此外,任何流程图的动 作不必然以示出的顺序实现;也不必然执行所有动作。此外,不依赖于其它动作的那些动作 可以与这些其它动作并行执行。然而,本发明的范围在任何情况下均不受这些特定示例限 制。不管是否在说明书中明确给出,诸如结构、尺寸和材料使用上的差别的许多变型是可能 的。本发明的范围至少与所附权利要求给出的范围一样宽。
权利要求
1.一种计算机实现的方法,包括 请求基于相机视图来确定场景的深度缓冲;请求根据光视图将所述深度缓冲变换为模板缓冲,所述模板缓冲根据所述光视图识别 所述场景的可见区域;确定代理几何图形中的任何区域是否在所述模板缓冲中的可见区域上投射阴影; 响应于所述代理几何图形中的任何区域在所述模板缓冲中的可见区域上投射阴影,从 阴影渲染选择性地排除所述代理几何图形;以及渲染与没有从阴影渲染排除的代理几何图形对应的对象的阴影。
2.如权利要求1所述的方法,其中,请求确定场景的深度缓冲包括 请求像素着色器基于特定相机视图从场景图形生成所述深度缓冲的深度值。
3.如权利要求1所述的方法,其中,请求变换所述深度缓冲包括 指定处理器来将所述深度缓冲从相机视图转换到光视图。
4.如权利要求1所述的方法,还包括选择最高优先级的代理几何图形,其中,确定代理几何图形中的任何区域是否在所述 模板缓冲中的可见区域上投影阴影包括确定所述最高优先级的代理几何图形中的任何区 域是否在所述模板缓冲中的可见区域上投影阴影。
5.如权利要求4所述的方法,其中,所述最高优先级的代理几何图形包括多部分对象 的包围体,并且所述方法还包括响应于所述最高优先级的代理几何图形没有在所述模板缓冲中的可见区域上投影阴 影,排除与所述多部分对象的每个部分相关联的任何代理几何图形。
6.如权利要求4所述的方法,其中,所述最高优先级的代理几何图形包括多部分对象 的包围体,并且所述方法还包括响应于所述最高优先级的代理几何图形在所述模板缓冲中的可见区域上投影阴影,确 定与所述多部分对象的每个部分相关联的每个代理几何图形是否在所述模板缓冲中的可 见区域上投影阴影。
7.如权利要求1所述的方法,还包括响应于网格中的任何代理几何图形在所述模板缓冲中的可见区域上投影阴影,确定与 所述网格相关联的每个代理几何图形是否在所述模板缓冲中的可见区域上投影阴影。
8.一种装置,包括应用,其请求场景图形的渲染;像素着色器逻辑,用于根据眼睛视图生成所述场景图形的深度缓冲; 处理器,用于基于光视图将所述深度缓冲转换为模板缓冲; 存储器,用于存储所述深度缓冲和所述模板缓冲;一个或多个像素着色器,用于确定包围体的多个部分是否在由所述模板缓冲指示的可 见区域上投射阴影,并且选择性地排除与在可见区域上投射阴影的包围体相关联的对象; 以及用于渲染与没有从阴影渲染排除的包围体对应的对象的阴影的逻辑。
9.如权利要求8所述的装置,其中,所述应用指定要使用的像素着色器。
10.如权利要求8所述的装置,其中,所述一个或多个像素着色器用于选择最高优先级的包围体,其中,为了确定包围体的多个部分是否在由所述模板缓冲 指示的可见区域上投射阴影,所述一个或多个像素着色器用于确定所述最高优先级的包围 体中的任何区域是否在所述模板缓冲中的可见区域上投影阴影。
11.如权利要求10所述的装置,其中,所述最高优先级的包围体包括多部分对象的包 围体,并且其中,所述一个或多个像素着色器用于响应于所述最高优先级的包围体没有在所述模板缓冲中的可见区域上投影阴影,识别 与所述多部分对象的每个部分相关联的任何包围体以从阴影渲染排除。
12.如权利要求10所述的装置,其中,所述最高优先级的包围体包括多部分对象的包 围体,并且其中,所述一个或多个像素着色器用于响应于所述最高优先级的包围体在所述模板缓冲中的可见区域上投影阴影,确定与所 述多部分对象的每个部分相关联的每个包围体是否在所述模板缓冲中的可见区域上投影 阴影。
13.如权利要求8所述的装置,其中,所述一个或多个像素着色器用于响应于网格中的任何包围体在所述模板缓冲中的可见区域上投影阴影,确定与所述网 格相关联的每个包围体是否在所述模板缓冲中的可见区域上投影阴影。
14.一种系统,包括显不设备;无线接口 ;以及主机系统,其通信地耦合到所述显示设备并且通信地耦合到所述无线接口,所述主机 系统包括用于请求场景图形的渲染的逻辑,用于根据眼睛视图来生成所述场景图形的深度缓冲的逻辑;用于基于光视图将所述深度缓冲转换为模板缓冲的逻辑;用于存储所述深度缓冲和所述模板缓冲的存储器;用于确定包围体的多个部分是否在由所述模板缓冲指示的可见区域上投射阴影,并且 选择性地排除与在可见区域上投射阴影的包围体相关联的对象的逻辑;用于渲染与没有从阴影渲染排除的包围体对应的对象的阴影的逻辑;以及用于提供所渲染的阴影以在显示器上显示的逻辑。
15.如权利要求14所述的系统,其中,用于确定包围体的多个部分是否投射阴影的逻 辑用于选择最高优先级的包围体,其中,为了确定包围体的多个部分是否在由所述模板缓冲 指示的可见区域上投射阴影,一个或多个像素着色器用于确定所述最高优先级的包围体中 的任何区域是否在所述模板缓冲中的可见区域上投影阴影。
16.如权利要求14所述的系统,其中,最高优先级的包围体包括多部分对象的包围体, 并且其中,用于确定包围体的多个部分是否投射阴影的逻辑用于响应于所述最高优先级的包围体没有在所述模板缓冲中的可见区域上投影阴影,识别 与所述多部分对象的每个部分相关联的任何包围体以从阴影渲染排除。
17.如权利要求14所述的系统,其中,最高优先级的包围体包括多部分对象的包围体, 并且其中,用于确定包围体的多个部分是否投射阴影的逻辑用于响应于所述最高优先级的包围体在所述模板缓冲中的可见区域上投影阴影,确定与所 述多部分对象的每个部分相关联的每个包围体是否在所述模板缓冲中的可见区域上投影阴影。
全文摘要
本文公开了一种图像处理技术。通过使用根据眼睛视图深度缓冲的光视图生成的模板缓冲,可以在阴影生成期间使用分级剔除。模板缓冲指示从眼睛视图可见的哪些区域从光视图也可见。像素着色器通过将任何对象的代理几何图形与模板缓冲中的可见区域进行比较,可以确定该对象是否可以投射阴影。如果代理几何图形没有在模板缓冲中的可见区域上投射任何阴影,则从要为其渲染阴影的对象列表中排除对应于该代理几何图形的对象。
文档编号G06T5/00GK102096907SQ20101058842
公开日2011年6月15日 申请日期2010年12月10日 优先权日2009年12月11日
发明者D·W·麦克纳布, W·A·胡克斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1