减少域着色器/镶嵌器调用的方法、装置及设备与流程

文档序号:11412529阅读:267来源:国知局
减少域着色器/镶嵌器调用的方法、装置及设备与流程
减少域着色器/镶嵌器调用的方法、装置及设备

背景技术:
本申请大体上涉及图形处理。在图像处理中实现流水线,在所谓顶点或角上以该流水线执行一系列步骤。可使用图元来表示正被图形渲染的表面。镶嵌(曲面细分)是把要被图形描绘的表面细分为较小的形状的过程。镶嵌将对象的表面分解为可管理的三角形。域着色器计算被细分的输出面片的每一个顶点的性质。域着色器接收外壳着色器输出控制点和镶嵌器级输出域定位,并输出顶点位置。对每一个面片调用一次外壳着色器,且将输入控制点转换为构成面片的输出控制点。进行逐个面片的数项计算来为镶嵌级和域着色器提供数据。术语“域着色器”一般与DirectX流水线相关联。在用于图像处理的包括OpenGL在内的其他应用程序接口中执行基本相同的功能,OpenGL通常引用DirectX域着色器作为镶嵌器估算着色器。在OpenGL中,经常将外壳(hull)着色器称为镶嵌器控制着色器。附图简述图1是根据一个实施例的图形流水线的示意图;图2根据一个实施例在左侧示出外壳着色器输入控制笼且在右侧示出外壳着色器输出控制笼;图3在左侧示出与图2中所示相同的输入控制笼但是示出不同的输出控制笼;图4是根据一个实施例的基于处理器的示意描述;和图5是根据一个实施例的手持式设备的前立面视图。详细描述根据一些实施例,可消除域着色器和/或镶嵌器冗余操作。通过使用角缓存,检查可确定在域着色器和/或镶嵌器内是否已经估算了给定角(其为三角形或四边形角)。如果是的话,则可再次使用之前操作的结果,而不是做出可增加功耗和/或减少速度的不必要的操作。在接下来的讨论中,一般使用DirectX应用程序接口(API)术语。在所有的情况下,可在包括OpenGL在内的其他应用程序接口中找到对应的结构。特定地,对于域着色器的引用适用于OpenGL中的镶嵌器估算着色器,并且对于外壳着色器的引用具有对于OpenGL中的镶嵌器控制着色器的适用性。因此,接下来的讨论可应用于被用于图形处理的任何应用程序接口。控制笼(controlcage)是由美工人员用来生成平滑表面的低分辨率模型。通过提供更高程度的曲面细分(tesselation),可被描绘的图形细节水平更高。然而,更高程度的曲面细分可不利地影响处理速度。面片(patch)是描述用于表面的控制笼的粗糙水平的基本单元。表面可以是可被描述为参数化函数的任何表面。图1所示的图形流水线10可以在作为独立、专用集成电路的图形处理器中实现、或在软件中实现、通过软件实现的通用处理器来实现、或者通过软硬件组合来实现。在一些实施例中,在图1中所示具有直角边缘的元件可实现为硬件,且图1中所示具有圆形边缘的元件可以是软件。例如,可在无线电话、结合了有线或无线通信通信设备的移动手持式计算设备、或任何计算机中实现图形流水线。图形流水线可向显示设备提供图像或视频用于显示。可使用各种技术来处理提供给显示器的图像。输入装配器12使用固定函数操作从存储器读出顶点、形成几何结构、并创建流水线工作项目。自动生成的标识符启用标识符专用的处理。顶点标识符和实例标识符从顶点着色器14开始往后可用。图元标识符从外壳着色器16开始往后可用。控制点标识符在外壳着色器16中可用。顶点着色器执行诸如变换、蒙皮、或照明之类的操作。其可输入一个顶点并输出一个顶点。逐个输出控制点地调用控制点阶段,且由控制点标识符标识每一个控制点阶段。外壳着色器16控制点阶段在每一次调用时输出一个控制点。聚集输出是下一外壳着色器阶段以及域着色器26的共享输入。可采用所有输入和输出控制点的共享读取输入,逐个面片地调用面片常数阶段一次。外壳着色器16输出边缘曲面细分因子和其它面片常数数据。如本文所使用的,图元(primitive)域的边缘曲面细分因子和边缘细节水平(采用每个边缘的间隔数量)可以互换使用。分割代码以使得独立工作可并行完成,且在结束处采用结合步骤。镶嵌器18可在硬件或软件中实现。在某些有益实施例中,镶嵌器可以是软件实现的镶嵌器。镶嵌器18检索经编码的域点或(u,v,w)值。镶嵌器18可从外壳着色器接收定义曲面细分到何种程度的数量。镶嵌器18生成拓扑,诸如点、线、或三角形。镶嵌器18可输出域定位。域着色器24是可编程的级,其使用由镶嵌器18提供的域点的(u,v,w)值来在面片上生成真实三维顶点。域着色器26估算顶点位置和属性且任选地通过查找位移图来移位点。域着色器26可使用来自镶嵌器18的(u,v,w)值来估算顶点的法线和其他属性。可使用位移图来添加面片的高频细节。在一些实施例中,可用软件实现域着色器26。域着色器26可使用标量位移图来移位点,或计算其他顶点属性。在一些情况下,顶点估算可涉及确定位置的双三次多项式(或一般地更高阶的多项式)、计算部分导数或使用辅助切线或双切线控制笼估算切线和双切线并获得它们的交叉乘积、使用诸如线性滤波之类的某种滤波来执行纹理(textured)查找、在标量值位移的情况沿法线来位移点、以及在矢量值位移的情况下沿着可从其他纹理释放(textureease)潜在读取的方向来移位点。图元装配器28组装所得图元并将装配好的图元给流水线的随后级,这些随后级进而提供固定函数目标渲染、混合、深度、以及模板(stencil)操作。在一些实施例中,外壳着色器16连续地输出三个或四个附加32-位标识符打包来形成阵列。在三角形的情况下可使用三个输出,且在四边形的情况下可需要四个输出。该阵列唯一地标识输出面片的输出角。在开始角的域着色器调用前,流水线使用相应的角标识符来询问角高速缓存22。如果流水线没有找到与该角对应的条目,则该角的域着色器进行估算。在该域着色器的估算完成后,该系统高速缓存该角的域着色器的输出并使用相应的角标识符来对其作标签。反之,如果系统找到了特定角标识符的条目,它使用所高速缓存的值而不是估算该角的域着色器调用。因此,对于每一个三角形或四边形面片,对应于三个或四个角可创建高达三个或四个条目。可在绘制调用之间清空角高速缓存。在激进的实现中,当要清空高速缓存时可将控制交给用户,且由此用户可高速缓存所有绘制调用中的值。在其中单个网孔(mesh)具有多个类型的面片,诸如规则和特别的面片,且为了最大化单指令多数据(SIMD)利用,存在对应于每个类型的面片的一个绘制调用的情况下,该情形是有帮助的。在一些实施例中,可在框22中分离地提供边缘高速缓存和角高速缓存。边缘高速缓存可与角高速缓存做一样的事,即对于之前已经估算过的边缘,避免对于域着色器和/或镶嵌器的不必要的调用。然而,具有分离的角和边缘高速缓存可以是有利的,因为角和边缘的清空(flushing)周期是不同的。例如,一个边缘可仅使用两次,因为仅两个相邻面片会有一个共用边缘。然而,在三角形面片的情况下一个角一般可被使用多达六次,且因此对于角和边缘而言清空次数可显著不同,且在一些实施例中清空操作可需要分离的编程。可一次为一个面片循环流水线10。对于每一个面片,估算三个或四个角或顶点且可估算高达四个边缘。因此,在一个实施例中,可从边缘高速缓存询问/角高速缓存询问20向边缘高速缓存/角高速缓存22做出八个并行询问。可为输出控制笼的四个角的每一个询问角高速缓存,且同时为输出控制笼的四个边缘询问边缘高速缓存。如果在边缘高速缓存/角高速缓存22内找到给定边缘或角,在菱形框24处检测到高速缓存命中。在这个情况下,可避免域着色器调用,这样节省周期,且在一些实施例中可能改进速度和/或功耗。如果不存在高速缓存命中,则进行域着色器调用,并且如箭头B所示,看情况向角或边缘高速缓存添加缺失的边缘或角条目。可在高速缓存22内部完成边缘高速缓存/角高速缓存的清空。每次发现边缘已经被再次使用,边缘可被清空。清空条目的一个方式在于仅将条目标记为可供再次使用以维持其他数据。然而,在角高速缓存的情况下,每次角被使用,角将不被清空。而是,可仅在角已经被使用了可能的次数后角才被清空。因此,在具有矩形面片和矩形邻域的情况下,每个角可在被再次使用三次后清空。在三角形领域内的三角形面片情况下,可在再次使用五次后发生清空。通过模拟实际工作负荷可经验性地调整允许再次使用的次数,而不是将其设置为某个固定数字。图2中示出输入面片及其单环形邻域的示例。由角14、16、47、和18来定义该面片。它的环形邻域由围绕给定面片的所有面片构成。因此,在随后的面片14、18、72,在面片14、74、73,在面片14、15、12、74,和在面片14、15、17、和16中可再次使用角14。然后由外壳着色器将在图2左侧示出的输入控制面片转换为在右侧示出的输出控制面片。在图2的情况下,没有生成新的顶点或角。然而在图3中,示出相同的输入面片,但是形成不同的输出面片,其由具有标记为N的新角的四个三角形构成。使用与现有角号不重复的合适的编号方案,新的角可被给予唯一标识符。必须对于构成具有公共角N的输出面片的四个三角形的四次连续生成的每一次使用相同的号。所以最左边的由四个点14、16、47、和18构成的面片被提交四次。它每次被提交时,生成四个三角形之一,但是对于每个三角形的中心角使用相同的标识符。上文所述的关联于域着色器的操作也可对镶嵌器18做出。换言之,在镶嵌器18级之前,可通过询问20来简单地询问高速缓存22,以使得在合适的核内,可绕过镶嵌器18级来节省周期。图4示出系统700的实施例。在各实施例中,系统700可以是媒体系统,虽然系统700不仅限于此上下文。例如,系统700可集成到个人计算机(PC)、膝上型计算机、超膝上型计算机、平板电脑、触摸板、便携式计算机、手持式计算机、掌上电脑、个人数字助理(PDA)、蜂窝电话、蜂窝电话/PDA的组合、电视机、智能设备(例如,智能电话、智能平板电脑或智能电视机)、移动因特网设备(MID)、消息接发设备、数据通信设备等等。在各实施例中,系统700包括耦合到显示器720的平台702。平台702可以从诸如内容服务设备(多个)730、或内容递送设备(多个)740之类的内容设备或其他类似的内容源接收内容。包括一个或多个导航特征的导航控制器750可被用来与例如平台702和/或显示器720交互。在下文中更详细地描述这些组件中的每一个。在各实施例中,平台702可包括芯片组705、处理器710、存储器712、存储714、图形子系统715、应用716和/无线电718的或任何组合。芯片组705可以在处理器710、存储器712、存储714、图形子系统715、应用程序716、和/或无线电718之间提供相互通信。例如,芯片组705可以包括能够提供与存储714的相互通信的存储器适配器(未描绘)。处理器710可以实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容的处理器、多核,或任何其他微处理器或中央处理单元(CPU)。在各实施例中,处理器710可包括双核处理器(多个)、双核移动处理器(多个)等等。存储器712可实现为易失性存储设备,例如但不限于,随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM)。存储设备714可以实现为非易失性存储器设备,诸如,但不仅限于,磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附连存储设备、闪存、电池供电的SDRAM(同步DRAM),和/或网络可访问的存储设备。在各实施例中,存储714可包括用于在例如包括多个硬盘驱动器时提高有价值数字媒体的存储性能改善保护的技术。图形子系统715可以对诸如静止图像或视频之类的图像执行处理以供显示。图形子系统715可以例如是图形处理单元(GPU)或视觉处理单元(VPU)。模拟或数字接口可以被用来可通信地耦合图形子系统715和显示器720。例如,接口可以是高清晰度多媒体接口、显示端口(DisplayPort)、无线HDMI,和/或无线HD兼容技术中的任何一个。图形子系统715可被集成至处理器710或芯片组705中。图形子系统715可以是可通信地耦合到芯片组705的独立卡。此处所描述的图形和/或视频处理技术可以以各种硬件体系结构来实现。例如,图形和/或视频功能可以集成在芯片组内。替代地,可以使用单独的图形和/或视频处理器。作为又一实施例,图形和/或视频功能可由包括多核处理器的通用处理器实现。在又一实施例中,这些功能可实现在消费者电子设备中。无线电718可以包括能够使用各种合适的无线通信技术传输和接收信号的一个或多个无线电。这样的技术可以涉及跨一个或多个无线网络的通信。示例性无线网络包括(但不限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络以及卫星网络。在跨这样的网络的通信中,无线电718可以根据任何版本的一个或多个适用的标准来操作。在各实施例中,显示器720可包括任何电视机型监视器或显示器。显示器720可包括例如计算机显示屏、触摸屏显示器、视频监视器、电视机类设备和/或电视机。显示器720可以是数字和/或模拟的。在各实施例中,显示器720可以是全息显示器。此外,显示器720还可以是可接收视觉投影的透明表面。这样的投影可以传达各种形式的信息、图像,和/或对象。例如,这样的投影可以是用于移动增强的现实(MAR)应用程序的视觉覆盖。在一个或多个软件应用程序716的控制下,平台702可以在显示器720上显示用户界面722。在各实施例中,内容服务设备730可由任何国内、国际和/或独立服务所主控,并因此可经由例如因特网对平台702访问。内容服务设备(多个)730可以耦合到平台702和/或显示器720。平台702和/或内容服务设备(多个)730可以耦合到网络760,以往返于网络760地通信(例如,发送和/或接收)媒体信息。内容递送设备740还可以耦合到平台702和/或显示器720。在各实施例中,内容服务设备(多个)730可包括有线电视机顶盒、个人计算机、网络、电话、互联网启用设备或能够传递数字信息和/或内容的设施,以及能够经由网络760或直接地在内容提供者和平台702和/显示器720之间单向或双向地交换内容的任何其它类似设备。可以理解,内容可以通过网络760单向地和/或双向地传递往返于系统700中的组件中的任何一个和内容提供商。内容的示例可以包括任何媒体信息,包括,例如,视频、音乐、医学和游戏信息等等。内容服务设备(多个)730接收内容,诸如有线电视节目,包括媒体信息、数字信息和/或其他内容。内容提供商的示例可以包括任何有线或卫星电视或电台或因特网内容提供商。给出的例子不旨在对本发明的实施例构成限制。在各实施例中,平台702可从具有一个或多个导航特征的导航控制器750接收控制信号。控制器750的导航特征可以被用来,例如,与用户界面722进行交互。在一些实施例中,导航控制器750可以是定点设备,它可以是允许用户将空间(例如连续的和多维的)数据输入到计算机中的计算机硬件组件(具体地说是人机接口设备)。诸如图形用户界面(GUI)、电视机和监视器之类的许多系统可使用户使用物理手势控制并向计算机或电视机提供数据。控制器750的导航特征的移动可以通过指针、光标、焦点环,或显示在显示器上的其他可视指示器,反映到显示器(例如,显示器720)上。例如,在软件应用716的控制下,位于导航控制器750上的导航特征可以被映射到例如用户界面722上显示的虚拟导航特征。在各实施例中,控制器750可以不是单独组件,而是集成到平...
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1