CN102576470B - 用于纹理获取装载的自动实时着色器修改 - Google Patents
用于纹理获取装载的自动实时着色器修改 Download PDFInfo
- Publication number
- CN102576470B CN102576470B CN201080044927.5A CN201080044927A CN102576470B CN 102576470 B CN102576470 B CN 102576470B CN 201080044927 A CN201080044927 A CN 201080044927A CN 102576470 B CN102576470 B CN 102576470B
- Authority
- CN
- China
- Prior art keywords
- texture
- assets
- instruction set
- data
- loaded
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
公开了用于在运行时修改视频游戏的着色器以收集诸如MIP使用等关于纹理获取的详细统计数据的自动装载的方法和系统。该跟踪可对于该游戏应用是透明的,并且因此不需要对该应用的修改。在一实施例中,该方法可在用于记录和提供纹理使用数据并可任选地生成报告的软件开发工具包中实现。
Description
背景技术
许多计算应用执行大量的处理来生成图形。例如,视频游戏应用可使用3D图形来渲染图像和动画。然而,3D应用通常需要大量的纹理数据来产生良好质量的场景。大量的纹理进而需要存储器中和存储介质(例如硬盘或光盘)上的大量的空间。对于大多数游戏,按照百分比,相对于游戏的其他方面(诸如可执行程序代码和音频数据),该纹理数据通常消耗大部分的可用存储。因此,减少图形数据(诸如纹理数据)的量以及优化支持该应用所需的处理是增加其他类型数据的可用空间、减少下载时间、以及将必要数据(诸如纹理数据)适合放到存储介质(诸如光盘)上所期望的。减少游戏或程序中的纹理里所使用的图形数据的量将允许在新的级别中使用新的纹理或添加游戏的新区域或新部分,从而扩展游戏或程序。
发明内容
数据优化的一个重要方面是理解在应用执行过程期间图像文件被使用了多少次。例如,知晓在视频游戏过程期间纹理的特定MIP水平被使用了多少次将是有利的。在许多情况下,诸如视频游戏之类的应用可与次优纹理使用的许多示例(诸如重复纹理、从未使用的纹理、以及从未获取(fetch)的MIP水平)一起发货。
然而,收集关于纹理使用的详细统计数据需要大量的开发投入和游戏修改。通常,开发者使用更简单的技术,诸如视觉检查,其中在运行时基于其上正显示哪个MIP等级来对纹理着色(color)。这样的技术例如可提供用于标识网格上的散布纹理(diffuse texture)的问题的信息。然而,在其中色彩不穿透的纹理(诸如在法线图或光泽图中)的情况下,这样的技术可能不提供足够的信息。而且,使用视觉检查不提供贯穿整个游戏的纹理使用的整体视图,并且通常提供更加定性而不是定量的分析。该视觉检查方法还不能够检测相同的重复,因为视觉上它们在视觉观察时看上去相同,并且可能不提供用于标识正观察哪些纹理的简单机制。
因此,期望在经由例如应用编程接口(API)将纹理加载并传递到主机系统时,唯一标识所述纹理。通常这种标识难以在提供创建和装载纹理的应用灵活性的平台上执行。例如,系统将需要处理已被删除、重新定位、取别名(aliased)等的纹理。此外,该系统必须能够检测正被加载的纹理是否在以前使用过。
在此处公开的各实施例中,公开了用于对关于在应用(诸如视频游戏)执行期间数据资产的使用的详细统计数据进行运行时跟踪和监视的方法和系统。在游戏执行后,可向开发者提供使用数据,所述使用数据描述执行期间每个资产的使用。
在一个实施例中,公开了用于在运行时修改视频游戏的着色器以收集关于纹理获取的详细统计数据的自动装载的方法和系统。在一实施例中,该方法可在3D API库内执行,而着色器可在纹理和图形命令被传入时在进行中(on-the-fly)中被修改。该跟踪对于该游戏应用是透明的,并且因此不需要对该应用的修改。
在一实施例中,这种方法可在软件开发工具包中实现,而游戏应用开发者可使用纹理跟踪特征来记录并提供纹理使用数据。当数据和指令被实时传递到该系统时,该开发工具包随后可自动装载(instrument)着色器(shader)。
提供本概述以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键或必要特征,也不旨在用于限定所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任一部分中提及的任何或所有缺点的实现。
附图说明
参考附图来进一步描述根据本说明书的用于更改虚拟环境内的视图视角的系统、方法和计算机可读介质,在附图中:
图1是示例计算环境的框图。
图2示出其中可体现此处描述的方法和系统的各方面的计算环境的另一示例实施例。
图3示出图像和经过滤的MIP水平的示例。
图4描绘合并此处公开的某些实施例的示例性系统。
图5描绘合并此处公开的某些实施例的示例性系统。
图6描绘合并此处描述的某些实施例的示例性过程。
图7描绘合并此处描述的某些实施例的示例性过程。
图8A和8B描绘合并此处描述的某些实施例的示例性过程。
图9描绘用于提供共享媒体体验的示例系统。
具体实施方式
在以下描述和附图中阐明了某些具体细节,以提供对本公开的各个实施例的全面理解。通常与计算和软件技术相关联的某些公知细节不在以下公开中描述,以避免不必要地使本公开的各实施例晦涩难懂。此外,相关领域的普通技术人员会理解,他们可以无需以下描述的细节中的一个或多个而实现本公开的其它实施例。最后,尽管在以下公开中参考了步骤和序列来描述各个方法,但是如此的描述是为了提供本公开的实施例的清楚实现,且步骤以及步骤序列不应被认为是实现本公开所必需的。
用于纹理标识和跟踪的基础结构
图1示出了在其中可实现各示例实施例和各方面的示例性计算环境。计算系统环境200只是合适计算环境的一个示例,并非旨在对使用范围或功能提出任何限制。也不应该将计算环境200解释为对示例性操作环境200中示出的任一组件或其组合有任何依赖性或要求。
可以使用多种其它通用或专用计算系统环境或配置。适合与本发明一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、微型计算机、大型计算机、嵌入式系统、包括任何以上系统或设备的分布式计算环境等等。
可以使用诸如程序模块等可由计算机执行的计算机可执行指令。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。也可使用其中任务由通过通信网络链接或其他数据传输介质的远程处理设备执行的分布式计算环境。在分布式计算环境中,程序模块和其他数据可以位于包括存储器存储设备的本地和远程计算机存储介质中。
参考图1,示例性系统包括计算机210形式的通用计算设备。计算机210的组件可包括,但不限于,处理单元210、系统存储器230、以及将包括系统存储器的各种系统组件耦合到处理单元210的系统总线221。处理单元210可表示诸如多线程处理器上支持的多个逻辑处理单元。系统总线221可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。作为示例,而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。系统总线221也可被实现为点对点连接、交换光纤等通信设备。
计算机210通常包括各种计算机可读介质。计算机可读介质可以是能被计算机210访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机210访问的任一其它介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。以上的任何组合也应包括在计算机可读介质的范围内。
系统存储器230包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)231和随机存取存储器(RAM)231。包含诸如在启动期间帮助在计算机210内的元件之间传输信息的基本例程的基本输入/输出系统233(BIOS)通常储存储在ROM 231中。RAM 231通常包含处理单元210可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制,图2示出了操作系统234、应用程序235、其他程序模块236和程序数据237。
计算机210也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器240,对可移动、非易失性磁盘251进行读写的磁盘驱动器251,以及对诸如CD ROM或其它光学介质等可移动、非易失性光盘256进行读写的光盘驱动器255。可在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器241通常通过诸如接口240之类的不可移动存储器接口连接到系统总线221,并且磁盘驱动器251和光盘驱动器255通常通过诸如接口250之类的可移动存储器接口连接到系统总线221。
以上讨论并在图1中示出的驱动器及其相关联的计算机存储介质为计算机210提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。在图1中,例如,硬盘驱动器241被示为存储操作系统244、应用程序245、其他程序模块246和程序数据247。注意,这些组件可与操作系统234、应用程序235、其他程序模块236和程序数据237相同,也可与它们不同。在此操作系统244、应用程序245、其他程序模块246以及程序数据247被给予了不同的编号,以说明至少它们是不同的副本。用户可以通过输入设备,例如键盘261和定点设备261——通常是指鼠标、跟踪球或触摸垫——向计算机20输入命令和信息。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些以及其他输入设备通常通过耦合到系统总线的用户输入接口260连接到处理单元210,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其他接口和总线结构来连接。监视器291或其他类型的显示设备也通过诸如视频接口290之类的接口连接至系统总线221。除了监视器以外,计算机还可包括诸如扬声器297和打印机296之类的其他外围输出设备,它们可通过输出外围接口295来连接。
计算机210可使用到一个或多个远程计算机(诸如,远程计算机280)的逻辑连接而在联网环境中操作。远程计算机280可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括许多或所有以上关于计算机210所描述的元件,但在图1中仅示出了存储器存储设备281。图1中所描绘的逻辑连接包括局域网(LAN)271和广域网(WAN)273,但还可包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机210通过网络接口或适配器270连接到LAN 271。当在WAN联网环境中使用时,计算机210通常包括调制解调器271或用于通过诸如因特网等WAN 273建立通信的其他手段。调制解调器271可以是内置的或外置的,可经由用户输入接口260或其他适当的机制连接到系统总线221。在联网环境中,相对于计算机210所示的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图1示出了远程应用程序285驻留在存储器设备281上。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。
图2示出根据所公开的主题可使用的计算环境的示例实施例。以上参考附图1所描述的诸如计算环境12的计算环境可以是多媒体控制台100,诸如游戏控制台。如图2所示,多媒体控制台100具有含有一级高速缓存102、二级高速缓存104和闪存ROM(只读存储器)106的中央处理单元(CPU)101。一级高速缓存102和二级高速缓存104临时存储数据,并且因此减少存储器访问周期的数量,由此改进处理速度和吞吐量。CPU 101可被提供为具有一个以上的核,并且由此具有附加的一级高速缓存102和二级高速缓存104。闪存ROM106可存储在多媒体控制台100通电时引导过程的初始阶段期间加载的可执行代码。
图形处理单元(GPU)108和视频编码器/视频编解码器(编码器/解码器)114形成用于高速和高分辨率图形处理的视频处理流水线。经由总线从图形处理单元108向视频编码器/视频编解码器114运送数据。视频处理流水线向A/V(音频/视频)端口140输出数据,用于传输至电视或其他显示器。存储器控制器110连接到GPU 108以方便处理器访问各种类型的存储器112,诸如但不局限于RAM(随机存取存储器)。
多媒体控制台100包括较佳地在模块118上实现的I/O控制器120、系统管理控制器122、音频处理单元123、网络接口控制器124、第一USB主控制器126、第二USB控制器128和前面板I/O子部件130。USB控制器126和128用作外围控制器142(1)-142(2)、无线适配器148、以及外置存储器设备146(例如,闪存、外置CD/DVD ROM驱动器、可移动介质等)的主机。网络接口124和/或无线适配器148提供对网络(例如,因特网、家庭网络等)的访问,并且可以是包括以太网卡、调制解调器、蓝牙模块、电缆调制解调器等的各种不同的有线或无线适配器组件中的任何一种。
提供系统存储器143来存储在引导过程期间加载的应用数据。提供媒体驱动器144,且其可包括DVD/CD驱动器、硬盘驱动器、或其他可移动媒体驱动器等。媒体驱动器144可以是对多媒体控制器100内置的或外置的。应用数据可经由介质驱动器144访问,供多媒体控制台100执行、回放等。媒体驱动器144经由诸如串行ATA总线或其他高速连接(例如IEEE 1394)等总线连接到I/O控制器120。
系统管理控制器122提供与确保多媒体控制台100的可用性相关的各种服务功能。音频处理单元123和音频编解码器132形成具有高保真度和立体声处理的相应音频处理流水线。音频数据经由通信链路在音频处理单元123与音频编解码器132之间传输。音频处理流水线将数据输出到A/V端口140,以供外置音频播放器或具有音频能力的设备再现。
前面板I/O子部件130支持暴露在多媒体控制台100的外表面上的电源按钮150和弹出按钮152、以及任何LED(发光二极管)或其他指示器的功能。系统供电模块136向多媒体控制台100的组件供电。风扇138冷却多媒体控制台100内的电路。
CPU 101、GPU 108、存储器控制器110、以及多媒体控制台100内的各种其他组件经由一条或多条总线互连,该总线包括串行和并行总线、存储器总线、外围总线、以及使用各种总线体系结构中的任一种的处理器或局部总线。作为示例,这些架构可以包括外围部件互连(PCI)总线、PCI-Express总线等。
当多媒体控制台100通电时,应用数据可从系统存储器143加载到存储器112和/或高速缓存102、104中,并且可在CPU 101上执行。应用可在导航到多媒体控制台100上可用的不同媒体类型时呈现提供一致的用户体验的图形用户界面。在操作中,媒体驱动器144中所包含的应用和/或其他媒体可从媒体驱动器144启动或播放,以将附加功能提供给多媒体控制台100。
多媒体控制台100可通过简单地将该系统连接到电视机或其他显示器而作为独立系统来操作。在该独立模式中,多媒体控制台100允许一个或多个用户与该系统交互、看电影、或听音乐。然而,在通过网络接口124或无线适配器148可用的宽带连接集成的情况下,多媒体控制台100还可作为更大网络社区中的参与者来操作。
当多媒体控制台100通电时,可以保留设定量的硬件资源以供多媒体控制台操作系统作系统使用。这些资源可包括存储器的保留量(诸如,16MB)、CPU和GPU周期的保留量(诸如,5%)、网络带宽的保留量(诸如,8kbs),等等。因为这些资源是在系统引导时间保留的,所保留的资源从应用的视角而言是不存在的。
具体而言,存储器保留量优选地足够大,以包含启动内核、并发系统应用程序和驱动程序。CPU保留量优选地为恒定,使得若所保留的CPU用量不被系统应用使用,则空闲线程将消耗任何未使用的周期。
对于GPU保留量,通过使用GPU中断来调度代码以将弹出窗口渲染为覆盖图,从而显示由系统应用程序生成的轻量消息(例如,弹出窗口)。覆盖图所需的存储器量取决于覆盖区域大小,并且覆盖图优选地与屏幕分辨率成比例缩放。在并发系统应用使用完整用户界面的情况下,优选使用独立于应用分辨率的分辨率。定标器可用于设置该分辨率,从而无需改变频率和引起TV重新同步。
在多媒体控制台100引导且系统资源被保留之后,执行并发系统应用来提供系统功能。系统功能被封装在上述所保留的系统资源内执行的一组系统应用中。操作系统内核标识出作为系统应用线程而非游戏应用线程的线程。系统应用优选地被调度为在预定时间并以预定时间间隔在CPU 101上运行,以便提供对应用而言一致的系统资源视图。调度是为了使在控制台上运行的游戏应用的高速缓存分裂最小化。
当并发系统应用需要音频时,由于时间敏感性而将音频处理异步地调度给游戏应用。多媒体控制台应用管理器(如下所描述的)在系统应用活动时控制游戏应用的音频级别(例如,静音、衰减)。
输入设备(例如,控制器142(1)和142(2))由游戏应用和系统应用共享。输入设备不是保留资源,而是在系统应用和游戏应用之间切换以使其各自具有设备的焦点。应用管理器较佳地控制输入流的切换,而无需知晓游戏应用的知识,并且驱动程序维护有关焦点切换的状态信息。相机27、28和捕捉设备20可为控制台100定义附加输入设备。
在此处公开的实施例中,所描述的操作中的一些或全部可使用上面描述的功能组件中的一个或多个来执行。例如,现在某些CPU足够强大来执行对顶点和像素的类GPU操作。因此,所公开的实施例可在没有单独的GPU的情况下实现。
纹理
以下示例实施例以视频游戏应用和诸如微软的XBOX 360控制台等系统为上下文描述了用于纹理获取装载(instrumentation)的纹理标识和实时着色器修改方法。然而,应用到视频游戏控制台是示例性的,而本领域的技术人员将意识到,所公开的原理能很容易地应用到其他实时3D数据、应用和平台。这种数据可包括任何媒体文件,诸如音乐文件。而且,目前公开的主题不仅可应用于文本,而且可应用于其中库尝试跟踪该库不拥有、但是由该库不控制或直接装载的其他代码传递到该库中的对象的信息(寿命、使用模式、唯一性)的任何情形。所有这样的数据、应用和平台都被构想为落在本发明的范围内。
在以下示例中,以视频游戏开发者所使用的软件开发工具包为上下文示出所公开的方法。然而,这些示例是为说明目的而提供的,而所公开的方法可以使用其他方法和机制来提供。
在诸如视频游戏之类的图形应用中,可使用3D图形。3D图形使用通过对三维对象进行线框表示的建模,这些三维对象可以使用各种3D渲染技术被显示成二维图像。这样的技术例如可以使用3D空间中由诸如三角形之类的几何实体所连接的点的集合来表示3D对象。当建立视频游戏应用中的场景时,可以在生成静止图像或动画时考虑到各个虚拟对象、观察者的视角、色彩、以及照明。通常,3D模型的顶点被着色,并且该色彩然后可以在渲染期间在该模型表面的范围内进行插值。一种用于将色彩信息添加到3D模型的方法是通过使用纹理映射将2D纹理图像应用于该模型的表面来进行的。纹理可以将细节、表面纹理、或色彩添加到计算机生成的图形或3D模型。顶点几何形状信息(顶点缓冲区)可以包括纹理坐标,该纹理坐标指示如何将纹理图像图的点映射到3D模型的表面。纹理可以映射到诸如3D建模中常用的三角形之类的形状的表面。此外,着色器可以执行复杂计算以从任意位置内取任何数目的纹理。前述示例仅是示例性的并且仅覆盖基本漫射映射。视频游戏应用现在频繁使用非常复杂的计算来计算要获取纹理的哪些部分。本发明可被应用以覆盖所有这样的纹理使用情形。
因为纹理化表面可能在相对于观察者的任意距离和定向处,所以可应用某些形式的过滤来确定像素的最佳色彩。给定矩形纹理,取决于期望的观察距离和定向,多个纹理元(texel)可能需要被采样和组合,来为像素提供最适当的色彩。
Mip映射(mipmapping)是一种可用来节省映射纹理数据所需的处理的技术。Mip图(mipmap)可以是陪伴主纹理的预先计算的、经优化的图像集合。Mip图因此可被用来通过缓解实时调整纹理大小的需要来增加渲染速度。Mip映射预过滤纹理并将纹理用低至单一像素的更小的大小存储。当纹理化表面移动得更远时,所应用的纹理切换到被预先过滤的更小的大小。每一mip图图像可为主纹理的处于某一降低细节水平的一个版本。尽管在视图足以以全部细节渲染主纹理时可使用主纹理,然而渲染器可在从一定距离或在小尺寸处查看该纹理时切换到合适的mip图图像。因为被处理的纹理元的数量可远低于样本纹理,故渲染速度增加。例如,如果纹理具有256×256像素的基础大小,则相关联的mip图集合可包含一个八幅图像的系列,每一幅是前一幅的总面积的四分之一:128×128像素、64×64、32×32、16×16、8×8、4×4、2×2以及1×1。
参考图3,示出的是具有多个MIP等级的纹理mip图图像的示例。如图所示,左侧的主体图像300伴随着尺寸减小的经过滤副本310、320等。
3D应用通常需要大量的纹理数据来产生良好质量的场景。该大量的纹理进而需要存储器中和存储介质(例如硬盘或光盘)上的大量的空间。在一些情况下,诸如视频游戏开发者等应用开发者在磁盘上具有用于期望图像数据的足够空间方面有问题。例如,视频游戏中每个场景的每个角色可具有与其相关联的多个纹理。纹理可以是128×128像素的,并且可能需要每个像素数千字节。开发者可能无意地提供同一图像的两个或更多个纹理,从而加重这个问题。在其他情况下,可能提供远比应用所需要的大得多的纹理。提供关于游戏开发期间纹理的使用的数据将是有用的,开发者可使用所述数据来在发布产品之前优化纹理的使用。例如,使用这种信息,开发者能够消除重复纹理,或减少对它们在应用中的最终利用来说太大的纹理尺寸。因此,减少图形数据(诸如纹理数据)的量以及优化支持该应用所需的处理是增加其他类型数据的可用空间、减少下载时间、以及将必要数据(诸如纹理数据)适合放到存储介质(诸如光盘)上所期望的。减少游戏或程序中的纹理里所使用的图形数据的量将允许在新的级别中使用新的纹理或添加游戏的新区域或新部分,从而扩展游戏或程序。
数据优化的一个重要方面是理解在应用执行过程期间图像文件被使用了多少次。例如,知晓在视频游戏过程期间纹理的特定MIP水平被使用了多少次将是有利的。在许多情况下,诸如视频游戏之类的应用可与次优纹理使用的许多示例(诸如重复纹理、从未使用的纹理、以及从未获取的MIP水平)一起发货。
然而,收集关于纹理使用的详细统计数据需要大量的开发投入和游戏修改。通常,开发者使用更简单的技术,诸如视觉检查,其中在运行时基于其上正显示哪个MIP等级来对纹理着色(color)。这样的技术例如可提供用于标识网格上的散布纹理(diffuse texture)的问题的信息。然而,在其中色彩不穿透的纹理(诸如在法线图或光泽图中)的情况下,这样的技术可能不提供足够的信息。而且,使用视觉检查不提供贯穿整个游戏的纹理使用的整体视图,并且通常提供更加定性而不是定量的分析。该视觉检查方法还不能够检测相同的重复,因为在视觉上它们在视觉检查时看上去相同。视觉检查方法还不能良好地适用于标识开发者正在观察哪个纹理。
一些开发者能够在他们的内容流水线中实现纹理的离线处理,所述内容流水线查找静态问题,诸如重复的色彩信道和类似的纹理。这些技术可标识某类问题,但是不提供关于在运行时如何使用纹理的有用信息。例如,这些技术不能确定是否纹理在运行时期间从未被使用,或者是否从未获取任何信道。
因此,期望在经由例如应用编程接口(API)将纹理加载并传递到主机系统时,唯一标识所述纹理。通常这种标识难以在提供创建和装载纹理的应用灵活性的平台上执行。例如,系统将需要处理已被删除、重新定位、取别名(即,具有指向相同存储器位置的多个纹理头)等的纹理。此外,该系统必须能够检测正被加载的纹理是否在以前使用过。这种标识需要解决的一个问题是:当通过引用纹理的地址来请求该纹理时,着色器可标识纹理的正确大小(例如,它是一个64×64纹理),但是可能不知晓该纹理是从磁盘的何处装载的。另一个问题是:如果库允许的话,则装载在存储器的特定区域中的纹理可能在后来被移动。
在各实施例中,游戏开发者可使用软件开发工具包来装载游戏应用、点击按钮来允许数据捕捉、然后在其各个等级和场景来运行贯穿该游戏。然后,开发者可查看详细记载纹理的使用以及在游戏运行期间使用的MIP等级的报告。
标识
在目前公开的主题的一实施例中,可提供经修改的3D API库和查看器应用。经修改的库可提供与库的标准版相同的接口,但是具有若干底层(under-the-hood)修改以允许纹理跟踪。用户/开发者可对照经修改的库来编译其游戏应用并调用特定API来允许对纹理的跟踪。当游戏执行时,库可唯一标识该游戏所使用的所有纹理。库还可在进行中(on the fly)装载着色器和命令缓冲器,以便可收集使用统计数据。在一实施例中,当用户期望获取捕捉(即,对纹理使用模式的记录)时,用户可点击查看器应用上的按钮或调用“开始”API,从此处开始,所有纹理使用可被库记录并存储在捕捉文件中。当用户通过点击查看器应用上的按钮或调用“停止”API来终止该捕捉时,捕捉文件可被传输到主计算系统并被加载到查看器应用中。在此时,查看器应用可处理纹理使用数据并生成智能推荐的列表来改进空间的使用。在一个实施例中,可向用户呈现所使用的纹理的完整列表,每个纹理具有缩略图、使用统计数据、以及为保存纹理空间而推荐的修改。可提供每MIP的获取的交互图以及屏幕截图以帮助用户更好地理解纹理在其中使用的上下文。
在一个实施例中,供该应用(即,外部代码)使用的由该系统或控制台所提供的库可能向该外部代码暴露处理所述对象的一组一个或多个API。在一些系统中,可提供这种库,所述库可被游戏应用调用以访问该系统所提供的功能,例如用于在用户界面上渲染图像和动画。在微软的XBOX 360(其使用Direct3D)的情况下,这样的API可包括“设置纹理(SexTexture)”或“设置像素着色器(SetPixelShader)”,其中游戏应用可将纹理或着色器对象传递到该库以使该纹理或着色器由该库使用。
在诸如微软的XBOX 360等一些系统中,可向应用提供对纹理从DVD到存储器的加载的完全控制。尽管这种能力可向游戏开发者提供改善性能的灵活性,然而这种灵活性可能使系统更难以在纹理被加载后跟踪纹理的使用。例如,当将纹理从DVD加载到控制台存储器中时,该镜像(image)的副本可被加载到对该库来说未知的存储器部分中。
该系统可实现用于跟踪对象在存储器中的可能位置的结构,其具有对已在每个存储器地址处标识每个对象的描述。例如,当Direct3D将命令和纹理定向到图形处理单元(GPU)时,可确定该纹理的标识。当外部代码调用标准或可任选的API中的任何一个时,可通知库“在地址X处有一对象,其具有此描述,并且正在以此方式被使用”。然后该库可检查该存储器跟踪结构来看在该存储器地址处是否新近标识了与该相同描述相匹配的对象。
如果在该地址处还没有标识对象,或者如果在该地址处已加载了与新对象不匹配的其他对象,则可将用于该地址的新节点连同对被提供给该API的对象的描述一起添加到该结构中。该地址的任何先前节点可被添加到该节点的历史中。
如果在该存储器地址处标识的最新近的对象与对被传递到该API的对象的描述相匹配,则可用“最新近使用”时间戳来更新该地址的节点跟踪并使计数器加一。
为了处理诸如取别名(aliasing)(其中具有不同描述的两个对象共享存储器的相同区域)等情况,可维护每个存储器地址的历史,所述历史跟踪已加载到该存储器地址中的最后N个对象。如果对象的描述不与该地址的历史中的“最新近使用的”相匹配,但是的确与所述历史中的某个其他节点相匹配,则旧的匹配节点可被移至“最新近使用的”位置。
当发现新对象时(例如,只要在上述历史中创建新节点时),可调用新对象分析器。这种分析器可用于唯一标识该对象。在一个实施例中,GPU所引用的纹理的图标或缩略图可被捕捉并保存。然后可将该缩略图或图标与该图像被渲染的时间以及被检索(retrieve)的存储器位置相关联。与该相同存储器位置相关联的未来纹理获取可被累积并在使用报告中提供。
当开发者可提供名称来标识一纹理并在随后再次使用该名称以用于不同纹理或类似纹理时可能出现问题。例如,对于游戏的等级1可存在表示矩形红色砖块的“砖块”纹理。对于游戏的等级2,可存在表示用作砖块的圆形灰色石头的“砖块”纹理。在此情况下,找到即便在开发者为它们给出相同名称时也能区分这些纹理的另一种方式将是有用的。当两个相同的纹理被赋予了不同的名称时可能出现另一个问题。类似地,纹理可被提供两次。
在一个实施例中,可为所获取的每个纹理计算散列。例如,该新对象分析器可生成该纹理的一个或多个mip等级的RGBA位的一个128字节散列。对于更复杂的对象,可使用其他类型的散列(hashing)或唯一标识方法。在所述纹理中每个纹理具有一散列的情况下,该系统可以能够确定何时散列是相同的,或何时不同的MIP等级与相同的图像相关联。
一旦已向对象分配了唯一标识符(128位散列或其他),则可维护该对象的使用的历史。例如,一纹理可在时刻0:15被加载到地址A、在0:20被卸载、在0:30被重新加载到地址B、在0:40被加载到第2个存储器地址(地址C)中、在0:50被从B卸载以及在0:53被从C卸载。对于纹理被加载的时刻中的每一个,可允许外部代码在任何存储器位置(A、B或C)加载该纹理。通过使用该唯一标识符,这三个地址中的每一个的创建/删除信息可被组合为一个有用历史。该每地址对象描述节点可指向该唯一持久对象跟踪数据库中的适当的条目。
如果纹理被加载但在应用执行过程期间从未被使用,则不需要为该纹理提供任何数据,而开发者可认为该纹理未被使用。
附加地或可任选地,该库可暴露一组API来协助对对象创建和删除的跟踪。在一个实施例中,可使用第二组API以允许提供提示来协助纹理跟踪代码。例如,这种提示可提供用于建立纹理创建和删除的决定性时间戳的信息。例如,在微软的XBOX 360上,这种提示可能是有用的,因为可允许游戏应用独立于该D3D库地管理纹理。在另一实施例中,该外部代码还可命名对象。例如,可以使用从其加载该对象的文件的实际文件名或完整磁盘上路径作为名称。此名称可被用来协助唯一标识该对象。在此情况下,开发者可能需要修改程序代码来提供文件名称。
其中跟踪机制可使用“提示”功能的示例情形包括:
1)当该外部代码在存储器中在物理上重新定位对象时。在此情况下,该外部代码可调用“报告移动对象”API来通知存储器跟踪器功能。
2)当该外部代码用具有匹配描述但是具有不同唯一对象ID的另一对象来取代一对象时,该外部代码可任一地调用“设置对象名称”API、“报告新对象”API、或“报告删除对象”API来提供信息以便该跟踪机制能够区分这两个对象。
3)可调用该API来通知该系统纹理已被删除。
然而,如果新对象分析器足够快,在一些情况下为每个对象重新散列或重新生成唯一ID可能是可接受的,在此情况下对“提示API”的外部调用可不被调用。
现在参考图4,示出描绘此处公开的标识系统的各方面的示例性功能图。该图指示包括应用拥有的代码和数据的数据库拥有的API的一个示例。应用400可能够访问应用拥有的API410。这种API可被调用,以创建对象、移动对象、删除对象等。如同上面讨论的,在一些系统中,可向该应用提供对象到存储器420中的加载的控制。因此,存储器420可包括多个对象,这多个对象可具有对该库来说未知的寿命和描述。
该库可提供API430,所述API430可使用并处理所述对象。用户/开发者可对照该库来编译其游戏应用并调用特定API来允许对纹理的跟踪。应用400可调用一个或多个API来处理这些对象。
可创建并存储结构440以描述关于被加载到存储器中的对象的当前状态的库的信息。当新地址被标识为具有用于处理的对象时,或如果在该存储器地址处已加载了不与该新对象相匹配的对象,可将新节点连同被提供到该API的对象的描述一起添加到该结构。该地址的任何先前节点可被添加到该节点的历史中。如果在该存储器地址处标识的最新近的对象与对被传递到该API的对象的描述相匹配,则可用“最新近使用”时间戳来更新该地址的节点跟踪并使计数器加一。
当发现新对象时,可调用新对象分析器460来唯一标识该对象。已被创建或以其他方式使用的所有对象可被存储在持久数据库470中。附加地或可任选地,可使用第二组API440以允许提供提示来协助纹理跟踪代码。例如,这些提示可提供用于报告新对象、报告删除对象、命名对象、报告移动至对象(reporting moved to object)、报告用于对象(reporting used to object)等的信息。
装载和数据捕捉
着色器通常被用于对GPU进行编程。着色器可包括用于在GPU上计算渲染效果的一组软件指令。例如,着色器可描述顶点的特征,诸如位置、纹理坐标和色彩。着色器还可描述像素的特征,诸如位置、纹理坐标和色彩。在一示例性系统中,中央处理单元向GPU发送指令和几何形状数据,而顶点着色器可变换该几何形状、执行照明计算、执行对场景中的几何形状的改变、三角测量所计算的几何形状、以及变换该三角形的像素图元。
在一个实施例中,为了确定纹理如何被使用,开发系统可跟踪应用所使用的所有着色器和纹理。所述跟踪可在API层面执行。在其他实施例中,所述跟踪可在其他层次(诸如驱动器层次)执行。通常,用于GPU的指令和数据被包含在标识纹理以及标识要对该纹理执行的处理的分组中。例如,分组可包含到文本的点以及GPU把纹理画一百次的指令。
可解释并分析所述分组以确定被请求物的性质和内容。关于将如何使用分组的足够知识对于做出这种解释和分析是必要的。在一个实施例中,开发系统可解析被提交到GPU的命令缓冲器,并分析和/或修改每个分组。命令可被添加以跟踪什么纹理和MIP正被使用。例如,命令分组可包含着色器指令和指向纹理的指针。像素着色器可被分解以寻找从纹理获取的所有指令,并且可以添加指令,所述指令确定要被检索的每个纹理的身份和MIP等级。在装载该着色器之后,新着色器可被添加到着色器高速缓存或其他机制,以允许原始游戏的着色器指向被装载的副本。然后可将所收集的信息(诸如纹理身份和mip等级)发送到CPU,以便该信息可被跟踪。在一个实施例中,可使用计数器来跟踪纹理被使用了多少次。
用这种方式,只要着色器被新添加或新创建时,它们可被修改以跟踪与相关联纹理有关的信息,诸如其身份或位置。对着色器的,或命令缓冲器指令的修改可被称为“装载”而这些术语可在本文中可互换地使用。
在图5中所示的示例性系统中,CPU 500可以向GPU 510发送指令和几何形状数据。可从例如包括视频游戏应用的DVD将纹理530装载到存储器540中。该应用可包括已被编译为可执行代码(executable)的着色器代码550和游戏代码560。着色器指令580可在被GPU 510执行之前被修改或装载570。
图6描绘用于装载着色器以跟踪纹理使用信息的示例性过程。开发系统可解析被提交到GPU的命令缓冲器605,并分析和/或修改每个分组600。命令可被添加以跟踪什么纹理和MIP正被使用。在装载该着色器之后,新着色器可被添加到着色器高速缓存610或其他机制,以允许原始游戏的着色器指向被装载的副本。
为了避免着色器被重新装载多次,可添加高速缓存系统。在一个实施例中,可维护所有先前装载的着色器的散列表。在其他实施例中,取决于特定平台或情形,可使用更简单的方法。例如,在窗口Direct3D实现中,Direct3D完全拥有着色器接口。在此情况下,可将标志(flag)添加到着色器对象,该标志指示该对象是否在先前被装载过。如果被装载过,则可提供指向该着色器的已装载副本的指针。一般而言,可使用某种高速缓存机制来改善性能。
着色器分析器615可定位纹理获取和控制流指令、分析寄存器使用等。然后该装载可被插入着色器620的副本。可分析未在先前被装载的着色器以确定适当的纹理获取指令并且确定装载该着色器的可行性。添加装载可涉及例如分配来自着色器的资源,诸如通用寄存器、输入或常量寄存器、以及额外的着色器指令槽。如果确定不存在足够的可用资源来添加该装载,则可将该着色器标记为不可装载的。
在一个实施例中,可标识可被一起执行的类似的纹理获取指令的组。例如,这样的组可不被控制流分支分开。然后可为该组,而不是单独为每个指令,插入装载。
装载的性质可取决于硬件平台而变化。例如,在使用微软的XBOX 360控制台的一实施例中,性能计数器可被有条件地从着色器内递增。在另一实施例中,指示某个mip图等级已被读取的字节可被有条件地导出到存储器。
为了标识正在读取哪些mip图字节的目的,可添加计算每个纹理获取将检索的MIP的指令。然而,如果给定纹理只具有一个MIP等级或如果出于任何其他原因着色器仅为确定哪些纹理已被读取的目的(而不是为mip图使用)而被装载,则可跳过mip图等级计算。
附加地或可任选地,可插入保存和还原625由装载代码修改的任何状态以便着色器的原始预期计算不被改变的指令。
出于调试目的,可确认630被装载的着色器以确保所添加的装载不影响色彩/深度或任何其他计算。确认可被符号性地(symbolically)执行或通过模拟来执行。
在本文描述的各实施例中,一种方法可以是预测即将被处理的着色器指令并装载该指令以包括捕捉使用统计数据的代码。这些实施例是说明性的,而本领域的技术人员将意识到,可修改所描述的步骤的特定次序。例如,被修改的指令可在检索该纹理之前或之后被处理。本领域的技术人员还将意识到,所公开的方法可被应用到处理各种数据以及纹理的系统而不需要预先知晓该应用所使用的数据。
一旦着色器已被装载,则只要在使用原始着色器的地方,该系统可加载经装载的版本而不是原始着色器。命令缓冲器可被修改635以指向经装载的着色器并设置常量和GPU状态寄存器。在一些情况下,该系统还可将其他命令插入该命令缓冲器以将性能计数器或存储器的结果定向到期望位置。此外,其他命令可被用来初始化和/或还原在装载过程期间分配的任何寄存器(通用寄存器、常量、内插等)。
当该过程完成时,可提供最终报告,该最终报告指示特定纹理随时间使用的量。例如,对于每个所标识的纹理,可提供指示该纹理何时被使用的时间线。这种信息对于确定例如特定纹理是否从未被使用过(即,在所捕捉的序列中从未被显示)可能是有用的,或者可被使用的如此不频繁以至于开发者可考虑修改该应用以完全消除该纹理。在一个实施例中,在执行该应用后可搜索图像或纹理以确定对于使用数据的给定片段实际调用了哪些纹理。在另一实施例中,该系统可提供区分了优先次序的(prioritized)推荐,以基于在运行时的使用来节省纹理空间。
转向图7,示出用于跟踪纹理和其他数据资产的使用数据的示例性系统700。系统700可包括开发机器710和目标平台720。游戏应用730可在目标平台上装载并启动。纹理内容740可被装载到系统存储器中。可用API库750暴露的3D API来渲染纹理内容740。在游戏应用730的执行期间,各个纹理可被获取并用来渲染图形。
开发机器710上的查看器应用770可为开发者提供额外的接口来选择诸如使能并启动数据捕捉等可选项。3D API库750可执行任务,诸如如果纹理跟踪特征被使能,则唯一标识纹理。如果捕捉被使能,则3D API库750还可装载着色器和命令缓冲器并收集纹理使用数据。使用数据可被流传输到适当目标,诸如操作系统(OS)和/或诸如硬件驱动器等系统硬件。
当游戏应用730的执行完成时或当开发者终止数据捕捉时,由OS 760捕捉和收集的使用数据可被提供到查看器应用770并可由查看器应用770上的查看推荐特征780显示。取决于特定实施例,开发者可生成和/或打印各种报告,所述报告详细记载纹理内容740的使用。基于该使用数据,开发者可修改纹理内容740并在目标平台720上执行游戏应用730以进一步细化并优化纹理内容740。可迭代重复此过程,直到开发者对纹理内容740感到满意并最终化该内容以进行生产交付。
在一个实施例中,可自动模拟该迭代,以便开发者可快速预览改变的结果。附加地以及可任选地,可输出文件,该文件可被馈送到内容生成管道以自动执行修改。
因此,在各实施例中,着色器代码可被实时修改以收集纹理和其他数据资产的使用数据。此应用不仅对纹理是有用的,而且在其中不将关于资产的创建和删除通知给提供对数据资产的控制的系统或者该系统具有有限的信息的任何应用中也有用。通过生成唯一标识(诸如散列),可收集关于那些资产的使用的详细使用信息。
现在参考图8A,示出用于在用于使用共享资产来渲染图形的系统中跟踪共享资产的利用的示例性过程。所示出的操作中的一个或多个可被省略,而所示出的操作不暗示特定次序。在一个示例性方法中,过程800示出在渲染子系统的执行期间,确定用于由该渲染子系统处理所述共享资产中的一个的指令集已被请求。过程805示出装载该指令集以使得所述共享资产中的所述一个的唯一标识符和使用数据被该系统跟踪。在一个实施例中,装载可进一步包括添加计算每个纹理获取将检索的MIP的指令集。在另一实施例中,指示哪些mip图级别已被读取的数据可被存储。例如,可使用计数器来跟踪所述共享资产被使用的次数。附加地或可任选地,可使用计数器来跟踪纹理的特定区域被获取的次数。
在一些实施例中,可将标志(flag)与每个着色器相关联,其中所述标志指示该着色器是否在先前被装载过。附加地,装载可进一步包括当该标志指示该着色器对象在先前被装载过时指向先前装载的着色器的指针。在一个实施例中,装载可进一步包括分析该指令集以确定装载该指令集的可行性并当该指令集不能被装载时将该指令集标记为不可装载的。
在另一实施例中,类似资产获取指令集可被分组,并且类似资产获取指令的分组可被装载。
现在参考图8B,示出用于在用于使用共享资产来渲染图形的系统中跟踪并报告共享资产的利用的示例性过程。所示出的操作中的一个或多个可被省略,而所示出的操作不暗示特定次序。在一个示例性方法中,过程810示出接收请求过程已请求所述共享资产中的一个被渲染子系统处理的指示。过程815示出接收并存储包括所述共享资产中的所述一个的标识符和使用数据的信息。在一实施例中,当匹配资产被标识时,与所述共享资产中的所述一个相关联的记录可被更新820并且与系统时间相对应的时间戳可被存储825。在另一实施例中,可确定所述共享资产中的所述一个的唯一标识符830并且可创建包括所述使用数据的新纪录830。操作835示出根据时间来生成每个共享资产的信息的概述。
在一个实施例中,记录可包括与该标识符相关联的存储器位置的历史,所述历史包括在该存储器地址处被加载过的预定数量的资产。如同上面讨论的,该标识符可包括该共享资产的缩略图。在另一实施例中,该标识符可包括该共享资产的散列。
图9描绘了在用于使用该图像数据渲染图形的系统中跟踪和报告图像数据的利用的示例性系统。参考图9,系统900包括处理器910和存储器920。存储器920进一步包括在用于使用该图像数据渲染图形的系统中跟踪和报告图像数据的利用的计算机指令。
框922示出装载指令集以使得所述图像数据中的一个的唯一标识符和使用数据被该系统跟踪。框924示出根据时间来生成每个已使用的共享资产的使用的概述。在一个实施例中,可提供应用编程接口(API)以允许对图像数据的跟踪926。在各实施例中,该API可包括用于开始捕捉过程的接口和用于停止该捕捉过程的接口。当该捕捉过程被停止时,捕捉文件可被加载到查看器应用。在进一步实施例中,可生成每MIP的获取的交互图。附加地,可处理纹理使用数据并可生成改善图像数据的存储空间的使用的推荐的列表。
应该理解,此处描述的各种技术可以结合硬件或软件,或在适当时结合两者的组合来实现。因此,本公开的方法和装置或其某些方面或部分,可以采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中,当程序代码被加载至诸如计算机等机器并由其运行时,该机器成为用于实现本公开的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。一个或多个程序可以例如,通过使用API、可重用控件等来实现或利用结合本发明描述的过程。这样的程序优选地用高级过程语言或面向对象编程语言来实现,以与计算机系统通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。
尽管具体地参考其优选实施例来示出并描述了本发明,但本领域的技术人员可以理解,可以作出形式和细节上的各种改变而不脱离所附权利要求书中所述的本发明的范围。此外,尽管本发明的各元素可以用单数来描述或要求保护,但构想了复数,除非明确地规定了限于单数。
Claims (19)
1.一种用于在使用共享资产来渲染图形的系统中跟踪所述共享资产的利用的方法,其中所述共享资产被加载到计算机存储器中并由渲染子系统处理,所述方法包括:
在所述渲染子系统的执行期间,确定用于由所述渲染子系统处理所述共享资产中的一个共享资产的指令集已被请求;以及
装载所述指令集以使得所述一个共享资产的唯一标识符和使用数据被所述系统跟踪,所述装载包括解析所述指令集并且添加一个或多个跟踪命令,所述一个或多个跟踪命令用于跟踪正被访问的图形资产的身份。
2.如权利要求1所述的方法,其特征在于,所述渲染子系统包括图形处理单元,所述共享资产包括纹理,且所述指令集包括着色器。
3.如权利要求1所述的方法,其特征在于,使用计数器来跟踪所述共享资产被使用的次数。
4.如权利要求1所述的方法,其特征在于,使用计数器来跟踪纹理的特定区域被获取的次数。
5.如权利要求2所述的方法,其特征在于,还包括将标志与每个着色器相关联,其中所述标志指示所述着色器在先前被装载过,其中所述装载还包括当所述标志指示所述着色器对象在先前被装载过时提供指向先前装载的着色器的指针。
6.如权利要求1所述的方法,其特征在于,其中所述装载还包括分析所述指令集以确定装载所述指令集的可行性并且当所述指令集不能被装载时将所述指令集标记为不可装载的。
7.如权利要求1所述的方法,其特征在于,还包括将类似的资产获取指令集分组,其中所述装载还包括装载类似的资产获取指令的分组。
8.如权利要求1所述的方法,其特征在于,被所述系统跟踪还包括存储指示哪些mip图级别已被读取的数据。
9.如权利要求2所述的方法,其特征在于,所述装载还包括添加计算每个纹理获取将检索到的MIP的指令集。
10.如权利要求2所述的方法,其特征在于,所述装载还包括添加保存和还原被所述装载修改的任何状态的指令集。
11.一种用于在使用共享资产来渲染图形的系统中跟踪并报告所述共享资产的利用的方法,其中所述共享资产被加载到计算机存储器中并由渲染子系统处理,所述方法包括:
解析图形指令并且添加一个或多个跟踪命令,所述一个或多个跟踪命令用于跟踪正被访问的图形资产的身份;
接收请求过程已请求所述共享资产中的一个共享资产由所述渲染子系统处理的指示;
接收并存储包括所述一个共享资产的标识符和使用数据的信息,其中当匹配资产被标识时与所述一个共享资产相关联的记录被更新并且与系统时间相对应的时间戳被存储,而否则确定所述一个共享资产的唯一标识符并创建包括所述使用数据的新纪录;以及
根据时间来生成每个共享资产的所述信息的概述。
12.一种用于在使用图像数据渲染图形的系统中跟踪并报告所述图像数据的利用的方法,其中所述图像数据被加载到计算机存储器中并由图形处理单元处理,所述方法包括:
在所述图形处理单元的执行期间,装载指令集以使得所述图像数据中的一个图像数据的唯一标识符和使用数据被所述系统跟踪,所述装载包括解析所述指令集并且添加一个或多个跟踪命令,所述一个或多个跟踪命令用于跟踪正被访问的图形资产的身份;以及
根据时间来生成每个已使用的共享资产的使用的概述。
13.如权利要求12所述的方法,其特征在于,提供应用编程接口以允许对所述图像数据的跟踪。
14.如权利要求13所述的方法,其特征在于,所述应用编程接口包括用于开始捕捉过程的接口。
15.如权利要求14所述的方法,其特征在于,所述应用编程接口包括用于停止所述捕捉过程的接口,所述方法还包括在接收到停止捕捉的指示时将捕捉文件加载到查看器应用。
16.一种用于在使用图像数据渲染图形的系统中跟踪并报告所述图像数据的利用的计算设备,其中所述图像数据被加载到计算机存储器中并由图形处理单元处理,所述计算设备包括:
用于在所述图形处理单元的执行期间,装载指令集以使得所述图像数据中的一个图像数据的唯一标识符和使用数据被所述系统跟踪的装置,所述装载包括解析所述指令集并且添加一个或多个跟踪命令,所述一个或多个跟踪命令用于跟踪正被访问的图形资产的身份;以及
用于根据时间来生成每个已使用的共享资产的使用的概述的装置。
17.如权利要求16所述的计算设备,其特征在于,还包括用于提供应用编程接口以允许对所述图像数据的跟踪的装置。
18.如权利要求17所述的计算设备,其特征在于,所述应用编程接口包括用于开始捕捉过程的接口。
19.如权利要求18所述的计算设备,其特征在于,所述应用编程接口包括用于停止所述捕捉过程的接口,所述计算设备还包括用于在接收到停止捕捉的指示时将捕捉文件加载到查看器应用的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/576,548 US8872823B2 (en) | 2009-10-09 | 2009-10-09 | Automatic real-time shader modification for texture fetch instrumentation |
US12/576,548 | 2009-10-09 | ||
PCT/US2010/051959 WO2011044450A2 (en) | 2009-10-09 | 2010-10-08 | Automatic real-time shader modification for texture fetch instrumentation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102576470A CN102576470A (zh) | 2012-07-11 |
CN102576470B true CN102576470B (zh) | 2014-12-03 |
Family
ID=43854488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080044927.5A Expired - Fee Related CN102576470B (zh) | 2009-10-09 | 2010-10-08 | 用于纹理获取装载的自动实时着色器修改 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8872823B2 (zh) |
CN (1) | CN102576470B (zh) |
WO (1) | WO2011044450A2 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8151194B1 (en) * | 2008-03-26 | 2012-04-03 | Google Inc. | Visual presentation of video usage statistics |
US9117302B2 (en) | 2011-11-30 | 2015-08-25 | Qualcomm Incorporated | Switching between direct rendering and binning in graphics processing using an overdraw tracker |
US9652815B2 (en) * | 2012-09-11 | 2017-05-16 | Nvidia Corporation | Texel data structure for graphics processing unit programmable shader and method of operation thereof |
CN103974062B (zh) * | 2013-06-24 | 2018-10-26 | 福州瑞芯微电子股份有限公司 | 图像显示装置、图像显示系统和图像显示方法 |
US20150228106A1 (en) * | 2014-02-13 | 2015-08-13 | Vixs Systems Inc. | Low latency video texture mapping via tight integration of codec engine with 3d graphics engine |
US9804900B2 (en) * | 2014-05-30 | 2017-10-31 | Apple Inc. | Manipulating shaders with object-oriented programming |
US9773292B2 (en) * | 2014-06-26 | 2017-09-26 | Intel Corporation | Graphics workload submissions by unprivileged applications |
US20160012594A1 (en) * | 2014-07-10 | 2016-01-14 | Ditto Labs, Inc. | Systems, Methods, And Devices For Image Matching And Object Recognition In Images Using Textures |
CN104156150A (zh) * | 2014-07-22 | 2014-11-19 | 乐视网信息技术(北京)股份有限公司 | 显示图片的方法和装置 |
CN105302580B (zh) * | 2015-11-28 | 2019-04-23 | 武汉斗鱼网络科技有限公司 | 一种通过gpu纹理共享实现快速获取游戏图像的方法和系统 |
US10086289B2 (en) * | 2016-11-22 | 2018-10-02 | Sony Interactive Entertainment America Llc | Remastering by emulation |
US10593010B2 (en) * | 2017-12-13 | 2020-03-17 | Microsoft Technology Licensing, Llc | Techniques for capturing and executing graphics processing operations |
US10394680B2 (en) * | 2018-01-17 | 2019-08-27 | Microsoft Technology Licensing, Llc | Techniques for tracking graphics processing resource utilization |
US10546416B2 (en) * | 2018-03-02 | 2020-01-28 | Microsoft Technology Licensing, Llc | Techniques for modifying graphics processing unit (GPU) operations for tracking in rendering images |
CN110489083B (zh) * | 2018-05-14 | 2022-06-21 | 武汉斗鱼网络科技有限公司 | 一种纹理共享的方法、计算机设备和存储介质 |
US10981059B2 (en) * | 2019-07-03 | 2021-04-20 | Sony Interactive Entertainment LLC | Asset aware computing architecture for graphics processing |
CN115357516B (zh) * | 2022-10-19 | 2023-04-11 | 西安芯瞳半导体技术有限公司 | 一种渲染问题的调试方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5880737A (en) * | 1995-08-04 | 1999-03-09 | Microsoft Corporation | Method and system for accessing texture data in environments with high latency in a graphics rendering system |
US6373482B1 (en) * | 1998-12-23 | 2002-04-16 | Microsoft Corporation | Method, system, and computer program product for modified blending between clip-map tiles |
CN101425175A (zh) * | 2007-12-06 | 2009-05-06 | 威盛电子股份有限公司 | 着色器处理系统与方法 |
Family Cites Families (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0644278B2 (ja) * | 1984-03-27 | 1994-06-08 | 株式会社ニレコ | 画像解析による組織自動定量測定方法およびその装置 |
US6236405B1 (en) * | 1996-07-01 | 2001-05-22 | S3 Graphics Co., Ltd. | System and method for mapping textures onto surfaces of computer-generated objects |
US6426753B1 (en) * | 1999-07-01 | 2002-07-30 | Microsoft Corporation | Cache memory for high latency and out-of-order return of texture data |
US6724394B1 (en) * | 2000-05-31 | 2004-04-20 | Nvidia Corporation | Programmable pixel shading architecture |
US20030018694A1 (en) * | 2000-09-01 | 2003-01-23 | Shuang Chen | System, method, uses, products, program products, and business methods for distributed internet and distributed network services over multi-tiered networks |
US7154507B1 (en) * | 2000-10-02 | 2006-12-26 | Nvidia Corporation | System, method and computer program product for texture shading |
US6947047B1 (en) * | 2001-09-20 | 2005-09-20 | Nvidia Corporation | Method and system for programmable pipelined graphics processing with branching instructions |
US7031869B2 (en) * | 2001-12-28 | 2006-04-18 | Hewlett-Packard Development Company, L.P. | Method and apparatus for managing timestamps when storing data |
AU2003245713A1 (en) * | 2002-07-10 | 2004-01-23 | Harman Becker Automotive Systems Gmbh | System for texturizing electronic representations of objects |
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 |
US7176917B1 (en) * | 2002-08-09 | 2007-02-13 | Avid Technology, Inc. | Visual programming interface for a three-dimensional animation system for defining real time shaders using a real-time rendering engine application programming interface |
US6993185B2 (en) * | 2002-08-30 | 2006-01-31 | Matsushita Electric Industrial Co., Ltd. | Method of texture-based color document segmentation |
US20040046765A1 (en) * | 2002-09-06 | 2004-03-11 | Laurent Lefebvre | Gradient noise engine with shared memory |
US7062506B2 (en) * | 2003-01-24 | 2006-06-13 | The Cobalt Group, Inc. | Staged publication and management of dynamic webpages |
US20050140672A1 (en) * | 2003-02-18 | 2005-06-30 | Jeremy Hubbell | Shader editor and compiler |
US7091979B1 (en) * | 2003-08-29 | 2006-08-15 | Nvidia Corporation | Pixel load instruction for a programmable graphics processor |
US6912482B2 (en) * | 2003-09-11 | 2005-06-28 | Veritas Operating Corporation | Data storage analysis mechanism |
US7095418B2 (en) * | 2003-10-30 | 2006-08-22 | Sensable Technologies, Inc. | Apparatus and methods for texture mapping |
US7567252B2 (en) * | 2003-12-09 | 2009-07-28 | Microsoft Corporation | Optimizing performance of a graphics processing unit for efficient execution of general matrix operations |
US7170526B1 (en) * | 2004-01-26 | 2007-01-30 | Sun Microsystems, Inc. | Method and apparatus for redirecting the output of direct rendering graphics calls |
US7027062B2 (en) * | 2004-02-27 | 2006-04-11 | Nvidia Corporation | Register based queuing for texture requests |
US9047915B2 (en) * | 2004-04-09 | 2015-06-02 | Sony Corporation | Asset revision management in media production |
US20050259108A1 (en) * | 2004-05-21 | 2005-11-24 | Brett Chladny | System and method for dynamically generating images using repeatable textures |
US7184052B2 (en) * | 2004-06-18 | 2007-02-27 | Microsoft Corporation | Real-time texture rendering using generalized displacement maps |
US7339590B1 (en) * | 2004-09-02 | 2008-03-04 | Nvidia Corporation | Vertex processing unit supporting vertex texture mapping |
US6972769B1 (en) * | 2004-09-02 | 2005-12-06 | Nvidia Corporation | Vertex texture cache returning hits out of order |
US7466318B1 (en) * | 2005-04-13 | 2008-12-16 | Nvidia Corporation | Avoiding unnecessary uncovered texture fetches |
US7542043B1 (en) * | 2005-05-23 | 2009-06-02 | Nvidia Corporation | Subdividing a shader program |
US7830386B1 (en) * | 2005-06-17 | 2010-11-09 | Nvidia Corporation | Register transfer level simulation using a graphics processor |
US7483035B2 (en) * | 2005-07-07 | 2009-01-27 | Via Technologies, Inc. | Texture cache control using a data dependent slot selection scheme |
US7528843B1 (en) * | 2005-08-05 | 2009-05-05 | Nvidia Corporation | Dynamic texture fetch cancellation |
US7889922B2 (en) * | 2005-11-14 | 2011-02-15 | Siemens Medical Solutions Usa, Inc. | Method and system for histogram calculation using a graphics processing unit |
US7385611B1 (en) * | 2005-12-07 | 2008-06-10 | Nvidia Corporation | Decompression of block encoded texture data |
US7404059B1 (en) * | 2005-12-07 | 2008-07-22 | Nvidia Corporation | Parallel copying scheme for creating multiple versions of state information |
US7626591B2 (en) * | 2006-01-24 | 2009-12-01 | D & S Consultants, Inc. | System and method for asynchronous continuous-level-of-detail texture mapping for large-scale terrain rendering |
US8300059B2 (en) * | 2006-02-03 | 2012-10-30 | Ati Technologies Ulc | Method and apparatus for selecting a mip map level based on a min-axis value for texture mapping |
US20070200864A1 (en) * | 2006-02-28 | 2007-08-30 | Tucker Amy R | Method and system for gathering per-frame image statistics while preserving resolution and runtime performance in a real-time visual simulation |
GB0607763D0 (en) * | 2006-04-20 | 2006-05-31 | Ibm | Capturing image data |
US7692660B2 (en) * | 2006-06-28 | 2010-04-06 | Microsoft Corporation | Guided performance optimization for graphics pipeline state management |
US8111260B2 (en) * | 2006-06-28 | 2012-02-07 | Microsoft Corporation | Fast reconfiguration of graphics pipeline state |
US7551176B2 (en) * | 2006-08-24 | 2009-06-23 | Via Technologies, Inc. | Systems and methods for providing shared attribute evaluation circuits in a graphics processing unit |
US8674987B2 (en) * | 2006-09-19 | 2014-03-18 | Caustic Graphics, Inc. | Dynamic ray population control |
US7859548B1 (en) * | 2006-10-19 | 2010-12-28 | Nvidia Corporation | Offloading cube map calculations to a shader |
US8176265B2 (en) * | 2006-10-30 | 2012-05-08 | Nvidia Corporation | Shared single-access memory with management of multiple parallel requests |
US7605822B1 (en) * | 2006-12-04 | 2009-10-20 | Nvidia Corporation | Method and system for performing texture mapping across adjacent texture maps |
US7876328B2 (en) * | 2007-02-08 | 2011-01-25 | Via Technologies, Inc. | Managing multiple contexts in a decentralized graphics processing unit |
US20080263103A1 (en) * | 2007-03-02 | 2008-10-23 | Mcgregor Lucas | Digital asset management system (DAMS) |
US20080266287A1 (en) * | 2007-04-25 | 2008-10-30 | Nvidia Corporation | Decompression of vertex data using a geometry shader |
US20090021513A1 (en) * | 2007-07-18 | 2009-01-22 | Pixblitz Studios Inc. | Method of Customizing 3D Computer-Generated Scenes |
US7886116B1 (en) * | 2007-07-30 | 2011-02-08 | Nvidia Corporation | Bandwidth compression for shader engine store operations |
JP2010540002A (ja) * | 2007-08-20 | 2010-12-24 | ダブル・フュージョン・インコーポレイテッド | 後で統合されたコードを使用するソフトウエア・エグゼクタブルからの出力の独立に定義された変更 |
US7876329B2 (en) * | 2007-09-10 | 2011-01-25 | Via Technologies, Inc. | Systems and methods for managing texture data in a computer |
US8219975B2 (en) * | 2007-10-26 | 2012-07-10 | Microsoft Corporation | Real-time analysis of performance data of a video game |
US8189004B2 (en) * | 2007-11-09 | 2012-05-29 | Lucasfilm Entertainment Company Ltd. | Translating Renderman shading language code |
US7999819B2 (en) * | 2007-11-20 | 2011-08-16 | Via Technologies, Inc. | Systems and methods for managing texture descriptors in a shared texture engine |
US20090267956A1 (en) * | 2008-04-28 | 2009-10-29 | Playxpert, Llc | Systems, methods and articles for video capture |
US8810590B2 (en) * | 2008-07-11 | 2014-08-19 | Advanced Micro Devices, Inc. | Method and apparatus for spatial binning on a GPU and global path planning to avoid spatially binned objects |
US8369564B2 (en) * | 2009-06-30 | 2013-02-05 | Apple Inc. | Automatic generation and use of region of interest and domain of definition functions |
US8731373B2 (en) * | 2009-06-30 | 2014-05-20 | Rovi Technologies Corporation | Managing and editing stored media assets |
US9324175B2 (en) * | 2009-09-11 | 2016-04-26 | Nvidia Corporation | Memory coherency in graphics command streams and shaders |
-
2009
- 2009-10-09 US US12/576,548 patent/US8872823B2/en not_active Expired - Fee Related
-
2010
- 2010-10-08 WO PCT/US2010/051959 patent/WO2011044450A2/en active Application Filing
- 2010-10-08 CN CN201080044927.5A patent/CN102576470B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5880737A (en) * | 1995-08-04 | 1999-03-09 | Microsoft Corporation | Method and system for accessing texture data in environments with high latency in a graphics rendering system |
US6373482B1 (en) * | 1998-12-23 | 2002-04-16 | Microsoft Corporation | Method, system, and computer program product for modified blending between clip-map tiles |
CN101425175A (zh) * | 2007-12-06 | 2009-05-06 | 威盛电子股份有限公司 | 着色器处理系统与方法 |
Also Published As
Publication number | Publication date |
---|---|
US8872823B2 (en) | 2014-10-28 |
WO2011044450A3 (en) | 2011-08-04 |
CN102576470A (zh) | 2012-07-11 |
US20110084964A1 (en) | 2011-04-14 |
WO2011044450A2 (en) | 2011-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102576470B (zh) | 用于纹理获取装载的自动实时着色器修改 | |
CN102549547B (zh) | 纹理的自动运行时标识 | |
US10937067B2 (en) | System and method for item inquiry and information presentation via standard communication paths | |
WO2022116759A1 (zh) | 图像渲染方法、装置、计算机设备和存储介质 | |
CN103999128B (zh) | 具有命令处理器的图形处理单元 | |
US7596536B2 (en) | System, method and computer program product for dynamically measuring properties of objects rendered and/or referenced by an application executing on a computing device | |
US20070126749A1 (en) | System, method and computer program product for dynamically identifying, selecting and extracting graphical and media objects in frames or scenes rendered by a software application | |
US9928637B1 (en) | Managing rendering targets for graphics processing units | |
CN105184847B (zh) | 3d游戏渲染引擎的渲染方法 | |
US20070129990A1 (en) | System, method and computer program product for dynamically serving advertisements in an executing computer game based on the entity having jurisdiction over the advertising space in the game | |
CN102067165A (zh) | 跨计算应用程序和设备可用的用户化身 | |
KR102632194B1 (ko) | 자원 할당 방법 및 장치, 디바이스, 및 저장 매체 | |
US20080192063A1 (en) | Managing Multiple Contexts in a Decentralized Graphics Processing Unit | |
US20230360321A1 (en) | Shader binding management in ray tracing | |
CN111476910B (zh) | 智能建筑bim的3d模型显示方法、系统、介质及显示终端 | |
US20130127849A1 (en) | Common Rendering Framework and Common Event Model for Video, 2D, and 3D Content | |
CN112346935A (zh) | 渲染耗时的获取、显示方法、性能监控方法、装置及设备 | |
JP2024061779A (ja) | グラフィック処理のためのアセット認識コンピューティングアーキテクチャ | |
KR20240067843A (ko) | 가상 공간 3d 컨텐츠의 스트리밍 서비스 제공 방법 및 이를 위한 장치 | |
CN103460292B (zh) | 定义立体视觉图形对象的场景图形 | |
EP3770863B1 (en) | Multiplex pixel distribution for multi-machine rendering | |
CN115511886B (zh) | 利用gpu实现远程目标统计的方法、装置及存储介质 | |
CN117786951A (zh) | 数字孪生系统的页面显示方法及计算设备 | |
CN117788609A (zh) | 界面图元的拾取方法、装置、设备及存储介质 | |
Howse | Illusion SDK: An Augmented Reality Engine for Flash 11 |
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: 20150429 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150429 Address after: Washington State Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC Address before: Washington State Patentee before: Microsoft Corp. |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141203 |
|
CF01 | Termination of patent right due to non-payment of annual fee |