软件光栅化优化的制作方法

文档序号:6593590阅读:283来源:国知局
专利名称:软件光栅化优化的制作方法
软件光栅化优化背景中央处理单元(CPU)是为通用计算设计的并且不包含用于执行如纹理采样、光 栅化和输出混合等固定功能图形运算的专用图形硬件。不像图形硬件,CPU硬件未被设 计成用大量线程来隐藏存储器等待时间。简要概述本发明的各实施例涉及用于优化仿真的固定功能和可编程图形运算的系统、方 法和计算机可读介质。为了利用CPU来实现图形,可使用利用CPU的软件光栅化来仿 真图形硬件。接收包括要渲染的图像或场景的固定功能状态和可编程状态的数据。将该 图像的数据转换成一个或多个表示。对这些表示应用一个或多个优化。实现经优化的表 示以渲染场景。提供本概述是为了介绍将在以下详细描述中进一步描述的一些概念。本概述不 旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护 的主题的范围。附图简述以下参考附图详细描述各实施例,附图中

图1是适用于实现本发明的各实施例的示例性计算环境的框图;图2是适用于实现本发明的各实施例的示例性计算系统体系结构的框图;图3是示出根据本发明的一实施例的优化软件光栅化的示例性图示的流程图;图4是示出根据本发明的一实施例的示例性优化组件的框图;以及图5是根据本发明的一实施例的对软件光栅化应用优化的方法的流程图。详细描述此处用细节来描述本发明的各实施例的主题以满足法定要求。然而,该描述本 身并非旨在限制本专利的范围。相反,发明人设想所要求保护的主题还可结合其他当前 或未来技术按照其他方式来具体化,以包括不同的步骤或类似于本文中所描述的步骤的 步骤组合。此外,尽管术语“步骤”和/或“框”可在此处用于指示所采用的方法的 不同元素,但除非而且仅当明确描述了各个步骤的顺序时,该术语不应被解释为意味着 此处公开的各个步骤之中或之间的任何特定顺序。本发明的各实施例提供用于优化仿真的固定功能和可编程图形的系统、方法和 计算机可读介质。接收包括要渲染的一个或多个图像的固定功能和可编程状态的数据。 将该一个或多个图像的数据转换成一个或多个表示。对这些表示应用一个或多个优化。 实现经优化的表示以渲染该一个或多个图像。在另一方面,提供了一种用于优化仿真的固定功能和可编程图形的计算机化系 统。该系统包括接收组件和转换组件,该接收组件被配置成接收包括要渲染的一个或多 个图形的固定功能和可编程状态的数据,该转换组件被配置成将数据转换成一个或多个 表示。该系统还包括优化组件和执行组件,该优化组件被配置成对一个或多个表示应用 一个或多个优化,该执行组件被配置成执行该一个或多个经优化的表示以渲染一个或多个图像。在又一方面,提供了一种或多种其上包含有计算机可执行指令的计算机可读介 质,这些指令在被执行时执行一种优化仿真的固定功能和可编程图形的方法。接收要渲 染的一个或多个图像的数据。将要渲染的一个或多个图像的数据转换成由图形流水线的 固定功能和可编程状态的高级命令表示的数据并行程序。对这些高级命令应用一个或多 个优化。实现经优化的高级命令以渲染一个或多个图像。显示该一个或多个图像。概括地参考附图,并首先具体参考图1,示出了用于实现本发明的各实施例的示 例性操作环境,并将其概括地指定为计算设备100。计算设备100只是合适的计算环境 的一个示例,并且不旨在对本发明的使用范围或功能提出任何限制。也不应将计算环境 100解释为对所示出的任一模块/模块或其组合有任何依赖性或要求。各实施例可以在计算机代码或机器可使用指令的一般上下文中描述,机器可使 用指令包括由计算机或诸如个人数据助理或其他手持式设备等其他机器执行的诸如程序 模块等的计算机可执行指令。一般而言,包括例程、程序、对象、模块、数据结构等的 程序模块指的是执行特定任务或实现特定抽象数据类型的代码。各实施例可以在各种系 统配置中实施,这些系统配置包括手持式设备、消费电子产品、通用计算机、专用计算 设备等等。各实施例也可以在其中任务由通过通信网络链接的远程处理设备执行的分布 式计算环境中实施。继续参考图1,计算设备100包括直接或间接耦合以下设备的总线110 存储器 112、一个或多个处理器114、一个或多个呈现模块116、输入/输出(I/O)端口 118、I/ O模块120、和说明性电源122。总线110可以是一条或多条总线(诸如地址总线、数据 总线、或其组合)。尽管为了清楚起见图1的各框用线条示出,但是在实际上,各模块的 轮廓并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。例如, 可以将诸如显示设备等的呈现模块认为是I/O模块。而且,处理器具有存储器。发明 人此点认识到,这是本领域的特性,并且重申,图1的图示只是例示可结合一个或多个 实施例来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、
“手持式设备”等分类之间没有区别,它们全部都被认为是在图1的范围之内的并且被称 为“计算机”或“计算设备”。计算设备100通常包括各种计算机可读介质。作为示例而非限制,计算机可读 介质可以包括随机存取存储器(RAM);只读存储器(ROM);电可擦可编程序只读存储 器(EEPROM);闪存或其他存储技术;CDROM、数字多功能盘(DVD)或其他光学或全 息介质;磁带盒、磁带、磁盘存储或其他磁存储设备,载波或可以用来编码所需要的信 息并可以被计算设备100访问的任何其他介质。存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器 可以是可移动的,不可移动的,或两者的组合。示例性硬件设备包括固态存储器、硬盘 驱动器、光盘驱动器等。计算设备100包括从诸如存储器112或I/O模块120等各种实 体读取数据的一个或多个处理器。呈现模块116向用户或其他设备呈现数据指示。示例 性呈现模块包括显示设备,扬声器,打印模块,振动模块等。I/O端口 118允许计算设 备100在逻辑上耦合至包括I/O模块120在内的其他设备,其中某些设备可以是内置的。 说明性模块包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、打印机、无线设食寸寸。如上所述,本发明的各实施例涉及用于优化软件光栅化的计算系统。参考图2, 示出了例示根据本发明的一实施例的、被配置成优化软件光栅化的示例性计算系统体系 结构200的框图。本领域普通技术人员将理解并认识到,图2所示的计算系统体系结构 200仅仅是一个合适的计算系统的示例,并且不旨在对本发明的使用范围或功能提出任何 限制。也不应该 将计算系统体系结构200解释为对任何单个模块/组件或各模块/组件 的组合有任何依赖性或要求。计算系统包括计算设备206和显示器216。计算设备206包括图像模块208、 光栅化模块210、API模块212和操作系统214。计算设备206可以是任何类型的计算设 备,诸如例如以上参考图1所描述的计算设备100。仅作为示例而非限制,计算设备206 可以是个人计算机、台式计算机、膝上型计算机、手持式设备、移动手机、消费电子设 备等。然而,应当注意,各实施例不限于在这些计算设备上实现,而是可在处于其各实 施例的范围内的各种不同类型的计算设备的任一种上实现。图像模块208传送要渲染的图像或场景的数据。图像模块208可以是计算机游 戏程序或要对其渲染图像或场景的其他程序。要渲染的图像或场景可包括但不限于视频 游戏图像、视频剪辑、电影图像和静态屏幕图像。应用程序编程接口(API)模块212是 操作系统214为支持诸如图像模块208和软件光栅化模块210等计算机程序作出的请求而 提供的接口。设备206与显示设备216通信。软件光栅化模块210仿真实现以下更详细地描述的光栅化流水线的硬件。软件 光栅化模块利用软件光栅化来仿真图形硬件。软件光栅化使用中央处理单元(CPU)来光 栅化多边形,而不是让图形卡上的图形处理单元(GPU)来执行该功能。如图2所示,软 件光栅化模块210包括接收组件220、转换组件230、优化组件240和执行组件250。在 某些实施例中,所示组件中的一个或多个可被实现为独立应用程序。在其它实施例中, 所示模块中的一个或多个可以直接集成到服务器和/或终端用户设备206的操作系统中。 本领域的普通技术人员可以理解,图2所示的组件和模块在性质和数量上是示例性的, 并且不应被解释为是限制性的。可以采用任何数量的组件来实现其各实施例的范围内的 所需功能。此外,各模块可位于任何数量的服务器或计算机上。接收组件210被配置成从图像模块208接收要渲染的图像或场景的数据。要渲 染的图像或场景可包括但不限于视频游戏图像、视频剪辑、电影图像和静态屏幕图像。转换组件230被配置成仿真图形硬件并转换接收到的渲染场景或图像。接收 到的要渲染的图像或场景的数据包括被转换成数据并行程序的固定功能和可编程图形状 态。数据并行程序表示发生的图形运算并组合固定功能和可编程图形状态。在一个实施 例中,图形流水线的固定功能和可编程状态被转换成以诸如中间表示(IR)等高级命令表 示的四(4)个数据并行程序。这四个数据并行程序是实现对用于渲染场景的图形流水线 的顶点处理、几何处理和像素处理的顶点程序、几何程序、镶嵌程序和像素程序。镶嵌 程序执行图形流水线的镶嵌阶段。IR可表达多个表示或运算。通过将固定功能和可编程 图形流水线状态组合到数据并行程序中,可使用公共代码库来生成中央处理单元(CPU) 而不是图形卡的图形处理单元(GPU)上的对固定功能和可编程图形运算两者的高效实 现。虽然被讨论为利用由IR表示的数据并行程序,但可以理解,固定功能和可编程功能到需要完成的运算或命令的转换可以按各种方式中的任一种来实现。一旦渲染场景被转换成要由转换组件230执行的运算,图2的优化组件240就执 行对跨固定功能和可编程阶段的运算(在一个实施例中是IR)的优化。优化组件执行若 干优化。这些优化可以与诸如C++编译器等编译器类似地执行。由转换组件230转换 的每一个数据并行程序都组合固定功能和可编程流水线状态,由此对通过软件光栅化仿 真的固定功能和可编程图形运算两者应用优化。所应用的优化允许软件光栅化模块在运 行时更高效地渲染进行渲染的场景。此外,因为优化是在IR级完成的,所以这些优化可 使诸如CPU等所有机器受益,而不管机器如何实现高级IR。参考图2和3,示出了例示包括固定功能和可编程图形状态的数据300到多个运 算的转换340的图示。图2的接收组件210接收包括固定功能和可编程图形状态的数据 300。数据300由图3中的示例性图形流水线来表示。图形流水线包括用于将数据转换 成图像以便显示在显示设备上的各阶段。图形流水线包括输入组装器305、顶点着色器 310、几何着色器315、光栅化器320、像素着色器325、纹理采样器330、以及输出合并 器335。可以理解,图3所描绘的图形流水线是示例性的,并且可添加附加组件或移除组 件。图3的图形流水线300包括固定功能和可编程阶段。固定功能阶段可包括但不限于 输入组装器305、光栅化器320、纹理采样器330和输出合并器335。可编程图形状态包 括顶点着色器310、几何着色器315和像素着色器325。输入组装器305使用固定功能运算来从存储器中读取顶点,形成几何结构并创 建流水线工作项。顶点着色器310是用于通过对对象的顶点数据执行数学运算来在3D 环境中向对象添加特殊效果的图形处理功能。几何着色器315从被发送到图形流水线的 开头的那些图元中生成诸如点、线和三角形等新图元。光栅化器320执行剪辑、透视划 分、视口或裁剪选择和实现。像素着色器325用于操纵像素色彩,通常对图像应用效 果,例如真实、块形映射、阴影和膨胀效果。在每一个像素的基础上计算效果的是图形 功能。纹理采样器330由顶点着色器310、几何着色器315和像素着色器325用来从存储 器中读取数据。纹理采样器330可执行纹理过滤运算,诸如钳夹(clamp)或包裹等纹理寻 址模式,在不同的读格式之间转换,并基于细节水平(LOD)值来选择小中见大(multum inparvo, MIP)的程度。输出合并器335是固定功能并执行混合、深度和型板运算。 数据300由图2的转换组件230转换成运算或表示。一旦转换,就由图2的优 化组件240来优化350运算或表示。示例性优化在下文中更详细地讨论。如可以在图3 中看到,在应用优化时,某些运算不再必要,诸如运算360。一旦应用了优化,就由图2 的执行组件250来实现其余运算。参考图4,优化组件240包括内插子组件410、LOD子组件420、早Z子组件 430、范围分析子组件440和代数求逆子组件450。内插子组件410专用于优化以禁用透 视校正属性内插。顶点由4个分量(X、Y、Z和W)构成。X、Y和Z分量表示空间中 的元素位置,而W分量用于示出正确的透视。通常生成程序的两个版本。一个版本不 包含透视校正属性内插。在绘图时间,光栅化器然后可检测何时所有W值相同并且透视 校正版本是不必要的。不具有透视校正属性内插的程序版本消除解决正确的mip图水平 所需的若干运算。如果所有分量的所有W值都相同,则透视校正计算是不必要的。透 视划分是通过将内插纹理坐标除以每一个像素的W分量来变换诸如纹理坐标等属性以便匹配几何结构的透视的昂贵运算。内插子组件410优化当在没有透视的情况下渲染图元时禁用透视校正属性内插。例如,3维平整对象比该对象成一角度时易于计算。内插子组件410优化检测3维 对象是否是平整的,因此划分是不必要的。这允许更快的属性内插并消除计算屏幕空间 导数以便在纹理化期间计算mip图细节水平(LOD)的需求,并且消除对平整3维对象执 行划分的需求。LOD子组件420优化以检测恒定的细节水平(LOD)以便更快地编码。在程序 的每一个步骤,针对IR中的每一个变量跟踪该变量是否是恒定的。在使用恒定变量来确 定LOD时,优化器能够对逻辑进行硬编码以索引正确的mip图水平。在图形中,图像可 以按许多细节水平来存储并且在运行时选择所需细节水平。例如,较远的对象可能需要 较低的细节水平,而较近对象需要较高的细节水平。LOD子组件420确定距离是否是恒 定的,并且如果是,则LOD对于所有像素都是恒定的并且对于所有像素只需计算一次。 该优化允许更快的纹理采样,以使得不为具有恒定距离的图像计算多个LOD。早Z子组件430是确保相对于程序中的其他指令尽可能早地执行深度测试的指令 调度优化。早Z子组件可重新安排IR指令以便在不违反依赖性的情况下尽可能早地进行 Z计算。如果需要,则还可以在流水线中将计算Z值的指令移得更高。然后可对照深度 缓冲器来检查Z值,并且程序可以在深度测试失败的情况下较早地终止。例如,在绘制 对象时,如果该对象完全位于另一对象之后,则可跳过针对该对象的大量计算。早Z子 组件430查看每一个运算,确定该运算是否与隐藏对象相关,并且如果是,则在程序中 将该运算移至更早。这启用跳过对被遮挡像素的不必要处理的遮挡挑选优化。范围分析子组件440是计算每一个变量都能够在程序执行的每一个步骤保留的 可能的值集的范围分析优化。将流水线的固定功能阶段映射到IR可涉及从只能表达特定 范围的格式中读取,对各个值执行运算,并且将这些值写回到具有相同范围的格式。因 为该优化组件对跨越流水线的固定功能和可编程部分的程序进行运算,所以该优化组件 可检测何时值不改变并且不需要昂贵的范围钳夹。在读取具有范围O到1的纹理并且然 后将其写入到具有范围O到1的渲染目标时遇到该优化的示例。在该示例中,可移除昂 贵的范围检查运算并允许更快的执行。代数求逆子组件450是移除不必要的数据类型转换指令的优化。代数求逆子组 件450检测等价的数学运算并且用较不昂贵的运算代入昂贵的运算。这在整个程序中是 可能的。示例性代数求逆优化以下在表1中示出。表 权利要求
1.一种用于优化仿真的固定功能和可编程图形的计算机实现的方法,所述方法包括接收包括要渲染的一个或多个图像的固定功能和可编程状态的数据(505); 将所述一个或多个图像的数据转换成一个或多个表示(510); 对所述表示应用一个或多个优化(515);以及 实现经优化的表示以渲染所述一个或多个图像(520)。
2.如权利要求1所述的方法,其特征在于,还包括 显示所渲染的图像。
3.如权利要求2所述的方法,其特征在于,所述数据被转换成数据并行程序。
4.如权利要求1所述的方法,其特征在于,所述一个或多个图像到表示的转换包括软 件光栅化。
5.如权利要求4所述的方法,其特征在于,所述转换由中央处理单元执行。
6.如权利要求4所述的方法,其特征在于,所述转换由计算设备执行。
7.如权利要求1所述的方法,其特征在于,所述一个或多个优化包括当在没有透视的 情况下渲染图元时禁用透视校正属性内插。
8.如权利要求1所述的方法,其特征在于,所述一个或多个优化包括重新安排运算以 使得Z计算在程序中较早地进行。
9.如权利要求1所述的方法,其特征在于,所述一个或多个优化包括移除不必要的范 围检查运算。
10.如权利要求7所述的方法,其特征在于,所述一个或多个优化包括移除不必要的 数据类型转换指令。
11.如权利要求10所述的方法,其特征在于,所述一个或多个优化包括确定在距离恒 定的情况下细节水平对于所有像素恒定。
12.如权利要求2所述的方法,其特征在于,即时编译器实现所述数据并行程序以渲 染所述一个或多个图像。
13.如权利要求2所述的方法,其特征在于,解释器对像素块解释一个或多个数据并 行程序以渲染所述一个或多个图像。
14.一种用于优化仿真的固定功能和可编程图形的计算机化系统,所述系统包括 被配置成接收包括要渲染的一个或多个图像的固定功能和可编程状态的数据的接收组件(220);被配置成将所述数据转换成一个或多个表示的转换组件(230); 被配置成对所述一个或多个表示应用一个或多个优化的优化组件(240);以及 被配置成执行一个或多个经优化的表示以渲染所述一个或多个图像的执行组件 (250)。
15.如权利要求14所述的系统,其特征在于,还包括 用于在显示设备上显示所渲染的图像的显示组件。
16.如权利要求14所述的系统,其特征在于,所述转换由中央处理单元执行。
17.如权利要求14所述的系统,其特征在于,所述转换由计算设备执行。
18.如权利要求14所述的系统,其特征在于,即时编译器实现所述经优化的表示以渲染所述一个或多个图像。
19.如权利要求14所述的系统,其特征在于,解释器对像素块解释一个或多个经优化 的表示以渲染所述一个或多个图像。
20.一种或多种其上包含计算机可执行指令的计算机可读介质,所述指令在被执行时 执行一种用于优化仿真的固定功能和可编程图形的方法,所述方法包括接收包括要渲染的一个或多个图像的固定功能和可编程状态的数据(505); 将所述要渲染的一个或多个图形的数据转换成由高级命令表示的数据并行程序 (510);对所述高级命令应用一个或多个优化(515); 实现经优化的高级命令以渲染所述一个或多个图像(520);以及 显示所渲染的一个或多个图像(520)。
全文摘要
提供了用于优化仿真的固定功能和可编程图形运算的系统、方法和计算机可读介质。接收包括要渲染的图像或场景的固定功能和可编程状态的数据。将该图像的数据转换成运算。对这些运算应用一个或多个优化。实现经优化的运算以渲染场景。
文档编号G06T1/00GK102027446SQ200980117830
公开日2011年4月20日 申请日期2009年4月15日 优先权日2008年5月15日
发明者A·格莱斯特, B·佩尔顿, D·塔夫特, M·利亚普诺夫, S·希尔思林格 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1