大气散射的硬件加速仿真的制作方法

文档序号:6355819阅读:235来源:国知局
专利名称:大气散射的硬件加速仿真的制作方法
技术领域
大气散射可以涉及可见光子与大气中的诸如雾、云、悬浮微粒和其它单独气体分子之类的物质的交互作用。因此,大气散射效果可以与诸如3D(3维)计算机游戏、飞行模拟器和其它3D成像系统之类的视觉增强计算机图形应用程序有关。仿真大气散射的传统方法可以涉及在图形处理器内核上执行的一个或多个软件线程中计算视线(view ray)样本位置并且将每一个样本位置作为单独的阴影纹理查找请求提交给硬件纹理单元。因为这种方法会导致较高的延迟和性能的实质降低,所以大气散射仿真没有被较大程度地部署到3D计算机图形应用程序中。


对本领域技术人员而言,通过阅读以下说明书和所附权利要求以及参考以下附图,本发明的实施例的各种优点将会变得显而易见,其中图1是根据一个实施例的仿真大气散射的方法的示例的流程图;以及图2是根据一个实施例的系统的示例的框图。
具体实施例方式实施例可以提供包括存储的指令集合的计算机可读存储介质,其中,当由处理器执行所述存储的指令集合时,使得计算机计算图形场景的像素的视线并且将视线的参数发送到硬件纹理单元。这些指令还可以使得计算机从硬件纹理单元接收计算的视线的照度值。实施例还可以提供包括硬件纹理单元的系统,所述硬件纹理单元具有用来接收图形场景的像素的视线的参数以及确定视线的照度值的逻辑。此外,实施例可以包括为图形场景的像素计算视线的仿真大气散射的方法,其中, 所述计算由软件模块执行。该方法还可以提供将视线的参数发送到硬件纹理单元,所述硬件纹理单元基于该参数沿着视线选择多个样本位置。硬件纹理单元还可以将该多个样本位置与阴影纹理进行比较以获取相应的多个照度值,以及将多个照度值相加以获取视线的总照度值。该方法还涉及将总照度值发送到软件模块。视线可以被视为从观察者的眼睛位置延伸到图形场景的帧缓冲器像素的世界空间向量。因此该向量的长度可以与该像素的对应的深度缓冲器中的值成比例。要估计沿着视线的内散射,可以确定由场景中每一个光源照射的视线的比例。要作出这种确定,可以使用变换矩阵将视线变换为光的视图空间。然后可以在光的平截头体中沿着视线长度在多个样本位置处采样视线,累积对光可见(即,其深度值小于光的阴影纹理贴图的深度值)的每一个样本点的照度。将“照亮的”样本的数量与样本间距长度相乘可以构成近似于视线通过其累积照度的总可视距离的数值积分。可能需要每个视线的相当大数量的样本位置以减轻点采样技术所固有的混淆效应。现在转向图1,其示出了处理流程50。流程50通常可以用来在诸如计算机游戏、飞行模拟器和其它3D成像系统之类的实时3维(3D)计算机图形应用程序中仿真大气散射。 在所说明的示例中,流程50的一些部分可以发生在软件模块34,该软件模块34可以包括在图形或通用处理器上运行的像素着色器软件线程,然而,可以在固定功能硬件纹理采样器/ 单元30上执行流程50的其他部分。因此,可以将流程50实现为存储在机器或计算机可读介质中的可执行指令和使用电路技术的固定功能硬件的组合,其中,所述机器或计算机可读介质例如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、闪速存储器等, 所述电路技术例如专用集成电路(ASIC)、互补金属氧化物半导体(CM0Q或晶体管-晶体管逻辑(TTL)技术。例如,可以用一种或多种编程语言的任意组合来编写用于执行在软件模块34中示出的操作的计算机程序代码,其中所述一种或多种编程语言包括着色语言(其甚至可以被预编译或在运行时JIT/即时进行)、诸如C++等的面向对象的编程语言和诸如 “C”编程语言或类似编程语言的传统过程编程语言。此外,硬件纹理单元30可以实现为使用任意上述电路技术的嵌入式逻辑。特别地,所说明的处理框52提供了使用软件模块34来计算图形场景的像素的视线。所计算的视线的方程式/参数可以包括初始位置(X,1,Z)、表示每单元长度沿着每一个3D轴的位置变化的变化度的3D集合(dx,dy,dz)、视线长度(1)以及样本计数(η)。框 54提供了将视线的参数发送到硬件纹理单元30,其可以基于接收的参数在框56沿着视线选择多个样本位置。特别地,纹理单元30可以将视线的3D坐标投射到光的坐标系统以计算对应于视线的开始和结束点的2D(u,v)值、从光的角度的初始深度(t)、以及每个样本步长的这些值的变化度(dt,du, dv)。在每一个样本位置(i),可以将光的2D阴影贴图纹理中的样本的 (ui; Vi)位置内插为(u+i*du,v+i*dv)以及将样本的深度(、)内插为(t+i*dt),以获取多个样本位置。所说明的框58提供了将样本的内插深度(、)与存储在光的阴影贴图中位置 (Ui5Vi)的深度值进行比较以生成样本的照度值,并且将多个照度值相加以获取视线的总照度。例如,纹理单元30可以基于所述样本位置内插2D位置提取阴影纹理的部分/纹理元素(texel),并且进行测试以确定视线的样本位置是否被照射。如果内插深度小于存储在最近的阴影贴图纹理元素中的深度值,那么测试可以涉及考虑被照射的样本(例如,如果没有被照射,那么0 ;以及如果被照射,那么1),或者基于多个附近的纹理元素考虑被部分照射的样本(例如,用于2x2纹理元素比较的0、. 25、. 5、. 75或1)。可以基于其样本间距来加权每一个照度值,将加权后的多个照度值相加以获取视线的照度。因此,可以将能够指示视线的照度百分比的所计算的照度从硬件纹理单元30发送到软件模块34。框60提供了使用软件模块;34来基于视线的照度渲染像素。可以针对所述的图形场景的每一个像素重复处理流程50。通过使用硬件纹理单元30来选择视线样本位置、将样本位置与阴影纹理进行比较、以及将照度值相加,所说明的流程50消除了从硬件纹理单元到软件模块的多个单独纹理样本的耗时的转换。因此,大气散射效果的渲染可以更有效率并且可以显著地增强性能。 简单地说,软件模块34可以用单个纹理单元调用来取代许多单独的纹理查找,以检索视线的照射百分比的值。现在转向图2,其示出了计算系统10,其中,系统10可以是移动平台的一部分,所述移动平台诸如膝上型计算机、个人数字助理(PDA)、无线智能电话、媒体播放器、成像设备、移动互联网设备(MID)等,或它们的任意组合。系统10还可以是诸如个人计算机(PC)、 服务器、工作站等的固定平台的一部分。所说明的系统10包括中央处理单元(CPU) 12,其具有提供对系统存储器16的访问的集成存储器控制器(iMC) 14,所述系统存储器16可以包括双倍数据速率(DDR)同步动态随机存取存储器(SDRAM,例如,DDR3 SDRAM JEDEC Standard JESD 79-3C,2008年4月)模块。可以将系统存储器16的模块合并到单列直插存储器模块 (SIMM)、双列直插存储器模块(DMM) ^hSDMM(SODMM)等。CPU 12还可以具有一个或多个驱动器35和/或处理器内核(未示出),其中每一个内核可以具有指令提取单元、指令解码器、一级(Li)高速缓存、执行单元等的完整的功能性。CPU 12可以可替换地经由前侧总线或使系统10中的每一个部件互连的点到点构造与iMC 14的片外变型(也被称为北桥) 进行通信。CPU 12 还可以执行诸如 Microsoft Windows、Linux 或 Mac (Macintosh) OS 之类的操作系统(OS) 18。所说明的CPU 12经由集线器总线与平台控制器集线器(PCH) 20 (也被称为南桥) 进行通信。iMC 14/CPU 12和PCH 20有时被称为芯片组。CPU12还可以通过PCH 20和各种其他控制器22经由网络端口可操作地连接到网络(未示出)。因此,其他控制器22可以提供用于各种各样目的的平台外通信功能,例如蜂窝电话(例如,W-CDMA(UMTS)、CDMA 2000(IS-856/IS-2000)等)、WiFi (例如,IEEE 802. 11,1999 版,LAN/MAN 无线 LANS)、蓝牙 (例如,IEEE 802. 15. 1-2005,无线个域网)、WiMax (例如,IEEE 802. 16-2004,LAN/MAN 宽带无线LANS)、全球定位系统(GPS)、扩展频谱(例如,900MHz),以及其他射频(RF)电话目的。其他控制器22还可以与PCH 20进行通信以提供对诸如显示器、键盘、鼠标等的用户接口设备的支持,以便允许用户与系统10进行交互和感知来自系统10的信息。PCH 20还可以具有内部控制器,例如USB(通用串行总线,例如,USB规范2. 0,USB 实施者论坛)、串行ATA (SATA,例如SATA Rev. 3. 0规范,2009年5月27日,SATA国际组织 /SATA-I0)、高清音频、以及其他控制器。所说明的PCH 20还耦合到存储设备,其可以包括硬盘驱动器M、只读存储器(ROM)、光盘、闪速存储器(未示出)等。所说明的系统10还包括耦合到专用图形存储器28的图形处理单元(GPU06。专用图形存储器观可以包括GDDR(图形DDR)或DDRSDRAM模块、或适于支持图形渲染的任何其他存储器技术。可以将GPU沈和图形存储器观安装在图形/视频卡上,其中GPU沈可以经由诸如PCI快速图形(PEG,例如,外围部件互连/PCI快速xl6图形150W-ATX规范1. 0, PCI专业组)总线的图形总线或加速图形端口(例如,AGP V3.0接口规范,2002年9月)总线与CPU 12进行通信。可以将图形卡集成在系统母板上、集成在主CPU 12管芯中、配置为母板上的分离的卡等。所说明的GPU沈可以将软件模块34(例如,用户空间代码)执行为诸如3D(3维) 计算机游戏、飞行模拟器或其他3D成像系统的图形应用程序的一部分,其中所述图形应用程序可以经常地涉及各种图形场景的实时渲染。因此,软件模块34可以包括用于像素着色和其它任务的代码。GP似6还可以包括一个或多个驱动器33、高速缓存32、诸如固定功能纹理单元30的渲染硬件,所述固定功能纹理单元30可以包括用于顶点处理、纹理应用程序、 光栅化等的逻辑,以增强和/或支持图形性能。特别地,软件模块34可以通过计算图形场景的像素的视线和将视线的参数36发送到硬件纹理单元30来仿真图形场景中的大气散射。如已指明的,纹理单元30可以具有逻辑以基于参数36沿着每一个视线选择多个样本位置并且将样本位置与阴影纹理进行比较以获取对应的多个样本位置。可以从诸如专用图形存储器观、系统存储器16或者甚至硬盘驱动器M之类的片外存储设备提取阴影纹理的一些部分。所说明的纹理单元30还将多个照度值相加以获取视线的照度40,其中照度40指示每一个视线的照度百分比。可以将照度40返回给软件模块34以用于像素的最终处理和渲染。本发明的实施例适于与所有类型的半导体集成电路(“IC”)芯片使用。这些IC 芯片的示例包括但不限于处理器、控制器、芯片组部件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片等。此外,在一些附图中,用线表示信号导线。一些线可能更粗,用于指示更多的组成信号路径;可能具有数字标记,用于指示多个组成信号路径;和/或可能在一端或多端具有箭头,用于指示主要信息流方向。然而,这不应该以限制的方式来解释。相反,可以结合一个或多个示例性实施例来使用这些增加的细节,以有助于更容易地理解电路。任何表示的信号线,不管是否具有额外的信息,可以实际上包括可以沿多个方向行进的一个或多个信号并且可以用信号方案的任何合适的类型来实现,例如用差分对实现的数字或模拟线、光纤线、和/或单端线。尽管已经给出了示例的尺寸/模型/值/范围,但本发明的实施例并不限于相同的尺寸/模型/值/范围。随着制造技术(例如,光刻术)的不断成熟,期望可以制造出更小尺寸的设备。此外,为了说明和讨论的简洁以及不模糊本发明的实施例的某些方面,可以在或可以不在附图中示出对IC芯片和其它部件而言公知的电源/接地连接。此外,可以以框图的形式示出布置以避免模糊本发明的实施例,并且还要考虑到有关这些框图布置的实现的细节高度地依赖于在其中实现实施例的平台的事实,即这些细节应当在本领域技术人员的范围内。其中阐述了具体的细节(例如,电路)以便描述本发明的示例实施例,本领域技术人员应当明白,可以在没有这些具体细节或具有这些具体细节的变型的情况下实现本发明的实施例。因此本说明书被认为是说明性的而非限制性的。例如,可以使用可以存储指令或指令集的机器或有形计算机可读介质或物品来实现一些实施例,其中,当由机器执行所述指令或指令集时,可以使得机器执行根据实施例的方法和/或操作。例如,这样的机器可以包括任何合适的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器等,并且可以使用硬件和/或软件的任意合适的组合来实现。例如,机器可读介质或制品可以包括任意合适类型的存储器单元、存储器设备、存储器物品、存储器介质、存储设备、存储物品、存储介质和/或存储单元,例如,存储器、可移除或不可移除介质、可擦除或不可擦除介质、可写或可重写介质、数字或模拟介质、 硬盘、软盘、压缩盘只读存储器(CD-ROM)、可刻录压缩盘(CD- 、可重写压缩盘(CD-RW)、光盘、磁介质、磁光介质、可移除存储器卡或盘、各种类型的数字多功能盘(DVD)、磁带、盒式磁带等。指令可以包括使用任何合适的高级、低级、面向对象的、可视的、编译的和/或解释的编程语言实现的任何合适类型的代码,例如原代码、编译代码、解释代码、可执行代码、静态代码、动态代码、加密代码等。除非特别声明,否则可以意识到,诸如“处理”、“计算”、“运算”、“确定”等的术语指代计算机或计算系统、或类似的电子计算设备的动作和/或处理,这些动作和/或处理将表示为计算系统的寄存器和/或存储器中的物理量(例如电子)的数据操作和/或转换为类似地表示为计算系统的存储器、寄存器/或其他这种信息存储、传送或显示设备中的物理量的其他数据。实施例并不限于该上下文。本文使用的术语“耦合”指代所讨论的部件之间的任何类型的关系(直接的或非直接的),并且可以应用于电的、机械的、流体的、光的、电磁的、电机械的或其他连接。此外, 本文使用的术语“第一”、“第二”等仅为了便于讨论,并且不具有特别的时间或顺序意义,除非另有指示。本领域技术人员根据上述描述将意识到,可以以各种形式来实现本发明的实施例的宽泛技术。因此,尽管已经结合实施例的特定示例描述了本发明的实施例,但是不应当这样限制本发明的实施例的真实范围,因为根据对附图、说明书和所附权利要求的学习,其他变型对于熟练的从业者将变得显而易见。
权利要求
1.一种方法,包括计算图形场景的像素的视线,其中,所述计算由软件模块执行; 将所述视线的参数发送到硬件纹理单元; 基于所述参数沿着所述视线选择多个样本位置; 将所述多个样本位置与阴影纹理进行比较以获取对应的多个照度值; 将所述多个照度值相加以获取所述视线的照度,其中,由所述硬件纹理单元执行所述选择、比较和相加;以及将所述照度发送到所述软件模块。
2.根据权利要求1所述的方法,其中,所述视线的参数包括三维初始位置、三维变化度集合、视线长度、以及要被评估的多个样本。
3.根据权利要求1所述的方法,还包括加权所述多个照度值。
4.根据权利要求1所述的方法,还包括基于所述视线的参数从图形存储器提取所述阴影纹理的一些部分。
5.根据权利要求1所述的方法,其中,所述照度指示所述视线的照度百分比。
6.根据权利要求1所述的方法,还包括基于所述视线的照度渲染所述像素,其中,由所述软件模块执行所述渲染。
7.一种系统,包括硬件纹理单元,其具有用于以下操作的逻辑 接收图形场景的像素的视线的参数,以及确定所述视线的照度。
8.根据权利要求7所述的系统,其中,所述硬件纹理单元还包括用于以下操作的逻辑 基于所述参数沿着所述视线选择多个样本位置,将所述多个样本位置与阴影纹理进行比较以获取对应的多个照度值,以及将所述多个照度值相加以获取所述视线的照度。
9.根据权利要求8所述的系统,其中,所述视线的参数包括三维初始位置、三维变化度集合和视线长度。
10.根据权利要求9所述的系统,其中,所述视线的参数还包括要被评估的多个样本。
11.根据权利要求8所述的系统,其中,所述硬件纹理单元还包括用于加权所述多个照度值的逻辑。
12.根据权利要求8所述的系统,还包括耦合到所述硬件纹理单元的图形存储器,所述图形存储器用于存储所述阴影纹理并且所述硬件纹理单元包括用于基于所述视线的参数从所述图形存储器提取所述阴影纹理的一些部分的逻辑。
13.根据权利要求7所述的系统,其中,所述硬件纹理单元包括用于从软件模块接收所述视线的参数的逻辑。
14.根据权利要求7所述的系统,其中,所述硬件纹理单元包括用于将所述视线的照度发送到软件模块的逻辑。
15.根据权利要求7所述的系统,其中,所述照度用于指示所述视线的照度百分比。
16.一种计算机可读存储介质,其包括当由处理器执行时使得计算机执行以下操作的存储的指令集合计算图形场景的像素的视线;将所述视线的参数发送到硬件纹理单元;以及从所述硬件纹理单元接收所述视线的照度。
17.根据权利要求16所述的介质,其中,所述视线的参数包括三维初始位置、三维变化度集合和视线长度。
18.根据权利要求17所述的介质,其中,所述视线的参数还包括要被评估的多个样本。
19.根据权利要求16所述的介质,其中,当执行所述指令时还使得计算机基于所述视线的照度渲染所述像素。
20.根据权利要求16所述的介质,其中,所述照度用于指示所述视线的内散射照度百分比。
全文摘要
大气散射的硬件加速仿真。一种方法和系统可以包括具有逻辑的硬件纹理单元,所述逻辑用于接收图形场景的像素的视线的参数,以及确定所述视线的照度。可以将能够指示视线的内散射照度百分比的照度传送到软件模块,例如用于像素的渲染的像素着色器。
文档编号G06T15/00GK102194246SQ20111005819
公开日2011年9月21日 申请日期2011年3月10日 优先权日2010年3月10日
发明者D·霍尔顿 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1