CN1469240A - 在图形系统内提供中间目标的系统和方法 - Google Patents

在图形系统内提供中间目标的系统和方法 Download PDF

Info

Publication number
CN1469240A
CN1469240A CNA031217990A CN03121799A CN1469240A CN 1469240 A CN1469240 A CN 1469240A CN A031217990 A CNA031217990 A CN A031217990A CN 03121799 A CN03121799 A CN 03121799A CN 1469240 A CN1469240 A CN 1469240A
Authority
CN
China
Prior art keywords
data
intermediate storage
storage target
computer
special function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA031217990A
Other languages
English (en)
Other versions
CN100507832C (zh
Inventor
������B��������
米歇尔·B·伯兰德
N
查尔斯·N·伯伊德
R
安纳塔·R·坎切拉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1469240A publication Critical patent/CN1469240A/zh
Application granted granted Critical
Publication of CN100507832C publication Critical patent/CN100507832C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Processing (AREA)
  • Digital Computer Display Output (AREA)

Abstract

本发明提供了在计算机系统内应用与计算机图形有关的中间目标的系统和方法。在各个实施例中,在视频存储器内配置了一些中间存储缓冲器,用来使来自图形API的一些串行化程序可以支持超过单个程序的程序描影器的指令限制的算法。这些中间缓冲器还允许为其他用途在程序之间共享数据,而且是可自动访问的。缓冲器的大小,即存储在中间目标内的数据量可以按图形数据的分辨率改变而可变地设定。在这方面,单个程序产生可以然后按需要由同一个程序的扩展和/或许多其他程序使用和再次使用多次的中间数据,从而使描影程序可以有相当大的灵活性和复杂性,同时保持现代图形芯片的速度。

Description

在图形系统内提供中间目标的系统和方法
版权和许可
本专利文件的公开部分可能含有版权受保护的内容。版权拥有者并不反对任何人传真复制如在美国专利商标局的专利文档或记录内出现的这个专利文件或专利公开内容,但在其它方面却保留全部版权。以下标志应适用于本文件:Copyright2002,Microsoft Corp。
技术领域
本发明涉及提供与计算机图形有关的中间存储目标的系统和方法。具体地说,本发明与提供配合诸如像素和顶点描影器(shader)之类的程序描影器(procedural shader)使用的中间存储目标(intermediate memory target)有关。
背景技术
再现(rendering)和显示三维(3-D)图形通常包括许多运算和计算。例如,为了再现一个3-D对象,要形成定义这个需再现的对象的一组坐标点或顶点。可以将一些顶点连接起来形成一些定义需再现和显示的对象的表面的多边形。一旦形成了这些定义一个对象的顶点,可以将这些顶点从一个对象或模型参照系变换到一个通用参照系,最后变换到可以在一个诸如监视器之类的平面显示设备上显示的一些2-D坐标。在变换过程中,可以因为顶点超出可视区域范围,用各种照明方案和光源照明、着色,或者以其它方式变换、描影等,而对所述顶点进行旋转、缩放、剔除或截去。在再现和显示一个3-D对象中所涉及的这些过程可以是计算密集的,可能涉及大量的顶点。
传统上,如图1所示,一些复杂的3-D对象或者它们的一些部分可以用一些表示这些3-D对象的近似几何形状的相邻三角形的集体(“格网”(mesh))表示,或者用在二维(2-D)表面空间内的几何图(geometrymap)或表面表示。格网可以通过这些三角形的顶点的位置确定。一个或多个纹理图(texture map)可以映射到该表面上,按照纹理映射过程生成一个纹理表面(textured surface)。在这方面,在一个表面上打了纹理的信号可以是很普通的,并且可以确定任何种类的中间结果,这中间结果可以输入诸如描影器程序(shader procedure)之类的变换机制,以产生最终颜色和/或与点样本关联的其他值。
在纹理采样(texture sampling)后,在用显示设备的像元(像素)再现图像或者将数据输出到其它地方用于某些非显示的用途之前,可以按需要对纹理表面施行诸如描影算法(shading algorithm)和技术之类的附加变换。计算机图形中的图像通常表示为一个2-D离散值(灰度)阵列或三个2-D离散值(颜色)阵列。采用标准的(x,y,z)直角坐标系,一个表面可以被确定为一个格网(例如,三角网),每个格网顶点的坐标为(x,y,z),或者被确定为一个几何图,在其中(x,y,z)坐标确定为一个2D(u,v)坐标系上的直线图像(rectilinear image),有时称为表面参数化域(surface parameterization domain)。纹理图也可以用(u,v)坐标系规定。
在信号已依附于表面(包括它的几何形状)的表面参数化域内,点样本(point sample)可以根据纹理格网或几何图产生。这些样点可以用各种计算予以变换和描影。在结束这变换和描影处理时,一个点样本包括:(a)位置信息,即指出这个点映射到图像平面内哪里的图像地址,以及(b)纹理色或灰度,指出在由位置信息指出的位置上的样本的颜色的信息。还可以包括诸如提供隐面消除(hidden surfaceelimination)的点样深度信息、加权或任何其他有关点样的有用信息之类的其他数据。经变换的纹理表面在由显示器在2-D像素图像空间(x,y)再现前先装入一个帧缓冲器内。此时,在黑白显示设备的情况下,在帧缓冲器内按照表面的某个函数为2-D图像空间内每个(x,y)像素位置指定一个灰度值。在典型的颜色显示设备的情况下,为2-D图像空间内的每个(x,y)像素位置指定红、绿和蓝(RGB)值。应指出的是,也有RGB之外的各种颜色格式。虽然有体系结构的变动,从开始到结束,但以上所说明的载运大量的图形顶点和像素数据的载体通称为图形流水线(graphics pipeline)。
计算机图形产业和图形流水线近几年有极大增长。例如,当前的各代电子游戏正在以日益提高的更为现实的方式转向三维(3-D)图形。同时,玩的速度越来越快。这加剧了对在比较经济的系统内快速再现3-D图形的真正需要。
早在七十年代,一些3-D再现系统就能按照一些参数描述对象的“外貌(appearance)”。这些和以后的一些方法根据对象表面的位置和朝向以及对它照明的光源提供了对所感觉的对象颜色的参数化。这样一来,就可从中计算出对象的外貌。参数还包括诸如对象的材料的散射色、定向反射系数、反射色、反射率和透明度之类的一些值。这样的一些参数通称为对象的描影参数(shading parameter)。
早期的系统只能为描影参数赋单个值,因此它们在对象的整个表面上保持恒定和一致。稍后的系统允许使用在对象的不同部分可以具有不同的值的不一致参数(例如透明度)。已经有两种突出的与众不同的技术用来描述这些不一致参数在对象表面各个部分上所取的值:程序描影(procedural shading)和纹理映射(texture mapping)。纹理映射是基于像素和与分辨率有关的。
程序描影通过在描影参数空间内定义1-D、2-D或3-D空间内的一个函数(通常称为程序描影器(procedural shader))描述一个实体在这个空间内任一点的外貌。对象“沉浸”在原来的1-D、2-D或3-D空间内,描影参数在对象的表面的一个给定点处的值定义为程序描影函数在这一点上的结果。例如,已经开发了一些近似表示木材、大理石或其他天然材料的外貌的程序描影器,这在文献中可以找到。
在一个计算机系统内再现图形数据是资源密集过程的集体。描影过程(process of shading),即对专用图形数据结构集合执行复杂的算法,用来确定与图形数据结构关联一些图元的诸如颜色之类的值的过程,就是这种计算密集的复杂过程的一个例子。通常,描影过程已经在某种程度上规范化了。通过将设计成能与描影器工作的源代码传入一个应用程序,描影器就成为这个应用可以创建/应用的对象,以便高效地绘出复杂的视频图形。这种描影器的例子有顶点描影器(vertexshader)和像素描影器(pixel shader)。
在顶点和像素描影器当前以专用硬件芯片实现之前,它们曾经完全或主要作为软件代码实现,并且有时用硬件及用于控制该硬件的软件的组合来实现。这些实现方式经常含有一个CPU或者用系统的CPU模拟其存在。例如,这些硬件实现直接将一个CPU芯片集成入它们的结构,以执行描影任务所需的处理功能。虽然由于标准处理芯片提供的功能范围,CPU为描影过程增添了很大的灵活性,但加入CPU也增加了专用描影过程的开销。然而,没有今天的硬件技术,也就没有了选择余地。
不过,今天硬件技术的进步提高了预先将以软件实现的功能移入专用硬件的能力。因此,今天的像素和顶点描影器是用专用和可编程硬件芯片实现的。今天的顶点和像素描影器芯片的硬件设计是高度专业化的,因此与过去的CPU硬件实现不同。
业已开发出一些专用3-D图形API,这些API暴露了今天的顶点和像素描影器的专用功能。这样,一个开发者能将一些指令下载到一个顶点描影器,实际对这个顶点描影器进行编程,以执行专用动作。例如,一些API暴露了与在顶点描影器内增加的寄存器关联的功能,例如相对于在寄存器级的浮点数的专用顶点描影功能。此外,可以实现一个使超高速顶点描影器只返回浮点数的小数部分的指令集。各种功能可以通过下载这些指令获得,假定不超过顶点描影器的指令数限制。
同样,对于像素描影器来说,专用像素描影功能可以通过将指令下载到像素描影器获得。例如,暴露在像素描影器内提供线性内插机制的功能。此外,还向开发人员暴露了许多与为像素描影器编制的指令集有关的不同的操作改进器(modifier)的功能。例如,求反(negating)、重映射(remapping)、偏置(biasing)和其他功能对于许多需要高效像素描影的图形应用是极其有益的,然而在它们作为单指令的部分执行时,它们最好表示为对这指令的改进器。总之,以上功能对于大量的图形操作是有益的,从便于开发和改进性能来看,将这些功能并入已经专用化的像素和顶点描影器可以增添惊人的价值。各种功能因此能通过下载这些指令获得,假定不超过像素描影器的指令数限制。
2001年3月6日递交的共同转让的共同待决美国专利申请No.09/801,079提供了用来与具有本地寄存器的顶点描影器和像素描影器的硬件实现通信的这种典型的三维(3-D)API。对于顶点描影器,揭示了可以利用片内(on-chip)寄存器检索的API通信,也提供了片内在寄存器级实现的、输出输入的小数部分的专用功能的API通信。对于像素描影器,提供了片内在寄存器级实现的执行线性内插功能的API通信,也提供了也是片内在寄存器级实现的执行包括求反、求补、重映射、偏置、缩放和饱和的修改功能的API通信。有益的是,API通信为开发者暴露了一些非常有益的片内图形算法元,而对开发者隐藏了顶点描影器和像素描影器芯片的操作细节。
2001年3月1日递交的共同转让的共同待决美国专利申请No.09,796,577也揭示了一些3-D API,这些API通过一个在概念上是在软件接口下或软件接口内的机制向开发人员暴露一些供程序描影器使用的独特算法元,使开发者可以将指令下载到程序描影器和GPU。例如,这样一个3-D API使一些操作可以下载给一个3-D芯片,以改善工作特性。这些3-D API通过包括灵活的片上处理和有限的片上存储器,利用已经开始处理这样的可编程功能的最新3-D图形芯片,以从主处理机的处理中除去定制的图形码和将这样的可编程和可下载的功能放在图形芯片内。这样的API使得开发者所写的编程或算法元可以下载给芯片,从而将芯片编程,以便以改善的性能级别执行那些算法。与开发者可以写一个可下载给3-D芯片的例程的这种情况有关,结合3-DAPI提供的还有一些算法元的集合(不是由开发者写的但是已经为开发者编程的例程)。类似,开发者可以将这些预先封装的API算法下载给一个可编程3-D芯片,以改善性能。这种下载3-D算法元的能力提供了得到改善的性能,使控制和开发更为容易。
因此,在现代的图形硬件内引进按顶点和按像素的可编程操作已经越来越普遍。这种普遍的可编程性可以以提高的性能指标允许复杂的创造性算法的巨大潜力。然而,对于所能达到的有一些限制。通常,目前在顶点和像素描影器采用的再现流水线,如图2A所示,几何数据流SGD输入给顶点描影器200,执行一些顶点操作,此后由光栅化器(rasterizer)将几何数据光栅化成像素数据,输出像素数据流SPD1。顶点描影器200可以接收将顶点描影器200编程成执行专用功能的指令,但是对于顶点描影器指令的长度和复杂性有限制。类似,像素描影器220可以按需要对数据执行一个或多个变换,输出像素数据流SPD2。像素描影器220也可以接收将像素描影器220编程成执行专用功能的指令,但是对这些像素描影器指令的长度和复杂性有限制。因此,一个对今天的API和相应硬件的限制是大多数硬件具有非常有限的指令数。这个有限的指令数妨碍了开发者用API实现一些最复杂的算法。此外,当前的可编程硬件具有非常有限的在一些独立的程序之间交换数据的机制,即一个第一像素描影器程序不能再用一个第二像素描影器程序输出的数据。
此外,如图2A所示,通常将一个像素看作在图像空间的2-D网格内的一个点,具有与之关联的灰度值或色值;然而,现代图形将像素引擎流水线内的一个像素看作与任何2-D阵列内的一个点关联的任何集合数据,无论它是否与一个所显示的图像有关。例如,虽然图2A例示了一个具有一个红存储段(bucket)、一个绿存储段和一个蓝存储段的像素,但不一定是这种情况,任何多个存储段和相应值都可以是一个像素。因此,在产生一个2-D阵列的像素数据中有相当大的灵活性,它可以包括照明效果、加权、z缓冲器信息等的一些参数值。如2C图所示,今天的图形流水线的一个问题与可以输出独立的像素集的灵活性有关。虽然像素引擎230能输出任何种类的像素数据,即作为输出的成流像素P1、P2、P3、P4至PN可以在存储段的种类和数量(定义像素P1、P2、P3、P4至PN)方面呈现相当大的灵活性,但P1、P2、P3、P4至PN都必须具有同样的存储段。因此,如果P1包括R、G、B数据,P2、P3、P4至PN就也是如此,从而没有定义不同的输出像素数据集(其中有一些可以用于照明而有一些则仅能用于颜色)的灵活性。此外,目前,再现目标的分辨率是按照光栅化处理预先确定的,即再现过程驱动可以放入一个再现目标(render target)内的样点量,因此所希望的是可变地控制再现目标的分辨率,即可以与再现目标结合存储的样本量。
因此所希望的是实现克服与当前的图形流水线结构、API和硬件有关的由于指令数限制、输出形式限制和在程序之间缺乏数据共享而存在的现有可编程性的缺点的系统和方法。
发明内容
考虑到上述这些情况,本发明提供了在计算机系统内提供与计算机图形有关的中间目标(intermediate target)的系统和方法。在各个实施例中,本发明提供和应用在视频存储器内的一些中间存储缓冲器(intermediate memory buffer),使来自图形API的一些串行化程序可以支持一些超过单个程序的程序描影器的指令限制的算法。这些中间缓冲器还允许为其他目的在程序之间共享数据,而且是可自动访问的。缓冲器的大小,即存储在中间目标内的数据量可以按图形数据的分辨率的改变而可变地设定。在这方面,单个程序产生中间数据,这些中间数据随后可以按需要由同一个程序的扩展和/或许多其他程序使用和再使用,从而使描影程序可以有相当大的灵活性和复杂性,同时保持现代图形芯片的速度。
本发明的其他特征和实施例将在下面说明。
附图说明
下面将结合附图进一步说明提供本发明的中间存储目标(intermediate memory target)的系统和方法,在这些附图中:
图1提供了一个计算机图形系统内图形流水线的过程的概况;
图2A至2C例示了现有技术的图形流水线的各种限制和问题;
图3A为表示一个可以实现本发明的具有各种计算设备的典型网络环境的方框图;
图3B为表示一个可以实现本发明的典型的无限制的计算设备的方框图;
图4例示了用本发明的中间存储目标避免硬件指令数限制的典型情况;
图5为例示按照本发明使用一个API的典型流程图;
图6为例示本发明的中间存储目标的一些典型情况的方框图;以及
图7例示了按照本发明用中间存储目标由硬件以一些程序传送实现复杂功能的典型情况。
具体实施方式
概述
如上所述,本发明允许供以诸如低级描影语言之类的描影语言使用的多中间目标循环,所述描影语言使得开发者可以对程序描影器的功能进行编程。没有按照本发明设计的中间目标重复循环的图形平台在按像素和按顶点操作的程序的大小和复杂性上有所限制。本发明的系统和方法能结合通常可编程图形流水线的演变创建高级语言,以抽象和简化可编程能力的使用。本发明因此也能用来创建长度几乎不受限制的允许用硬件加速的非实时再现的程序。缓冲器的大小,即存储在中间目标内的数据量可以相对于图形数据按改变的分辨率可变地设定。按照本发明设计的对于非实时再现应用的不受限制的硬件加速重复循环的可用性因此提高了图形平台的速度和性能。
示范的联网和分布式环境
熟悉本技术的人们可以理解,计算机或者其他客户机或服务器设备可以用作一个计算机网络的组成部分或者在分布式计算环境(distributed computing environment)内使用。在这方面,本发明适合任何具有任何数量的存储器或存储单元和任何数量的跨任何数量的存储单元或容量而出现的应用程序和过程的、可以与本发明的中间存储目标结合使用的计算机系统。本发明可以应用于服务器计算机和客户机计算机部署在一个网络环境或分布式计算环境内、具有远程或本地存储器的环境。本发明也可以用于具有程序设计语言功能、解释和执行能力以与远程或本地服务结合产生、接收和发送信息的独立计算设备。
分布式计算便于通过在计算设备和系统之间直接交换共享计算机资源和服务。这些资源和服务包括信息交换、文件的超高速缓存和磁盘存储。分布式计算利用网络连通性,使客户机平衡它们的集体力量,对整个企业有利。在这方面,各种设备可以具有可以涉及本发明的中间存储目标的应用程序、对象或资源。
图3A给出了一个示范的联网或分布式计算环境的示意图。这个分布式计算环境包括计算对象(computing object)10a、10b等和计算对象或设备110a、110b、110c等。这些对象可以包括程序、方法、数据存储器、可编程序逻辑等。这些对象可以包括诸如PDA、电视机、MP3播放机、个人计算机之类的相同或不同设备的一些部分。每个对象可以通过通信网络14与另一个对象通信。这个网络本身可以包括其他一些为图3A的系统提供服务的计算对象和计算设备。按照本发明的一个方面,每个对象10a、10b等或110a、110b、110c等可以含有一个可以利用一个API或其他对象请求使用本发明的中间存储目标的应用程序。
在一个分布式计算体系内,传统上只可以作为客户使用的计算机直接在它们本身之间进行通信,并且可以起客户机和服务器两者的作用,只要所起的作用对于网络是最高效的。这降低了加在服务器上的负荷,而且允许所有的客户机都可使用其他客户机可用的资源,从而提高了整个网络的能力和效率。使用按照本发明设计的中间目标的服务因此可以以使整个网络高效的方式分配给各客户机和服务器。
分布式计算可以有助于使商业传送服务和能力更高效地跨越各种地理限制条件。此外,分布式计算可以将数据移近使用数据的点,起着一个网络高速缓存机制的作用。分布式计算也使一些计算网络可以利用一些智能代理动态地一起工作。代理驻留在对等计算机上,传送各种来回信息。代理也可以为其他对等系统启动任务。例如,智能代理可用来优先考虑网络上的一些任务、改变通信流量、本地搜索文件或者确定诸如病毒之类的异常情况并在它影响网络前予以堵塞。也可以期待各种其他服务。由于图形对象(graphicai object)、纹理图(texture map)、描影数据(shading data)等实际上可以物理地位于一个或多个位置,因此分配利用在此揭示的中间目标的服务在这样的系统中是很有用的。
也可以理解,一个对象,例如110c,可以寄宿在另一个计算设备10a、10b等或110a、110b等上。因此,虽然所示的物理环境将所连接的设备示为计算机,但这样的例示只是示范性的,物理环境也可以示为包括各种诸如PDA、电视机、MP3播放机之类的数字设备,诸如接口、COM对象之类的软件对象。
有支持分布式计算环境的各种系统、部件和网络配置。例如,一些计算系统可以用有线或无线系统、用局域网或广域网连接在一起。当前,许多网络接到提供用于大范围分布计算的基础设施和拥有许多不同网络的互联网上。
在家庭联网环境(home networking environment)内,至少有四种完全不同的网络传送媒体,各支持一个独特的协议,例如电源线、数据(无线和有线)、语音(例如电话机)和娱乐媒体。例如照明开关和电气用具之类的大多数家庭控制设备可以用电源线连接。数据服务可以以宽带方式(例如,DSL或电缆调制解调器)进入家庭,在家庭内可用无线(例如,HomeRF或802.11b)或者有线(例如,Home PNA,Cat5,甚至电源线)连接接入。语音业务可以以有线(例如,Cat3)或无线(例如,蜂窝电话机)方式进入家庭,并且在家庭内用Cat3布线分配。娱乐媒体或者其他图形数据可以通过卫星或电缆进入家庭,通常在家庭内用同轴电缆分配。IEEE 1394和DVI也正在呈现为对一些媒体设备群的数字互连。所有这些网络环境和其他可以呈现为协议标准的网络环境可以互连成一个可以通过互联网与外界连接的内部网。总之,对于存储和传输数据存在着各种完全不同的源,因此再向前,计算设备将需要一些共享数据的方式,诸如接入或利用外来数据对利用按照本发明设计的中间目标的中间结果的对象进行编程之类。
互联网通常指应用在计算机联网技术领域众所周知的TCP/IP协议的一些网络和网关的集体。TCP/IP是“Transport ControlProtocol/Interface Program(传送控制协议/接口程序)”的缩写。互联网可以描述为一个由一些地理上散布的远程计算机网络构成的系统,这些远程计算机网络由一些执行使用户可以通过这些网络交互作用和共享信息的连网协议的计算机互连。由于这样的大范围分布的信息共享,一些诸如互联网之类的远程网络通常就再逐渐发展成使开发人员可以基本上没有限制地设计执行专用操作或服务的一个开放系统。
因此,网络基础设施使大量的诸如客户机/服务器、对等或混合体系之类的网络拓扑结构可以起作用。“客户机(client)”是一个类或组中的一员,它使与它不相关的另一类或组的服务。因此,在计算中,客户机是一个请求另一个程序提供的服务的过程,即一般说来是一组指令或任务。客户机过程应用所请求的服务而不需要“知道”任何有关其他程序或服务本身的处理细节。在一个客户机/服务器结构特别是联网系统内,一个客户机通常是一个访问由另一个计算机,例如服务器,提供的共享网络资源的计算机。在图3A的例子中,计算机110a、110b等可以认为是客户机,而计算机10a、10b等可以认为是服务器,其中服务器10a、10b等保存有后来在客户机计算机110a、110b等中复制的数据。
服务器通常是一个通过诸如互联网之类的的远程网络可接入的远程计算机系统。客户机过程可以在一个第一计算机系统内激活,而服务器过程可以在一个第二计算机系统内激活,第二计算机系统与第一计算机系统通过通信媒体相互通信,提供分布式功能,并使多个客户机可以利用服务器的信息收集能力。
客户机和服务器用一个协议层提供的功能相互通信。例如,超文本传送协议(HTTP)是一个与万维网(WWW)配合使用的公共协议。通常,诸如统一资源定位器(URL)或互联网协议(IP)地址之类的计算机网络地址用来相互标识服务器或客户机计算机。网络地址可以称为URL地址。例如,可以通过通信媒体提供通信。具体地说,客户机和服务器可以通过TCP/IP连接相互连接以进行大容量通信。
因此,图3A例示了可以采用本发明的一个示范的联网或分布式环境,其中一个服务器通过网络/总线与客户机计算机通信。详细些说,一些服务器10a、10b等通过一个可以是LAN、WAN、内部网、互联网等的通信网络总线14与许多客户机或远程计算设备110a、110b、110c、110d、110e等互连,按照本发明,它们可以是便携式计算机、手持式计算机、瘦客户机、联网装置,或者诸如VCR、TV、加热炉、灯、加热器之类的其他设备。因此可以期望,本发明可以应用于任何希望处理图形对象的计算设备。
在一个通信网络/总线14例如是互联网的网络环境内,服务器10a、10b等可以是Web服务器,客户机110a、110b、110c、110d、110e等可以通过一些诸如HTTP之类的已知协议中的任何协议与这些服务器通信。作为一个分布式计算环境所特有的,服务器10a、10b等也可以用作客户机110a、110b、110c、110d、110e等。通信可以按需要是有线或无线的。客户机设备110a、110b、110c、110d、110e等可以通过通信网络/总线14通信,或者可以不通过通信网络/总线14通信,并且可以具有相关联的独立通信。例如,在是一个TV或VCR的情况下,对它的控制可以是也可以不是联网的。每个客户机计算机110a、110b、110c、110d、110e等和服务器计算机10a、10b等可以配备有各种应用程序模块或对象135和对可以存储文件或者下载或迁移部分文件的各种类型的存储单元或对象的连接或接入。任何计算机10a、10b、110a、110b等可以负责维护和更新按照本发明设计的数据库20或其他存储单元,诸如用来存储图形对象或者按照本发明处理的中间图形对象或数据的数据库或存储器20。因此,本发明可以用于这样的计算机网络环境,它具有:可以接入计算机网络/总线14和与计算机网络/总线14交互作用的客户机计算机110a、110b等,可以与客户机计算机110a、110b等和其他类似设备交互作用的服务器计算机10a、10b等,以及数据库20。
示范的计算设备
图3B和以下的讨论旨在提供对可以实现本发明的适当计算环境的简明概述。然而,应该看到,配合本发明可以使用手持、便携式和其他计算设备以及各种计算对象。虽然以下说明的是一个通用计算机,但这只是一个例子,本发明可以用具有网络/总线互操作性和交互作用的瘦客户机(thin client)实现。因此,本发明可以在一个涉及极少的或最少的客户机资源的联网主机服务(networked hosted service)的环境内实现,例如在一个客户机设备只用作对网络/总线的接口(例如装在一个电器内的对象)的网络环境内实现。实质上,可以存储数据或从中检索数据的任何情形都是本发明的图形流水线技术操作的所希望或适当的环境。
本发明可以通过一个供设备或对象的服务的开发者使用和/或包括在结合本发明的中间目标操作的应用程序软件内的操作系统实现,虽然不是必需这样。本发明还涉及顶点描影器和像素描影器的设计,以便与本发明的中间目标交互作用。软件可以在诸如由一个或多个计算机(诸如客户机工作站、服务器或其他设备之类)执行的程序模块之类的计算机可执行指令的一般语境内说明。概括地说,程序模块包括执行具体任务或实现具体抽象数据类型的例程、程序、对象、部件、数据结构等。通常,程序模块的功能可以按需要以各种实施方式加以合并或分布。此外,熟悉该技术领域的人员可以理解,本发明可以用其他计算机系统配置来实现。可以适合使用本发明的其他众所周知的计算系统、环境和/或配置包括但不局限于个人计算机(PC)、自动柜员机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、可编程家用电子设备、网络PC、电气用具、灯、环境控制设备、微型计算机、主计算机等。本发明也可以在任务由通过通信网络/总线或其他数据传输媒体链接的远程处理设备执行的分布式计算环境内实现。在分布式计算环境内,程序模块可以设置在包括存储设备的本地和远程计算机存储媒体内,而客户机节点也可以起服务器节点的作用。
图3B因此例示了可以实现本发明的适当计算系统环境100,如上面所解释的,计算系统环境100只是适当的计算环境的一个例子,并不是说对本发明的应用或功能的范围有所限制。不应该将计算环境100理解为依赖于或必需有示范操作环境100内所例示的任何一个部件或一些部件的组合。
参见图3B,实现本发明的典型系统包括一个通用计算设备,呈现为计算机110。计算机110的部件可以包括但不局限于处理单元120、系统存储器130和将包括系统存储器在内的各个系统部件连接到处理单元120上的系统总线121。系统总线121可以是包括存储器总线或存储器控制器、外围总线和使用任何总线体系结构的局部总线在内的几种类型总线结构中任何一种总线结构。举例来说(而不是局限于),这样的体系结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强的ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围部件互连(PCI)总线(也称为Mezzanine总线)。
计算机110通常包括各种计算机可读媒体。计算机可读媒体可以是计算机110可接入的任何可用媒体,包括易失和非易失媒体、可拆卸和不可拆卸的媒体。举例来说(而不是局限于),计算机可读媒体可以包括计算机存储媒体和通信媒体。计算机存储媒体包括以任何方法或技术实现的用来存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的易失和非易失媒体、可拆卸和不可拆卸媒体。计算机存储媒体包括(但不局限于):RAM、ROM、EEPROM、闪速存储器或其他存储器技术,CDROM、数字通用盘(DVD)或其他光盘存储器,盒带、磁带、磁盘存储器或其他磁存储器,或者任何可用来存储所需信息和可以由计算机110访问的其他媒体。通信媒体通常以诸如载波或其他传送机制之类的经调制的数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,它包括任何信息传送媒体。所谓“经调制的数据信号”是指这样一个信号,它的一个或多个特性被设置或改变成使信号内的信息得到编码。举例来说(而不是局限于),通信媒体包括诸如有线网络或直接导线联接之类的有线媒体和诸如声、RF、红外和其他无线媒体,而以上任何媒体的组合也应包括在计算机可读媒体的范围内。
系统存储器130包括呈易失和/或非易失存储器的计算机存储媒体,诸如只读存储器(ROM)131和随机存取存储器(RAM)132之类。含有有助于诸如在启动期间在计算机110内一些单元之间传送信息的基本例程的基本输入/输出系统133(BIOS)通常存储在ROM 131内。RAM 132通常含有处理单元120立即可接入的和/或目前正由处理单元120操作的数据和/或程序模块。举例来说(而不是局限于),图3B例示了操作系统134、应用程序135、其他程序模块136和程序数据137。
计算机110还可以包括其他可拆卸/不可拆卸、易失非易失计算机存储媒体。只是作为举例,图3B例示了对不可拆卸的非易失磁媒体进行读写的硬盘驱动器141、对可拆卸的非易失磁盘152进行读、写的磁盘驱动器和对诸如CD ROM或其他光媒体之类的可拆卸的非易失光盘156进行读、写的光盘驱动器155。其他可用于这个示范操作环境的可拆卸/不可拆卸、易失/非易失计算机存储媒体包括但不局限于盒式磁带、快擦写存储卡、数字通用光盘、数字录像磁带、固态RAM、固态ROM等。硬盘驱动器141通常通过一个诸如接口140之类的不可拆卸的存储器接口接至系统总线121,而磁盘驱动器151和光盘驱动器155通常通过一个诸如接口150之类的可拆卸存储器接口接至系统总线121。
上面讨论到的在图3B中例示的这些驱动器和与它们配合的计算机存储媒体为计算机110提供计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图3B中,硬盘驱动器141例示为存储操作系统144、应用程序145、其他程序模块146和程序数据147。注意,这些部件可以与操作系统134、应用程序135、其他程序模块136和程序数据137相同或不同。操作系统144、应用程序145、其他程序模块146和程序数据147在这里标了不同的号码,以例示它们至少是不同的拷贝。用户可以通过诸如键盘162和通常称为鼠标、跟踪球或触摸屏的定点设备161将命令和信息输入计算机110。其他输入装置(未示出)可以包括拾音器、游戏杆、游戏屏、碟形卫星天线、扫描仪等。这些和其他一些输入装置通常通过接到系统总线121上的用户输入接口160与处理单元120连接,但也可以由诸如并行端口、游戏端口或通用串行总线(USB)之类的其他接口和总线结构连接。诸如Northbridge之类的图形接口182也可以接到系统总线121上。Northbridge是一个与CPU或主处理单元120通信的芯片组,并且负责加速图的形端口(AUP)通信。可以有一个或多个图形处理单元(GPU)184与图形接口182通信。在这方面,GPU184通常包括诸如寄存器存储器之类的片内存储器,并且GPU184与视频存储器186通信,由此可以实现本发明的中间目标。然而,GPU184只是协处理器的一个例子,计算机110内可以包括各种协处理器,包括诸如像素和顶点描影器之类的各种程序描影器。监视器191或其他类型的显示设备通过诸如视频接口190也连接到系统总线121上,从而可以与视频存储器186通信。除了监视器191,计算机还可以包括其他诸如扬声器197和打印机196之类的外围输出设备,它们可以通过输出外围接口195连接。
计算机110可以利用对一个或多个诸如远程计算机180之类的远程计算机的逻辑连接在一个联网或分布式环境内工作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公用网节点,通常包括许多或所有上面对计算机110所述的部件,虽然在图3B内只例示了一个存储器存储设备181。在图3B中示出的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其他网络/总线。这样的联网环境在家庭、办公室、企业的计算机网络、内部网和互联网内是随处可见的。
在LAN连网环境内使用时,计算机110通过网络接口或适配器170接到LAN 171上。在WAN连网环境内使用时,计算机110通常包括一个调制解调器172或其他用于通过诸如互联网之类的WAN 173建立通信的装置。可以是内部也可以是外部的调制解调器172可以通过用户输入接口160或其他适当的机制接到系统总线121上。在联网环境内,相对于计算机110所述的程序模块或它们的一些部分可以存储在远程存储器存储设备内。举例来说(而不是局限于),图3B例示了远程应用程序185驻留在存储设备181内。可以理解,所示的网络连接是示范性的,也可以采用其他在计算机之间建立通信链路的措施。
示范的分布式计算构架或体系结构
由于个人计算和互联网的交会,已经和正在开发各种分布式计算构架。个人和商业用户同样配有一个用于应用程序和计算设备的可无缝互操作的Web启用接口,使计算活动越来越面向Web浏览器或网络。
例如,MICROSOFT的.NET平台包括服务器、诸如基于Web的数据存储和可下载设备软件之类的拼装(building-block)构件服务。一般说来,.NET平台提供:(1)使整个范围内的计算设备一起工作和使用户信息在所有的计算设备上自动更新和同步的能力;(2)通过更多的使用XML而不是HTML而提高的Web站点的交互能力;(3)以产品的自定义访问和传送为特征的联机服务,以及从中央出发点给用户的用于管理诸如电子邮件之类的各种应用程序或诸如Office.NET之类的软件的服务;(4)集中的数据存储,这将提高效率和使访问信息和在用户和设备之间的信息同步更为容易;(5)综合诸如电子邮件、传真和电话机之类的各种通信媒体的能力;(6)使开发人员可以创建可再用模块的能力,从而提高生产率和减少程序设计错误;以及(7)许多其他跨平台集成特色。
虽然一些典型的实施例在此是结合驻留在一个计算设备内的软件说明的,但本发明的一个或多个部分也可以通过一个操作系统、应用编程接口(API)或在一个协处理器与请求对象之间的“中间人(middle man)”对象实现,使得可控制的纹理采样服务可以执行,以所有.NET语言和服务支持或访问,也以其他分布式计算构架支持。此外,本发明的另一个方面是驻留在视频存储器内的中间目标本身,以及允许程序描影器从API接收程序并将它们转换为各个中间目标的图形体系结构。
多中间目标循环
本发明的系统和方法能结合通常可编程图形流水线的演变创建抽象和简化可编程能力的使用的高级语言。因此,本发明使得能够实现一个平台,该平台允许范围宽得多的图形技术被开发者表达出来、但由图形硬件以极高的性能执行。
没有按照本发明设计的中间目标的重复循环(recirculation)的图形平台从性能来看对每个像素和每个顶点级操作的程序在规模和复杂性上都受到限制,因为需要额外的数据传递方可实现类似的结果。例如,一些实现照明效果或类似变换的程序,由于所涉及的程序的复杂性和/或长度,如果不用本发明,就限于非实时的图形。如图4所示,一个比较复杂的描影器程序SP超过所涉及的硬件(例如像素描影器)的最大指令极限,因此,开发者没有本发明的帮助就只能将实现变换留给主处理机,而主处理机可能不是快到足以满足实时要求的。由于利用按照本发明设计的大小可变的中间目标MRT1和MRT2,开发者可以在实施中将程序SP分成一些部分SPP1、SPP2和SPP3,这些部分各不超过硬件的指令限制,但它们合在一起通过输出和重用中间结果完成SP的功能。例如,SPP1将一些中间结果输出给中间目标MRT1,中间目标MRT 1用作程序部分SPP2的输入,而程序部分SPP2又将中间结果输出给中间目标MRT2,目标MRT 2用作程序部分SPP3的输入,于是程序部分SPP3输出所希望的经变换的数据。本发明因此能用来创建允许用硬件加速的非实时再现的长度几乎不受限制的程序。按照本发明设计的对于非实时再现应用程序的不受限制硬件加速重复循环的可用性因此提高了图形平台的速度和性能。
此外,在MRT中将数据再循环给任何程序多次作为输入的能力意味着任何程序可以实现迭代操作,并重复使用中间数据而不用重新计算。更进一步,中间目标内数据的格式由开发者设置,使得MRT1可以包括红、绿、蓝颜色信号数据,但是MRT2可以包括完全与颜色不相关的数据(例如,数据可以与位置的复值函数)或者与加权不相关的数据。同样,如上所述,缓冲器的大小,即存储在中间目标内的数据量可以按图形数据的分辨率改变而可变地设定。
如在此所用的那样,本发明的多个重复循环目标(MRT)是用作缓冲器的纹理(texture)。这些缓冲器可以用作一个通常称为“像素描影器”的按像素程序(per pixel program)的输入和输出。单个像素描影器程序可以同时以纹理形式从任意多个MRT输入,并输出给任意多个呈现为再现目标(render target)的其他MRT。这些与众不同的缓冲器的个数仅仅由硬件和视频存储器的大小限制,因此这些缓冲器可以是相当多的。
本发明的示范组成部分包括:(1)能对纹理采样和输出给多个再现目标(除任何最终可选帧缓冲器输出之外)的像素描影器程序,以及(2)可以绑定到像素描影器程序上作为输出的再现目标或输入的纹理的重复循环缓冲器。
非限制性实施例
以下是应用本发明的以上组成部分的本发明的非限制性的软件实现。在这方面,本发明以至少两种形式表示MRT,以便适应硬件上的差异。这些实现包括描述为MET形式的形式和描述为MRT形式的形式。MET形式是一种较为简单的形式。在MET的情况下,通常与一个色元(color element)关联的中间四个分量输出以交织方式写给单个表面。在MRT的情况下,各个色元可以分别绑定给各个表面。这些表面可以以对于由像素描影器程序表示的技术为最佳的方式对每个色元在格式上有所不同。
非限制性的MET API
对MET API来说,传统的纹理被认为是单元素纹理(singleelement texture),使应用可以同时从像素描影器写给一个纹理的多个元,因此在下一个再现传送中,一个应用可以使用那些元中的一个或多个作为单元素纹理,即作为像素描影器的输入。这些附加的元可以认为是中间结果的临时存储,将在稍后由应用传送。
图5的伪码流程图例示了MET的典型的非限制性的使用情况。在500,一个应用程序通过检查MET格式的可用性发现支持中间目标。在510,应用程序通过调用CreateSurface(创建表面)功能创建MET表面。在520,应用程序通过SetRenderTarget(设置再现目标)功能调用将MET设置成RenderTarget(再现目标)。像素描影器230用移动指令输出到这些表面。在530,调用SetTexture(设置纹理)功能将一个MET表面设置到一个特定级。像其他纹理那样,同一个表面可以一次设置到多个级。在540,调用SetSamplerState(设置采样器状态)功能,将D3DSAMP_ELEMENTINDEX变量设置为采样器从MET纹理内哪个元采样的适当元序号,由此采样器状态的缺省值为0,这意味着非MET纹理将起作用。ValidateDevice(确认设备)功能调用会报告这个状态被设置为一个不适当的序号,例如,如果MET只是2个元宽但要求采样器从第4个元采样。
以下为支持MET特征的非限制性的API。有一些象以下所示的表面格式,表示格式的交错情况。
//卡可以支持的交织表面格式

    D3DFMT_MULTI2_ARGBS=MAKEFOURCC(M′,E′,T′,1′),

    D3DFMT_MULTI4_ARGBS=MAKEFOLRCC(M′,E′,T′,2′),

    //指明要取出哪个元的采样器状态。

    D3DSAMP_ELEMENTINDEX

    //再现状态

    //D3DRS_COLORWIUTEENABLE应用于再现目标(或元)零。
        <!-- SIPO <DP n="20"> -->
        <dp n="d20"/>
    D3DRS_COLORWRITEENABLE1

    D3DRS_COLORWRITEENABLE2

    D3DRS_COLORWRITEENABLE3

    //可选的设备特定特口(cap)

    D3DPMISCCAPS_INDEPENDENTWRITEMASKS//如果设备支持独立写掩<br/>
码,则为真
非限制性的多个再现目标(MRT)API
许多实现支持在此称为MRT的限制较少的MET形式。一种这样的放宽是具有多个可以独立创建的再现目标的能力。这些再现可以具有不同的格式。当前,有些3-D图形API支持可通过预先存在的SetRenderTarget API设置的单个再现目标。按照本发明,这个API进入点已经扩展成允许多个再现目标同时在设备内存在。新的端口(cap)表示这个能力。
以下的oCn寄存器表示一个MET纹理的一些示范的不同元:(a)oC0:色0(元0);(b)oC1:色1(元1);(c)oC2:色2(元2);(d)oC3:色3(元3);以及(e)oDepth:对深度模版缓冲器的深度测试的新的深度值。可以用一个移动指令写oCx寄存器。
MRT APT的典型非限制性伪码如下:
IDirect3DDevice9:    :SetRenderTarget(DWORD RenderTargetIndex,
IDirect3DSurface9*pRenderTarget);

    IDirect3DDevice9:    :GetRenderTarget(DWORD RenderTargetIndex,
IDirect3DSurface9**ppRenderTarget);

    //设备特定的端口(Cap)

    D3DCAPS9.NumSimultaneousRTs//对于除支持此特征外的都为1。

    从不为0
        <!-- SIPO <DP n="21"> -->
        <dp n="d21"/>
    //移动指令

    Move:mov

    Token Format:1opcode token-D3DSIO_MOV(instr.length field set to:2)

    1 destination token

    1 source token

    Instruction:mov[_sat]dst[.mask],[-]srco[.swizzle]

    以下包括一个典型的以组件方式移动的伪码描述:

    Operation:dst=src0

    dst can be r#/oC#/oDepth

    src0 can be r#/c#/v#/t#
中间目标的示范运用
图6例示了采用本发明的中间目标可以创建多个中间目标作为像素引擎的输出,同时具有变动的信息存储段,不象现有的像素引擎技术。此外,中间目标内的数据可以无限期保持,因此可以以后再用。例如,像素P1至PN可以存储像素的R、G、B值,放在中间目标IT1内。像素PW至PX可以存储照明值,放在中间目标IT2内,而像素PY至PZ可以存储其它的中间结果,放在中间目标IT3内。每个中间目标IT1、IT2和IT3内的数据可以由相同或不同的程序或者程序的一些部分再用,因此可以获得各种复杂的描影效果。硬件,例如包括顶点描影器和像素描影器的图形芯片,按照开发者的技术要求通过API输出给中间目标或者从中间目标输入。
作为按照本发明可以实现的较复杂的操作的一个例子,图7示出了一个存留一段时间的中间目标MRT1,该中间标MRT1被要求输出给第一程序Pass1,Pass1取MRT1作为输入,输出中间目标MRT2。以后,或者以前,程序Pass2取MRTI作为输入,输出中间目标MRT3。此外,程序Pass3输出中间目标MRT4而没有输入。最后,程序PaSS4执行一些操作,取MRT2、MRT3和MRT4作为给硬件的输入。使用几个MRT,以允许一些像素程序可以以更复杂的方式共享中间数据。这表明MRT的寿命完全由开发者控制决定。
也就是说,程序从Pass1开始。数据从MRTI(早些时侯由其它程序创建)读出。Pass1执行一些编程算法并产生MRT2。Pass2也用MRT1,但执行不同的算法,产生MRT3。Pass3没有输入而以算法产生MRT4。Pass4(最终传送)组合来自MRT2、MRT3和MRT4的数据,最终将正确的颜色数据发给帧缓冲器,于是可以用具有现有技术限制的图形硬件实现具有前所未有的复杂程度的描影效果。
有多种方式实现本发明。一种方式是预先制造执行本发明的功能、接收适合于如在此所说明的多个中间目标的命令的协处理器,例如GPU。本发明的另一种实现方式包括适当的API、工具箱、驱动程序代码、操作系统、独立或可下载的软件对象等,使应用程序和服务可以用这些中间目标实现更为复杂的功能。本发明站在API(或者其他软件对象)、图形芯片和视频存储器的立场上关注本发明的应用。因此,在此说明的本发明的各种实现具有完全以硬件、部分以硬件部分以软件和完全以软件实现的情况。
如上所述,虽然结合各种计算设备和网络体系结构说明了本发明的一些示范实施例,但是这些基本原理可以用于任何希望以直接(trivial)方式对程序描影器编程的计算设备或系统。因此,这些按照本发明提供改善的程序描影器的可编程性的技术可以用于各种应用和设备。例如,本发明的算法和硬件实现可以用于计算设备的操作系统,作为设备的一个独立的对象、作为另一个对象的一部分、作为可从服务器下载的对象、作为设备或对象与网络之间的“中间人”、作为分布式对象、作为硬件、在存储器中以及上述方式的任何组合中提供。虽然在此选择了示范的编程语言、名称和例子表示各种选择,但这些语言、名称和例子并不是有意进行限制。熟悉该技术领域的人们可以理解,有许多方式提供实现与由本发明的API实现的相同、相似或对等的功能的目标代码。
在此说明的各种技术可以与硬件或者软件结合实现,或者适当的话与两者的组合结合实现。因此,本发明的方法和设备,或者它的一些方面或部分,可以取在诸如软盘、CD-ROM、硬盘或任何其他机器可读存储媒体之类的有形媒体内体现的程序代码(即指令)的形式,在这程序代码装入一个诸如计算机之类的机器执行时,这个机器就成为一个实现本发明的设备。在程序代码在可编程计算机上执行的情况下,计算设备通常将包括一个处理器、一个由这个处理器可读的存储媒体(包括易失和非易失存储器和/或存储单元)、至少一个输入装置和至少一个输出装置。一个或多个可以应用本发明的中间目标服务的程序,例如通过使用数据处理API之类,最好以高级程序或面向对象的编程语言实现,以与计算机系统通信。然而,如果需要的话,程序也可以以汇编或机器语言实现。在任何情况下,语言可以是编译或解释语言,而且可以与硬件实现相结合。
本发明的方法和设备也可以通过以程序代码形式体现的通信实现,所述程序代码通过一些诸如电线或电缆、光纤之类的传输媒体或者通过任何其他形式的传输发送,其中在程序代码被一个诸如EPROM、门阵列、可编程序逻辑设备(PLD)、客户机计算机、录像机之类的机器或者一个具有如在上面典型实施例中所说明的信号处理能力的接收机接收、装入和执行时,这个机器或接收机就成为一个实现本发明的设备。在一个通用处理器上实现时,程序代码与这个处理器结合,配置成一个独特的设备进行工作,以调用本发明的功能。此外,任何与本发明结合使用的存储技术总可以是硬件和软件的组合。
虽然本发明结合各图的优选实施例作了说明,但应理解也可以采用其他类似的具体实施方式,可以对所说明的实施例进行一些修改和增添,以执行同样的本发明的功能,这并不背离本发明。例如,虽然本发明的示范网络环境是以诸如对等网络环境之类的网络环境为背景进行说明的,但熟悉该技术领域的人员可以理解,本发明并不局限于此,并且如在本申请中所说明的方法可以应用于任何诸如游戏操作台、手持计算机、便携计算机之类的计算设备或环境,无论是有线还是无线的,而且可以应用于由一个通信网络连接、通过这个网络交互作用的任何多个这样的计算设备。此外,应该强调的是,特别是随着无线联网设备的不断激增,可以期待有各种计算机平台,包括手持设备操作系统和其他专用操作系统。更进一步,本发明可以在多个处理芯片或设备内或横贯多个处理芯片或设备实现,而存储同样可以横贯多个设备执行。因此,本发明不应局限于任何单个具体实施方式,其专利保护范围应该由所附权利要求书给出。

Claims (45)

1.一种在一个图形系统内提供和利用中间存储目标的方法,所述方法包括下列步骤:
将一组程序指令发送给图形硬件的至少一个部件,以将所述至少一个部件编程成执行一种专用功能;以及
执行下列操作之一:(A)将来自一个中间存储目标的数据输入给图形硬件的所述至少一个部件,和(B)将来自图形硬件的所述至少一个部件的数据输出给一个中间存储目标。
2.一种按照权利要求1所述的方法,所述方法还包括下列步骤:
将第二组程序指令发送给图形硬件的所述至少一个部件,以将所述至少一个部件编程成执行第二种专用功能;以及
重新使用来自一个中间存储目标的数据作为所述至少一个部件的输入。
3.一种按照权利要求1所述的方法,其中所述中间存储目标是视频存储器的一部分。
4.一种按照权利要求1所述的方法,其中在中间存储目标中的数据存留下来。
5.一种按照权利要求1所述的方法,其中中间存储目标的分辨率可变地设定。
6.一种按照权利要求1所述的方法,其中所述至少一个部件包括一个程序描影器。
7.一种按照权利要求6所述的方法,其中所述程序描影器是顶点描影器和像素描影器之一。
8.一种按照权利要求1所述的方法,其中在第一中间存储目标内的数据代表种类和数量与在第二中间存储目标内的数据的种类和数量不同的像素数据。
9.用于提供权利要求1的可控纹理采样的操作系统、驱动程序代码、应用编程接口、工具箱和协处理器中至少之一。
10.一种承载执行权利要求1的方法的计算机可执行指令的经调制的数据信号。
11.一种包括执行权利要求1的方法的装置的计算设备。
12.一种包括通过图形系统内的至少一个硬件部件与至少一个中间存储目标接口的计算机可执行模块的应用编程接口,所述模块执行一种方法,包括下列步骤:
将一组程序指令发送给至少一个硬件部件,以将所述至少一个硬件部件编程成执行专用功能,所述专用功能包括下列之一:
(A)将来自一个中间存储目标的数据输入给所述至少一个硬件部件和(B)将来自所述至少一个硬件部件的数据输出给一个中间存储目标。
13.一种按照权利要求12所述的应用编程接口,所述应用编程接口还包括:
将第二组程序指令发送给所述至少一个硬件部件,以将所述至少一个硬件部件编程成执行专用功能,所述专用功能包括:
重新使用来自一个中间存储目标的数据作为所述至少一个硬件部件的输入。
14.一种按照权利要求12所述的应用编程接口,其中所述中间存储目标是视频存储器的一部分。
15.一种按照权利要求12所述的应用编程接口,其中在中间存储目标中的数据存留下来。
16.一种按照权利要求12的应用编程接口,其中中间存储目标的分辨率可变地设定。
17.一种按照权利要求12所述的应用编程接口,其中所述至少一个部件包括一个程序描影器。
18.一种按照权利要求17所述的应用编程接口,其中所述程序描影器是顶点描影器和像素描影器之一。
19.一种按照权利要求12所述的应用编程接口,其中在第一中间存储目标内的数据代表种类和数量与在第二中间存储目标内的数据的种类和数量不同的像素数据。
20.一种与存有至少一个包括计算机可执行指令的计算机可执行模块的中间存储目标接口的计算机可读媒体,所述计算机可执行指令执行一种方法,包括下列步骤:
将一组程序指令发送给至少一个硬件部件,以将所述至少一个硬件部件编程成执行专用功能,所述专用功能包括下列之一:
(A)将来自一个中间存储目标的数据输入给所述至少一个硬件部件和(B)将来自所述至少一个硬件部件的数据输出给一个中间存储目标。
21.一种按照权利要求20所述的计算机可读媒体,所述计算机可读媒体还包括:
将第二组程序指令发送给所述至少一个硬件部件,以将所述至少一个硬件部件编程成执行专用功能,所述专用功能包括:
重新使用来自一个中间存储目标的数据作为所述至少一个硬件部件的输入。
22.一种按照权利要求20所述的计算机可读媒体,其中所述中间存储目标是视频存储器的一部分。
23.一种按照权利要求20所述的计算机可读媒体,其中在中间存储目标中的数据存留下来。
24.一种按照权利要求20所述的计算机可读媒体,其中中间存储目标的分辨率可变地设定。
25.一种按照权利要求20所述的计算机可读媒体,其中所述至少一个部件包括一个程序描影器。
26.一种按照权利要求25所述的计算机可读媒体,其中所述程序描影器是顶点描影器和像素描影器之一。
27.一种按照权利要求20所述的计算机可读媒体,其中在第一中间存储目标内的数据代表种类和数量与在第二中间存储目标内的数据的种类和数量不同的像素数据。
28.按照权利要求20所述的至少一个计算机可读媒体,其中所述模块包括在应用编程接口(API)、驱动程序代码、操作系统和应用程序至少之一内。
29.一种与中间存储目标结合使用的协处理装置,所述协处理装置包括:
一个输入部件,用来将一组程序指令接收到所述协处理装置的至少一个部件,以将所述至少一个部件编程成执行专用功能,所述专用功能包括下列之一:
(A)将来自一个中间存储目标的数据输入给所述至少一个部件和(B)将来自所述至少一个部件的数据输出给一个中间存储目标。
30.一种按照权利要求29所述的协处理装置,其中所述输入部件接收第二组程序指令,以将所述至少一个部件编程成执行专用功能,所述专用功能包括:
重新使用来自一个中间存储目标的数据作为所述至少一个硬件部件的输入。
31.一种按照权利要求29所述的协处理装置,其中所述中间存储目标是视频存储器的一部分。
32.一种按照权利要求29所述的协处理装置,其中在中间存储目标中的数据存留下来。
33.一种按照权利要求29所述的协处理装置,其中中间存储目标的分辨率可变地设定。
34.一种按照权利要求29所述的协处理装置,其中所述协处理装置包括一个程序描影器。
35.一种按照权利要求32所述的协处理装置,其中所述程序描影器是顶点描影器和像素描影器之一。
36.一种按照权利要求29所述的协处理装置,其中所述在第一中间存储目标内的数据代表种类和数量与在第二中间存储目标内的数据的种类和数量不同的像素数据。
37.一种按照权利要求29所述的协处理装置,其中所述协处理装置包括至少一个图形处理单元(GPU)。
38.一种使用视频存储器内的中间存储目标数据结构的方法,所述方法包括下列步骤:
与顶点描影器和像素描影器至少之一的一个第一程序结合,由中间存储目标数据结构接收从所述顶点描影器和像素描影器至少之一输出的数据;
与所述顶点描影器和像素描影器至少之一的一个第二程序结合,输入中间存储目标数据结构的数据。
39.一种按照权利要求38所述的方法,其中所述第一和第二程序将所述顶点描影器和像素描影器至少之一编程成执行专用功能。
40.一种计算机可读媒体,包括通过图形系统内的至少一个硬件部件与至少一个中间存储目标接口的计算机可执行模块,所述模块包括:
将一组程序指令发送给至少一个硬件部件、以将所述至少一个硬件部件编程成执行专用功能的装置,所述专用功能包括下列之一:
(A)将来自一个中间存储目标的数据输入给所述至少一个硬件部件和(B)将来自所述至少一个硬件部件的数据输出给一个中间存储目标。
41.一种在图形系统内利用中间存储目标的系统,所述系统包括:
将一组程序指令发送给图形硬件的至少一个部件、以将所述至少一个部件编程成执行一种专用功能的装置;以及
(A)用于将来自一个中间存储目标的数据输入给图形硬件的所述至少一个部件的装置和(B)用于将来自图形硬件的所述至少一个部件的数据输出给一个中间存储目标的装置其中之一。
42.一种按照权利要求41所述的系统,所述系统还包括:
用于将第二组程序指令发送给图形硬件的所述至少一个部件、以将所述至少一个部件编程成执行第二专用功能的装置;以及
用于重新使用来自一个中间存储目标的数据作为所述至少一个部件的输入的装置。
43.一种应用编程接口,包括通过图形系统内的至少一个硬件部件与至少一个中间存储目标接口的计算机可执行模块,所述模块包括:
用于将一组程序指令发送给至少一个硬件部件、以将所述至少一个硬件部件编程成执行专用功能的装置,所述专用功能包括下列之一:
(A)将来自一个中间存储目标的数据输入给所述至少一个硬件部件和(B)将来自所述至少一个硬件部件的数据输出给一个中间存储目标。
44.一种与中间存储目标结合使用的协处理装置,所述协处理装置包括:
用于将一组程序指令接收到所述协处理装置的至少一个部件、以将所述至少一个部件编程成执行专用功能的装置,所述专用功能包括下列之一:
(A)将来自一个中间存储目标的数据输入给所述至少一个部件和(B)将来自所述至少一个部件的数据输出给一个中间存储目标。
45.一种按照权利要求44所述的协处理装置,其中所述用于接收的装置接收第二组程序指令,以将所述至少一个部件编程成执行专用功能,所述专用功能包括:
重新使用来自一个中间存储目标的数据作为所述至少一个硬件部件的输入。
CNB031217990A 2002-07-16 2003-04-10 在图形系统内提供中间目标的系统和方法 Expired - Fee Related CN100507832C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/196,864 US7564460B2 (en) 2001-07-16 2002-07-16 Systems and methods for providing intermediate targets in a graphics system
US10/196,864 2002-07-16

Publications (2)

Publication Number Publication Date
CN1469240A true CN1469240A (zh) 2004-01-21
CN100507832C CN100507832C (zh) 2009-07-01

Family

ID=22727078

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031217990A Expired - Fee Related CN100507832C (zh) 2002-07-16 2003-04-10 在图形系统内提供中间目标的系统和方法

Country Status (15)

Country Link
US (3) US7564460B2 (zh)
EP (2) EP3156965A1 (zh)
JP (2) JP4583720B2 (zh)
KR (2) KR100969448B1 (zh)
CN (1) CN100507832C (zh)
AU (1) AU2003203499B2 (zh)
BR (1) BRPI0301122B1 (zh)
CA (2) CA2424650C (zh)
MX (1) MXPA03004601A (zh)
MY (1) MY142776A (zh)
NO (2) NO328438B1 (zh)
PL (1) PL360754A1 (zh)
RU (1) RU2337402C2 (zh)
TW (2) TWI340927B (zh)
ZA (1) ZA200302809B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102959937A (zh) * 2010-06-25 2013-03-06 微软公司 用于稳健颜色传送的技术
CN104252414A (zh) * 2013-06-25 2014-12-31 晨星半导体股份有限公司 将影像写入存储器的方法及其装置
CN105719229A (zh) * 2014-12-19 2016-06-29 卢茨洛格斯技术有限公司 一种基于指令流截取的应用程序透明化的分辨率控制
CN107924319A (zh) * 2015-08-31 2018-04-17 微软技术许可有限责任公司 用户指导的部分图形执行
US10063941B2 (en) 2013-06-05 2018-08-28 Mstar Semiconductor, Inc. Method and apparatus for writing images into memory

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6828975B2 (en) 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US7564460B2 (en) 2001-07-16 2009-07-21 Microsoft Corporation Systems and methods for providing intermediate targets in a graphics system
US6809732B2 (en) * 2002-07-18 2004-10-26 Nvidia Corporation Method and apparatus for generation of programmable shader configuration information from state-based control information and program instructions
US6825843B2 (en) * 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
US6975321B1 (en) * 2003-05-05 2005-12-13 Nvidia Corporation System and method for generating multiple outputs in a single shader processing pass in a hardware graphics pipeline
US7681112B1 (en) 2003-05-30 2010-03-16 Adobe Systems Incorporated Embedded reuse meta information
US8274517B2 (en) * 2003-11-14 2012-09-25 Microsoft Corporation Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
US7231632B2 (en) 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US7248265B2 (en) 2004-04-16 2007-07-24 Apple Inc. System and method for processing graphics operations with graphics processing unit
US7636489B2 (en) 2004-04-16 2009-12-22 Apple Inc. Blur computation algorithm
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8704837B2 (en) * 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US7847800B2 (en) 2004-04-16 2010-12-07 Apple Inc. System for emulating graphics operations
US7978205B1 (en) 2004-05-03 2011-07-12 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US7397964B2 (en) 2004-06-24 2008-07-08 Apple Inc. Gaussian blur approximation suitable for GPU
US8130237B2 (en) 2004-06-24 2012-03-06 Apple Inc. Resolution independent user interface design
US8068103B2 (en) 2004-06-24 2011-11-29 Apple Inc. User-interface design
US7490295B2 (en) 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US7652678B2 (en) 2004-06-25 2010-01-26 Apple Inc. Partial display updates in a windowing system using a programmable graphics processing unit
US7761800B2 (en) 2004-06-25 2010-07-20 Apple Inc. Unified interest layer for user interface
US8566732B2 (en) 2004-06-25 2013-10-22 Apple Inc. Synchronization of widgets and dashboards
US8302020B2 (en) 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US8453065B2 (en) 2004-06-25 2013-05-28 Apple Inc. Preview and installation of user interface elements in a display environment
US7730026B2 (en) 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US7746347B1 (en) * 2004-07-02 2010-06-29 Nvidia Corporation Methods and systems for processing a geometry shader program developed in a high-level shading language
US8044951B1 (en) 2004-07-02 2011-10-25 Nvidia Corporation Integer-based functionality in a graphics shading language
US7958498B1 (en) 2004-07-02 2011-06-07 Nvidia Corporation Methods and systems for processing a geometry shader program developed in a high-level shading language
US8624906B2 (en) * 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
DE102004051567A1 (de) * 2004-10-22 2006-05-04 Siemens Ag Verfahren zur schnellen Bildverarbeitung zweidimensionaler Bilder
US8725990B1 (en) 2004-11-15 2014-05-13 Nvidia Corporation Configurable SIMD engine with high, low and mixed precision modes
US7227551B2 (en) 2004-12-23 2007-06-05 Apple Inc. Manipulating text and graphic appearance
US8140975B2 (en) 2005-01-07 2012-03-20 Apple Inc. Slide show navigation
US8004515B1 (en) * 2005-03-15 2011-08-23 Nvidia Corporation Stereoscopic vertex shader override
US7852353B1 (en) 2005-03-31 2010-12-14 Apple Inc. Encoding a transparency (alpha) channel in a video bitstream
GB2425030A (en) * 2005-04-09 2006-10-11 Tenomichi Ltd Managed network render targets for routing graphical information
US7289127B1 (en) 2005-04-25 2007-10-30 Apple, Inc. Multi-conic gradient generation
US8452090B1 (en) 2005-04-25 2013-05-28 Apple Inc. Bayer reconstruction of images using a GPU
US8543931B2 (en) 2005-06-07 2013-09-24 Apple Inc. Preview including theme based installation of user interface elements in a display environment
US7523146B2 (en) 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US8495015B2 (en) 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
DE102005031642B4 (de) * 2005-07-06 2008-05-29 Siemens Ag Mobiler Defibrillator
US8793576B2 (en) 2005-10-14 2014-07-29 Apple Inc. System and method for computing a desktop picture
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US7793169B2 (en) * 2005-10-19 2010-09-07 Telefonaktiebolaget Lm Ericsson (Publ) Intelligent table-driven interleaving
US8543824B2 (en) 2005-10-27 2013-09-24 Apple Inc. Safe distribution and use of content
US9104294B2 (en) 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
US7483037B2 (en) 2005-10-27 2009-01-27 Apple, Inc. Resampling chroma video using a programmable graphics processing unit to provide improved color rendering
US7743336B2 (en) 2005-10-27 2010-06-22 Apple Inc. Widget security
US7954064B2 (en) 2005-10-27 2011-05-31 Apple Inc. Multiple dashboards
US7707514B2 (en) 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
KR100696198B1 (ko) * 2005-12-23 2007-03-20 엠텍비젼 주식회사 프로그래밍 가능한 쉐이더 기반의 그래픽 연산을 지원하는임베디드 시스템
CN100395778C (zh) * 2006-03-15 2008-06-18 威盛电子股份有限公司 绘图系统以及绘图控制方法
CN101114382B (zh) * 2006-05-22 2010-09-01 辉达公司 帧缓冲区合并
US20070268298A1 (en) * 2006-05-22 2007-11-22 Alben Jonah M Delayed frame buffer merging with compression
US8154554B1 (en) 2006-07-28 2012-04-10 Nvidia Corporation Unified assembly instruction set for graphics processing
US7860826B2 (en) 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US8869027B2 (en) 2006-08-04 2014-10-21 Apple Inc. Management and generation of dashboards
US8228328B1 (en) * 2006-11-03 2012-07-24 Nvidia Corporation Early Z testing for multiple render targets
US7760767B2 (en) 2007-01-05 2010-07-20 Apple Inc. Wide area peer-to-peer synching in a decentralized environment
US7657769B2 (en) 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
KR101349171B1 (ko) * 2007-01-17 2014-01-09 삼성전자주식회사 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8667415B2 (en) 2007-08-06 2014-03-04 Apple Inc. Web widgets
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US8659601B1 (en) * 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8156467B2 (en) 2007-08-27 2012-04-10 Adobe Systems Incorporated Reusing components in a running application
US8176466B2 (en) 2007-10-01 2012-05-08 Adobe Systems Incorporated System and method for generating an application fragment
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US9619304B2 (en) 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8581912B2 (en) 2008-06-27 2013-11-12 Microsoft Corporation Dynamic subroutine linkage optimizing shader performance
US8656293B1 (en) 2008-07-29 2014-02-18 Adobe Systems Incorporated Configuring mobile devices
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US8289341B2 (en) * 2009-06-29 2012-10-16 Intel Corporation Texture sampling
US8922555B2 (en) * 2009-10-07 2014-12-30 Nvidia Corporation Pixel shader output map
US9530189B2 (en) 2009-12-31 2016-12-27 Nvidia Corporation Alternate reduction ratios and threshold mechanisms for framebuffer compression
KR101926570B1 (ko) 2011-09-14 2018-12-10 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
US10043234B2 (en) 2012-12-31 2018-08-07 Nvidia Corporation System and method for frame buffer decompression and/or compression
US9591309B2 (en) 2012-12-31 2017-03-07 Nvidia Corporation Progressive lossy memory compression
US9607407B2 (en) 2012-12-31 2017-03-28 Nvidia Corporation Variable-width differential memory compression
KR20160030871A (ko) * 2013-07-17 2016-03-21 에이2젯로직스, 인코포레이티드 그래픽 프로세싱 유닛을 사용하여 히스토그램 계산을 위한 시스템 및 방법
US9832388B2 (en) 2014-08-04 2017-11-28 Nvidia Corporation Deinterleaving interleaved high dynamic range image by using YUV interpolation
EP3012737A1 (en) * 2014-10-24 2016-04-27 Thomson Licensing Devices and methods for generating elementary geometries
US9996892B2 (en) 2014-11-21 2018-06-12 Intel Corporation Apparatus and method for efficient graphics processing in a virtual execution environment
CN105678679B (zh) * 2015-12-31 2019-02-12 公安部第三研究所 大规模图片集合快速预览的系统及方法
JP2019204348A (ja) 2018-05-24 2019-11-28 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム
KR20200145665A (ko) * 2019-06-19 2020-12-30 삼성전자주식회사 최적화된 픽셀 셰이더 속성 관리
US20210272347A1 (en) * 2020-02-28 2021-09-02 Advanced Micro Devices, Inc. Fully utilized hardware in a multi-tenancy graphics processing unit
CN114115873A (zh) * 2021-11-18 2022-03-01 网易(杭州)网络有限公司 着色器数据处理方法、装置、设备及存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392391A (en) * 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
TW219989B (en) 1992-05-29 1994-02-01 Ind Tech Res Inst A screen refreshing method which is independent of resolution
US5388206A (en) * 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
US5422657A (en) 1993-09-13 1995-06-06 Industrial Technology Research Institute Graphics memory architecture for multimode display system
TW299406B (en) 1993-10-29 1997-03-01 Ind Tech Res Inst Display memory structure of multi-mode display system
US6067098A (en) * 1994-11-16 2000-05-23 Interactive Silicon, Inc. Video/graphics controller which performs pointer-based display list video refresh operation
WO1996031844A1 (fr) * 1995-04-05 1996-10-10 Hitachi, Ltd. Systeme graphique
US5793374A (en) * 1995-07-28 1998-08-11 Microsoft Corporation Specialized shaders for shading objects in computer generated images
US5793371A (en) 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US6496190B1 (en) * 1997-07-02 2002-12-17 Mental Images Gmbh & Co Kg. System and method for generating and using systems of cooperating and encapsulated shaders and shader DAGs for use in a computer graphics system
US5969728A (en) * 1997-07-14 1999-10-19 Cirrus Logic, Inc. System and method of synchronizing multiple buffers for display
US6353460B1 (en) * 1997-09-30 2002-03-05 Matsushita Electric Industrial Co., Ltd. Television receiver, video signal processing device, image processing device and image processing method
US6208273B1 (en) * 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression
US6421053B1 (en) * 1999-05-24 2002-07-16 International Business Machines Corporation Block rendering method for a graphics subsystem
TW444183B (en) 1999-06-28 2001-07-01 Integrated Technology Express Device and method for image rotation
JP3350655B2 (ja) 2000-01-25 2002-11-25 株式会社ナムコ ゲームシステム及び情報記憶媒体
US7159041B2 (en) * 2000-03-07 2007-01-02 Microsoft Corporation Method and system for defining and controlling algorithmic elements in a graphics display system
US6819325B2 (en) * 2000-03-07 2004-11-16 Microsoft Corporation API communications for vertex and pixel shaders
US6862730B1 (en) * 2000-04-26 2005-03-01 Lucent Technologies Inc. Register allocation in code translation between processors
US7034828B1 (en) * 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US7564460B2 (en) 2001-07-16 2009-07-21 Microsoft Corporation Systems and methods for providing intermediate targets in a graphics system

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102959937A (zh) * 2010-06-25 2013-03-06 微软公司 用于稳健颜色传送的技术
CN102959937B (zh) * 2010-06-25 2016-09-14 微软技术许可有限责任公司 用于稳健颜色传送的方法和设备
US10063941B2 (en) 2013-06-05 2018-08-28 Mstar Semiconductor, Inc. Method and apparatus for writing images into memory
CN104252414A (zh) * 2013-06-25 2014-12-31 晨星半导体股份有限公司 将影像写入存储器的方法及其装置
CN104252414B (zh) * 2013-06-25 2018-03-27 晨星半导体股份有限公司 将影像写入存储器的方法及其装置
CN105719229A (zh) * 2014-12-19 2016-06-29 卢茨洛格斯技术有限公司 一种基于指令流截取的应用程序透明化的分辨率控制
CN105719229B (zh) * 2014-12-19 2020-03-03 谷歌有限责任公司 一种基于指令流截取的应用程序透明化的分辨率控制
CN107924319A (zh) * 2015-08-31 2018-04-17 微软技术许可有限责任公司 用户指导的部分图形执行
CN107924319B (zh) * 2015-08-31 2021-04-13 微软技术许可有限责任公司 用户指导的部分图形执行
US11599452B2 (en) 2015-08-31 2023-03-07 Microsoft Technology Licensing, Llc User directed partial graph execution

Also Published As

Publication number Publication date
NO20100178L (no) 2004-01-19
CA2772030C (en) 2014-09-16
JP2004054891A (ja) 2004-02-19
JP4922367B2 (ja) 2012-04-25
NO328438B1 (no) 2010-02-22
NO20031556D0 (no) 2003-04-07
NO331263B1 (no) 2011-11-14
RU2337402C2 (ru) 2008-10-27
JP2009277258A (ja) 2009-11-26
US20090256849A1 (en) 2009-10-15
TW200405219A (en) 2004-04-01
EP1383080B1 (en) 2016-12-07
CA2424650C (en) 2013-02-19
AU2003203499A1 (en) 2004-02-05
AU2003203499B2 (en) 2009-07-30
ZA200302809B (en) 2003-10-14
EP1383080A1 (en) 2004-01-21
KR20100029230A (ko) 2010-03-16
MXPA03004601A (es) 2004-02-03
TWI361395B (en) 2012-04-01
KR20040007242A (ko) 2004-01-24
TWI340927B (en) 2011-04-21
MY142776A (en) 2010-12-31
CA2424650A1 (en) 2004-01-16
US8379035B2 (en) 2013-02-19
PL360754A1 (en) 2004-01-26
US20120113118A1 (en) 2012-05-10
BRPI0301122B1 (pt) 2015-12-01
BR0301122A (pt) 2004-08-17
JP4583720B2 (ja) 2010-11-17
US20030020741A1 (en) 2003-01-30
TW201112162A (en) 2011-04-01
CN100507832C (zh) 2009-07-01
KR100969448B1 (ko) 2010-07-14
US7564460B2 (en) 2009-07-21
EP3156965A1 (en) 2017-04-19
US8063909B2 (en) 2011-11-22
CA2772030A1 (en) 2004-01-16
KR100995157B1 (ko) 2010-11-17

Similar Documents

Publication Publication Date Title
CN100507832C (zh) 在图形系统内提供中间目标的系统和方法
US9064334B2 (en) Systems and methods for providing an enhanced graphics pipeline
US7570267B2 (en) Systems and methods for providing an enhanced graphics pipeline
EP0673524B1 (en) Polymorphic graphic device
US8111260B2 (en) Fast reconfiguration of graphics pipeline state
US7075542B1 (en) Selectable multi-performance configuration
US20100060652A1 (en) Graphics rendering system
CN1534511A (zh) 视窗和背景图形接口
CN1685363A (zh) 任意形状图像的基于块的旋转
US20040169671A1 (en) Effects framework pipeline integration with programmable shader
Caballer et al. High performance virtual reality distributed electronic commerce: application for the furniture and ceramics industries

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150507

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150507

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090701

Termination date: 20200410

CF01 Termination of patent right due to non-payment of annual fee