图形处理系统的制作方法_4

文档序号:9327880阅读:来源:国知局
件在数据处理装置上运行时执行本文所述的方法的计算机软件代码部分的计算机程序元件、以及包括在程序在数据处理系统上运行时适于执行本文所述的方法的所有步骤的代码装置的计算机程序。数据处理系统可以是微处理器、可编程FPGA (现场可编程门阵列)等。
[0125]本发明还扩展至包括这种软件的计算机软件载体,其在用于操作图形处理器、渲染器或包括数据处理装置的微处理器系统时,与所述数据处理装置结合使得所述处理器、渲染器或系统执行本发明的方法的步骤。这种计算机软件载体可以是诸如ROM芯片、CD-ROM、RAM、闪存或盘的物理存储介质,或者可以是诸如电线上的电信号、光学信号或者例如卫星的无线电信号等的信号。
[0126]还将理解,并非本发明的方法的所有步骤均需要通过计算机软件来执行,因此从更广泛的方面讲,本发明提供计算机软件,这种软件安装在计算机软件载体上以用于执行本文所阐述的方法的至少一个步骤。
[0127]本发明因此可被适当地具体实现为用于计算机系统的计算机程序产品。这种实现方式可包括固定在诸如计算机可读介质(例如,磁盘、CD ROM、ROM、RAM、闪存或硬盘)的有形的永久介质上的一系列计算机可读指令。它还可包括可通过有形介质(包括但不限于光学或模拟通信线路)或无形地利用无线技术(包括但不限于微波、红外或其它传输技术)经由调制解调器或其它接口装置传输至计算机系统的一系列计算机可读指令。这一系列计算机可读指令具体实现本文先前所述的所有或部分功能。
[0128]本领域技术人员将理解,这些计算机可读指令可以用许多计算机架构或操作系统所使用的多种编程语言来编写。另外,这些指令可利用目前或未来的任何存储器技术(包括但不限于半导体、磁或光学)来存储,或者利用目前或未来的任何通信技术(包括但不限于光学、红外或微波)来传输。可以想到,这种计算机程序产品可作为可移除介质随所附的印刷或电子文档一起分发(例如,紧缩套装软件),用计算机系统预先加载到(例如)系统ROM或固定盘上,或者经由网络(例如,互联网或万维网)从服务器或电子公告牌分发。
【附图说明】
[0129]现在将仅作为示例参照附图描述本发明的多个优选实施方式,附图中:
[0130]图1示意性地示出可按照本发明的方式操作的图形处理流水线;
[0131]图2示出为了处理目的而被分割成拼块的示例性待显示的图像;
[0132]图3示意性地示出本发明的实施方式中的渲染拼块的处理;
[0133]图4示出拼块的示例性光源包围视锥体;
[0134]图5、图6和图7示出本发明的实施方式中的被遮挡光源采样位置的确定;
[0135]图8A至图8D示出本发明的实施方式中可使用的光源采样位置的示例性阵列;以及
[0136]图9示意性地示出本发明的实施方式中的渲染帧的处理。
[0137]在适当的情况下,在附图中相似的标号用于相似的组件。
【具体实施方式】
[0138]现在将在用于显示的计算机图形处理的环境中描述本发明的优选实施方式。
[0139]如本领域已知的,并且如上所述,当计算机图形图像将要被显示时,它通常首先被限定为一系列图元(多边形),所述图元然后被分割成(栅格化为)图形片段以用于依次图形渲染。在正常图形渲染操作期间,渲染器将修改(例如)与各个片段关联的颜色(红色、绿色和蓝色,RGB)和透明度(α)数据,以使得片段可被正确地显示。一旦片段完全通过渲染器,它们关联的数据就被存储在存储器中,准备好输出以显示。
[0140]图1示意性地示出依据本发明操作的图形处理流水线I。图形处理流水线I是具有完全可编程GPGPU环境的拼贴延迟清染器,例如,部分地经由Direct Compute、OpenCL、CUDA等执行的渲染器。
[0141]由于图1所示的图形处理流水线I是基于拼块的渲染器,因此如本领域已知的,它将生成渲染输出数据阵列(例如,待生成的输出帧)的拼块。
[0142](如本领域已知的,在基于拼块的渲染中,并非像立即模式渲染中一样一次性有效地处理整个渲染输出(例如,帧),而是渲染输出(例如,待显示的帧)被分割成多个较小的子区域(通常称作“拼块”)。各个拼块(子区域)被单独地(通常一个接一个地)渲染,渲染的拼块(子区域)然后被重新组合以提供完整的渲染输出(例如,用于显示的帧)。在此类布置中,渲染输出通常被分割成规则大小和形状的子区域(拼块)(通常为例如正方形或矩形),但是这不是必需的。各个拼块对应于画面空间采样位置的各个集合。)
[0143]图2示出被分割成各个拼块20的示例性待显示的图像。
[0144]如本领域已知的,渲染输出数据阵列通常可以是旨在用于在显示装置(例如,屏幕或打印机)上显示的输出帧,但是也可以例如包括旨在用于稍后的渲染处理的中间数据(也称为“渲染至纹理”输出)等。
[0145]图1示出与本发明的实施方式的操作有关的图形处理流水线I的主要元件和流水级。如本领域技术人员将理解的,可存在图1中未示出的图形处理流水线的其它元件。这里还应该注意的是,图1仅是示意性的,例如在实践中,所示的功能单元和流水级可共享重要的硬件单元,尽管在图1中它们被示意性地示出为单独的级。还将理解,如图1所示的图形处理流水线的各个级、元件和单元等可根据需要来实现,并且将因此包括例如适当的电路和/或处理逻辑等以用于执行必要的操作和功能。
[0146]图1示意性地示出在生成要输入给栅格化处理的图元(多边形)2之后的流水级。因此,在这一点,如本领域已知的,响应于提供给图形处理器的命令和顶点数据,图形数据(顶点数据)经历了片段前端操作8,例如变换和照明操作(未示出),以及建立待渲染的图元的图元建立级(未示出)。
[0147]如图1所示,图形处理流水线I的这一部分包括多个级,包括栅格化级3、早期Z(深度)和模板测试级4、片段着色级6的形式的渲染器、后期Z(深度)和模板测试级7、混合级9、拼块缓冲器10以及下采样和写出(多采样分解)级13。
[0148]如本领域已知的,图形处理流水线I的栅格化级3进行操作以将构成渲染输出(例如,待显示的图像)的图元栅格化为各个图形片段以便于处理。为此,栅格化器3接收用于渲染的图元2,将图元栅格化至采样点,并且生成具有适当位置(表示适当的采样位置)的图形片段以用于渲染图元。
[0149]通过栅格化器生成的片段然后被向前发送给流水线的其余部分以进行处理。
[0150]如本领域已知的,早期Z/模板级4对它从栅格化器3接收的片段执行Z (深度)测试,以看出在这一级,任何片段是否可被丢弃(剔除)。为此,早期Z/模板级4将从栅格化器3分发的片段的(与该片段关联的)深度值与已经渲染的片段的深度值(这些深度值被存储在作为拼块缓冲器10的一部分的深度(Z)缓冲中)进行比较,以确定新的片段是否将被已经渲染的片段遮挡。同时,进行早期模板测试。
[0151]通过片段早期Z和模板测试级4的片段然后被发送给片段着色级6。如本领域已知的,片段着色级6对通过早期Z和模板测试的片段执行适当的片段处理操作,以对片段进行处理以生成适当的渲染的片段数据。
[0152]如本领域已知的,此片段处理可包括任何合适且期望的片段着色处理,例如在片段上执行片段着色器程序、将纹理应用于片段、对片段应用雾化或其它操作等,以生成适当的片段数据。在本发明的实施方式中,片段着色级6是着色器流水线(可编程片段着色器)的形式,但是如果需要,其它布置(例如,另外地或另选地使用固定功能片段着色单元)也将是可能的。
[0153]然后是“后期”片段Z和模板测试级7,其对着色的片段执行(除了别的以外)末端流水线深度测试,以确定渲染的片段在最终图像中是否将实际可见。此深度测试使用存储在拼块缓冲器10中的Z缓冲中的片段位置的Z缓冲值,以通过如本领域已知的,将从片段着色级6分发的片段的(与该片段关联的)深度值与已经渲染的片段的深度值(存储在深度缓冲中)进行比较,来确定新片段的片段数据是否应该替换已经渲染的片段的片段数据。此后期片段深度和模板测试级7还对片段执行任何必要的“后期”α和/或模板测试。
[0154]通过后期片段测试级7的片段然后(如果需要的话)在混合器9中进行与已经存储在拼块缓冲器10中的片段的任何必要的混合操作。在这一级还执行片段所需的任何其它剩余操作,例如抖动等(未示出)。
[0155]最后,(混合的)输出片段数据(值)被写到拼块缓冲器10,可将它们从拼块缓冲器10例如输出至帧缓冲器以用于显示。输出片段的深度值也被适当地写到拼块缓冲器10内的Z缓冲器。(如本领域已知的,拼块缓冲器将存储颜色和深度缓冲,所述颜色和深度缓冲分别为缓冲所表示的各个采样位置(实质上,为正处理的拼块的各个采样位置)存储适当的颜色等值或Z值。)如本领域已知的,这些缓冲存储表示总渲染输出(例如,待显示的图像)的部分(拼块)的片段数据阵列,缓冲中的采样值的各个集合对应于总渲染输出的各个像素(例如,在使用4X多采样的情况下,采样值的各个2 X 2集合可对应于输出像素)。
[0156]在本发明的实施方式中,拼块缓冲器将其片段数据存储为32X32阵列(即,对应于待生成的输出中(例如,待显示的图像中)的采样位置的32X32阵列)。因此,在4x抗混叠下(即,当每像素取4个样本时),拼块缓冲器中的各个32 X 32数据位置阵列可对应于(并且将“自然地”支持)例如待显示的帧的16X16像素“拼块”。
[0157]拼块缓冲器作为位于图形处理流水线(芯片)上(本地)的RAM的部分来提供。
[0158]来自拼块缓冲器10的数据被输入到下采样(多采样分解)写出单元13,从那里被输出(写回)到外部存储器输出缓冲器,例如显示装置(未示出)的帧缓冲器。(显示装置可包括例如包含像素阵列的显示器,例如计算机监视器或打印机。)
[0159]在本发明的实施方式中,下采样和写出单元13将存储在拼块缓冲器10中的片段数据下采样(以固定或可变的方式)至输出缓冲器(装置)的适当分辨率(即,使得生成与输出装置的像素对应的像素数据阵列),以生成输出到输出缓冲器的输出值(像素)。
[0160]一旦渲染输出的拼块已被处理并且其数据被导出到主存储器(例如,主存储器(未示出)中的帧缓冲器)以进行存储,就处理下一拼块,依此类推,直至已处理足够的拼块以生成整个渲染输出(例如,待显示的帧(图像))。然后针对下一渲染输出(例如,帧)重复该处理,依此类推。
[0161]当然,图形处理流水线I的其它布置也将是可能的。
[0162]以上描述了图1所示的图形处理系统的操作的特定特征。现在将描述允许依据本发明的实施方式渲染以模拟图像中的阴影效果的图1所示的图形处理系统的操作的另外的特征。
[0163]为了易于说明,将参照对由实心几何形状和单个矩形面光源组成的帧进行处理来描述本发明的实施方式。然而,当然,其它布置也将是可能的。
[0164]本发明的实施方式进行操作以通过针对输出帧的各个拼块确定在拼块中可从光源在对象上投射阴影的几何形状的集合,然后利用所确定的“阴影投射”几何形状的集合来推导所涉及的拼块的各个采样位置的光源可见性参数,来模拟渲染的图像中的阴影效果。然后在对拼块的输出图像进行渲染(着色)时使用拼块的采样位置的光源可见性参数来调整采样位置的颜色值以模拟采样位置处的阴影效果。
[0165]图3示意性地更详细地示出针对给定拼块的这一操作。
[0166]如图3所示,该处理开始于为可照射所涉及的拼块的光源或各个光源创建包围视锥体(步骤30)。此操作以关于渲染的帧的光源的配置的信息、先前从帧的几何形状推导的画面空间深度缓冲32以及指示帧的相机配置33的信息作为其输入,并且生成拼块的一个或更多个光源包围视锥体34作为其输出。
[0167]在本发明的实施方式中,针对各个光源为拼块生成一个包围视锥体,但是如果需要,其它布置(例如,针对给定光源生成多个包围视锥体)也将是可能的。例如,如果例如帧中存在大的深度不连续和/或当帧的画面空间样本可被划分成不相交的群(这些群本身是局部的),但是彼此远离时,可能期望针对给定光源生成多个包围视锥体。
[0168]为了确定拼块的光源包围视锥体,利用画面空间深度缓冲32中的数据确定拼块的最小深度值和最大深度值。然后使用拼块的最小深度值和最大深度值来构造包含拼块中的所有可见几何形状以及光源本身的包围视锥体。图4示出了这些,并且示出对于帧的给定拼块42针对面光源41的示例性光源包围视锥体40。
[0169]一旦为处理的拼块推导出所有光源包围视锥体,就如图3所示使用那些光源包围视锥体来确定可在拼块中投射阴影的拼块的几何形状的集合(步骤35)。
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1