当前位置: 首页 > 专利查询>微软公司专利>正文

着色器接口制造技术

技术编号:7136992 阅读:284 留言:0更新日期:2012-04-11 18:40
本文描述了处理器对用于着色器的存储器寄存器的分配。对于每一着色器,寄存器基于着色器的复杂度水平来分配。较简单的着色器实例限于较小数量的存储器寄存器。较复杂的着色器实例被分配较多的寄存器。为此,开发员的高级着色(HLSL)语言包括稍后可由复杂或简单版本的着色器替换的着色器的模板类。HLSL被转换成可用于光栅化计算设备上的像素的字节代码。

【技术实现步骤摘要】
【国外来华专利技术】着色器接口背景如今 的图形处理单元(GPU)主存要在计算机屏幕上生成高质量图形所需的所有 计算,从而让计算机设备的中央处理单元(CPU)可用于其他任务。具体地,GPU通过处理多 个被称为“着色器”的程序来在计算机屏幕上再现图形。简言之,着色器是执行用于再现二 维(2D)或三维(3D)图形的操作的专用计算机程序。在现代GPU中,真实的场景是通过用 由着色器控制的各种虚拟材料再现几何形状来生成。这些材料在着色器程序代码中表示, 着色器程序代码处理各种输入(包括纹理地图、光位置和其他数据)来生成视觉结果。通 过使用着色器,开发员可通过结合不同的顶点着色、图元着色和像素着色来实质上控制任 何图形或图形效果。当前用于实时地再现复杂的3D图形场景的方法包括结合自定义逻辑单元支持并 行体系结构的处理器通过将开销分布在多个并行单元上来隐藏等待时间。在提供了对如 点、线段、或三角形等线性图元集合的高级3D描述时,围绕将该集合转换或光栅化为投影 的像素表示的图元光栅化流水线来设计所使用的流水线。在现有3D硬件技术中,被称为 “着色器”的小程序用于定义再现算法的某些阶段的操作,如变换图元的顶点或计算屏幕上 单个像素的颜色。着色器定义要在大型并行执行批中执行的、常常跨在图形处理单元(GPU) 上的许多专用处理器分布的少量工作。着色器的创建通过被设计成可以硬件体系结构可用为目标的高度专用编程语言 来完成,并且等效编译器可处理代码并将其简化为硬件和相关联的设备驱动程序可使用的 指令。开发员使用这种技术以便将再现流水线定制为仅是特定应用程序所需的行为。例 如,如果开发员正在创建执行对非常复杂的主题的非照片般逼真的3D再现的应用程序时, 开发员可将着色器优化成非常简单以便最大化场景的复杂度。相反,如果开发员希望将非 常高保真度的材料属性和光照应用于较不复杂的场景,则开发员可创建高度定制化的着色 器来创建可能非常复杂的非常真实的效果。此外,着色器被编译成设备驱动程序映射其以 供硬件运行的抽象二进制形式。为了说明这点,考虑其中人物暴露于多个光源的游戏场景。光源中的一个可以是 简单地来自夜晚的月亮的环境光。另一个光源可以是从沿着街道的灯柱延伸的。有了来自 月亮的第一光源,可将着色器编写成控制从月亮发射的光。在这种情况下,光是恒定的且只 需要由简单的程序来表示以将光分散到整个场景中。然而,灯柱可能较复杂。有了灯柱,光 可被配置成仅在特定方向上发光;然而,来自灯柱的光可能无法绕过转角。因此,被编写成 控制来自灯柱的光的着色器可能需要比被编写成控制来自月亮的光的着色器更复杂的计 算。在任一场景中,GPU必须根据来自每一着色器的底层计算来光栅化像素。GPU的常见体系结构通过使系统上的资源变得灵活来提供场景复杂度和着色器复 杂度之间的折衷。为了执行,着色器通常需要处理单元、着色器实例的数据、全局资源(例 如,纹理图像)、用于执行计算的中间寄存器库和一组输出寄存器。对于简单着色器—— 意味着着色器需要相对较少的寄存器来计算,可同时运行多得多的着色器,从而导致底层 应用程序或游戏得到较高的帧速率,因为可以并行地完成更多的工作。对于较复杂的着色器一意味着着色器需要较 多寄存器来计算,可并行地执行较复杂的着色器的较少实例, 因为正在使用较多的寄存器。换言之,对寄存器的分配对可并行地处理的着色器的数量具 有直接决定权。因为再现图形所需的时间取决于着色器的并行处理,所以尽可能多地处理 着色器是有益的,且因此对寄存器的分配对于性能而言是关键的。概述提供本概述是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概 念。本概述不旨在标识所要求保护的主题的关键特征或本质特征,也不旨在用于帮助确定 所要求保护的主题的范围。本专利技术的一个方面允许单个着色器具有改变其中的复杂度的替换路径。在这一方 面,按照允许高效的寄存器分配的方式提供了对通过着色器的特定路径的选择。存储器寄 存器基于着色器路径或实例的复杂度水平来分配。在一个实施例中,着色器实例是着色器 开发员所开发的着色器程序或其部分。较简单的着色器路径或实例可限于较少数量的存储 器寄存器。较复杂的着色器路径或实例可被分配较多的寄存器。本专利技术的另一方面涉及被 配置成按此方式分配存储器寄存器的GPU。若干附图的简述下面参考附图详细描述本专利技术,附图中附图说明图1是供在实现本专利技术的一实施例时使用的示例性操作环境的框图;图2是示出根据本专利技术的一实施例的对计算设备的存储器寄存器的分配的示图; 以及图3是根据本专利技术的一实施例的用于基于着色器复杂度来分配寄存器的流程图。详细描述用具体细节呈现此处所描述的主题以满足法定要求。然而,此处的描述并非旨在 限制本专利的范围。相反,可以设想,所要求保护的主题还可结合其它当前或未来技术按照 其它方式来具体化,以包括不同的步骤或类似于本文中所描述的步骤的步骤组合。此外,尽 管术语“框”可在此处用于指示所采用的方法的不同元素,但该术语不应被解释为暗示此处 公开的各个步骤之中或之间的任何特定顺序。此外,在本说明书全文中使用各种技术术语。这些术语的定义可以在H. Newton编 写的Newton' s Telecom Dictionary (《牛顿电信词典》)(2005年第21版)中找到。这 些定义旨在提供对本专利技术中所公开的的想法的更清楚的理解但不旨在限制本专利技术的范围。 这些定义和术语应该在允许任何在上述参考文献中所提供的词的含义的意义上宽泛地和 不受限制地解释。本专利技术可一般地被描述为用于提供动态代码联接来基于着色器的复杂度水平最 优地分配用于着色器的寄存器的一种或多种系统、方法和计算机存储介质。在一个实施例 中,开发员可创建其自己的着色器类并且基于复杂度将寄存器分配给每一着色器。较简单 的着色器被分配较少的寄存器,而复杂的着色器被分配附加的寄存器。如本领域技术人员可以理解的,本专利技术的各实施例可尤其被具体化为在一种或 多种有形计算机可读介质上体现的方法、系统或计算机程序产品。因此,这些实施例可采用 硬件实施例、软件实施例或者组合软件和硬件的实施例的形式。动态代码绑定提供了用于从函数的消费者中抽象函数的实现的一种机制,这种机制通过提供函数调用和实现之间的间接水平来提供。通常,这种间接通过首先查看虚拟函 数表来找到要执行的函数的位置来执行。在执行应用程序时,用函数实现的位置来填充先 前为空的表(“链接”的实际动作),由此允许应用程序实际按需执行函数。在一个实施例 中,提供了减少专用着色器的排列的数量同时仍然提供跨抽象边界的全局优化的子集动态 联接。作为向每一抽象函数提供单个编译的实现的替代,实施例按照这样的方式来生成 编译的代码即编译对着色器的特定实例的每一次使用,就像是代码中内联的一样,并随后 将其存储在按函数类型和调用位置排列的表中。理解以下是重要的此处描述的各实施例 与常规联接的不同之处在于在运行时不使用调用约定。相反,每一次应该调用函数时,发 出函数的版本来匹配调用点的寄存器状态和其他状态。因为为着色器代码中调用函数的每 一位置发出函数的新版本,所以在内联时使用的所有优化都适用,除了该函数代码必须在 功能上与主着色器代码保持分开之外。因为此处描述的各实施例与“真实”联接有所区别, 所本文档来自技高网...

【技术保护点】
一种或多种其上包含有用于将存储器寄存器分配到着色器实例的计算机可执行指令的计算机可读介质,所述方法包括:  声明用于定义着色器模板的一个或多个接口,其中着色器的一个或多个类依赖于所述一个或多个接口(302);  在着色器程序中定义用于内联实际着色器实例的变量(304);以及  用所述实际着色器实例来替换所述着色器程序中的调用(308)。

【技术特征摘要】
【国外来华专利技术】US12/163,7342008年6月27日1.一种或多种其上包含有用于将存储器寄存器分配到着色器实例的计算机可执行指 令的计算机可读介质,所述方法包括声明用于定义着色器模板的一个或多个接口,其中着色器的一个或多个类依赖于所述 一个或多个接口(302);在着色器程序中定义用于内联实际着色器实例的变量(304);以及 用所述实际着色器实例来替换所述着色器程序中的调用(308)。2.如权利要求1所述的介质,其特征在于,还包括为所述着色器实例分配存储器。3.如权利要求2所述的介质,其特征在于,与所述存储相关联并被分配给所述着色器 实例的寄存器的数量取决于所述着色器实例的复杂度水平。4.如权利要求1所述的介质,其特征在于,还包括 将所述着色器实例转换成字节代码;以及基于所述字节代码光栅化计算设备上的像素。5.如权利要求4所述的介质,其特征在于,所述着色器实例由高级着色语言(HLSL)编 译器编译成字节代码。6.如权利要求1所述的介质,其特征在于,所述着色器实例用高级着色语言(HLSL)来 编程。7.如权利要求1所述的介质,其特征在于,所述着色器实例用于确定三维(3D)图形中 的操作。8.如权利要求1所述的介质,其特征在于,还包括 提供编译的着色器字节代码;提供指向应用程序接口的指针; 提供指向像素作色着色器的指针;向图形处理单元(GPU)的设备驱动程序提供所述着色器字节代码;以及 返回对所述着色器实例的引用。9.如权利要求8所述的介质,其特征在于,还包括 引用所述着色器的一个或多个类;将所述一个或多个类存储在存储器位置中;以及 指定指向所述存储器位置的指针。10.如权利要求1所述的介质,其特征在于,还包括将所述着色器实例绑定到由图形处 理单元(GPU)执行的流水线。11.如权利要求10所述的介质,其特征在于,所述流水线同时并行地执行多个着色器 实例。12.如权利要...

【专利技术属性】
技术研发人员:M·V·奥内珀
申请(专利权)人:微软公司
类型:发明
国别省市:US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1