[go: up one dir, main page]

HK1228552B - A method and system for interactive graphics streaming - Google Patents

A method and system for interactive graphics streaming

Info

Publication number
HK1228552B
HK1228552B HK17102036.3A HK17102036A HK1228552B HK 1228552 B HK1228552 B HK 1228552B HK 17102036 A HK17102036 A HK 17102036A HK 1228552 B HK1228552 B HK 1228552B
Authority
HK
Hong Kong
Prior art keywords
graphics
client device
generated
server
data
Prior art date
Application number
HK17102036.3A
Other languages
Chinese (zh)
Other versions
HK1228552A1 (en
Inventor
亚当‧比里亚德
Original Assignee
英国神话游戏有限公司
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 英国神话游戏有限公司 filed Critical 英国神话游戏有限公司
Publication of HK1228552A1 publication Critical patent/HK1228552A1/en
Publication of HK1228552B publication Critical patent/HK1228552B/en

Links

Description

用于交互式图形流传输的方法和系统Method and system for interactive graphics streaming

技术领域Technical Field

本发明是交互式图形流传输领域。更具体地但并非排他性地,本发明涉及来自服务器上的应用的用于在远程客户端上由GPU显示的交互式图形流传输。The present invention is in the field of interactive graphics streaming. More particularly, but not exclusively, the present invention relates to interactive graphics streaming from an application on a server for display by a GPU on a remote client.

背景技术Background Art

在交互式图形应用(如电脑游戏)领域中,用户通常下载或通过物理介质获得这些应用并且在他们的设备上本地执行这些应用。In the field of interactive graphical applications, such as computer games, users typically download or obtain these applications via physical media and execute them locally on their devices.

然而,交互式图形应用的一些提供商期望在服务器处执行图形应用并跨网络将经渲染的图形从应用流传输至用户用于在用户设备上显示的灵活性和控制力。However, some providers of interactive graphics applications desire the flexibility and control of executing the graphics application at a server and streaming the rendered graphics from the application across a network to the user for display on the user's device.

采用这种对图形内容进行流传输的形式的现有技术的当前状态为在专业服务器上执行应用,该专门服务器提供了CPU、存储器、后备存储器和图形处理单元(GPU),该图形处理单元用于将该应用的输出渲染到像素的帧缓冲区中。然后,所产生的像素被检索并被编码成传统的视频流(例如h.264),并且被发送至客户端。The current state of the art for this form of streaming graphical content is to execute the application on a dedicated server that provides a CPU, memory, backing store, and a graphics processing unit (GPU) that renders the application's output into a frame buffer of pixels. The resulting pixels are then retrieved and encoded into a traditional video stream (e.g., h.264) and sent to the client.

这种方法存在许多缺点。首先,服务器必须极其强大,足以同时为许多用户运行计算和图形密集型应用;这导致高电力使用(并因此还导致高冷却成本),这是决定商业可行性的重大问题。This approach has many disadvantages. First, the server must be extremely powerful enough to run computationally and graphics-intensive applications for many users simultaneously; this results in high power usage (and therefore high cooling costs), which is a significant issue in determining commercial viability.

其次,现有的视频标准(如h.264)是固有地‘有损’,意味着它们在编码过程中会丢失图像保真度。可以通过增加流的带宽需求来减少压缩假象,但是存在对进入用户住处的带宽的硬限制以及对从服务器共同定位的数据中心出来的带宽量的软限制。这意味着这些系统必须接受将压缩假象引入将可行的内容流中。Second, existing video standards (such as h.264) are inherently 'lossy,' meaning they lose image fidelity during the encoding process. Compression artifacts can be reduced by increasing the bandwidth requirements of the stream, but there are hard limits on the bandwidth going into the user's premises and soft limits on the amount of bandwidth going out of the data center where the server is co-located. This means that these systems must accept the introduction of compression artifacts into the content stream to be viable.

第三,实时视频压缩是巨大的计算密集型过程,其中,所产生的流的带宽需求是已经分配的压缩处理量的函数。这增加了服务器负载和系统等待时间。Third, real-time video compression is a hugely computationally intensive process, where the bandwidth requirements of the resulting stream are a function of the amount of compression processing already allocated. This increases server load and system latency.

第四,成千上万的消费者设备(例如,平板计算机、移动设备和智能电视)越来越多地包含强大的GPU,当所有的应用图形处理发生在服务器上时,这些GPU是远远没有被充分利用的资源。Fourth, thousands of consumer devices (e.g., tablets, mobile devices, and smart TVs) increasingly contain powerful GPUs, which are a vastly underutilized resource when all application graphics processing occurs on the server.

第五,随着现在许多设备提供2560*1600像素并且“4k智能电视”(4096像素宽显示器)即将到来,显示分辨率正在快速地增长。基于像素的压缩系统(如h.264)意味着:要得到这些显示所需要的保真度意味着要增加经编码的视频流的带宽。Fifth, display resolutions are increasing rapidly, with many devices now offering 2560*1600 pixels and "4K smart TVs" (4096-pixel wide displays) just around the corner. Pixel-based compression systems (such as h.264) mean that achieving the fidelity required for these displays requires increasing the bandwidth of the encoded video stream.

因此,如果可以开发这样一种交互式图形流系统则将是所期望的:在该系统中,在服务器上执行应用并且在客户端设备上由本地GPU渲染图形。Therefore, it would be desirable if an interactive graphics streaming system could be developed in which applications are executed on a server and graphics are rendered by a local GPU on a client device.

在P·艾泽特(P Eisert)与P·费希特勒(P Fechteler)的以下文章中描述了一个这样的系统:“计算机图形的低时延流传输(Low Delay Streaming of ComputerGraphics)”,第十五届IEEE图像处理国际会议(IEEE International Conference onImage Processing),ICIP 2008。然而,在这篇文章中描述的方法包括在客户端处消隐服务器存储器。这种消隐是带宽密集型的,并且甚至可以不必消隐整个图形数据(例如,特定客户端设备的分辨率限制可能不支持高分辨率纹理)。One such system is described in the following article by P. Eisert and P. Fechteler: "Low Delay Streaming of Computer Graphics", 15th IEEE International Conference on Image Processing, ICIP 2008. However, the approach described in this article involves blanking the server memory at the client. This blanking is bandwidth intensive and may not even require blanking the entire graphics data (for example, the resolution limitations of a particular client device may not support high-resolution textures).

MPEG-4标准描述了将压缩的几何网格和纹理传输到远程设备并且可以被适配成提供一种交互式图形流传输系统。然而,要针对单独的交互式应用实现MPEG-4将需要对该应用进行修改。此外,MPEG-4标准将导致针对每个新流潜在地将图形数据从服务器重传到客户端,导致服务器与客户端之间的带宽的低效率使用。The MPEG-4 standard describes the transmission of compressed geometric meshes and textures to remote devices and can be adapted to provide an interactive graphics streaming system. However, implementing MPEG-4 for a single interactive application would require modifications to the application. Furthermore, the MPEG-4 standard would potentially require retransmission of graphics data from the server to the client for each new stream, resulting in inefficient use of bandwidth between the server and the client.

因此,期望一种交互式图形流传输系统,该系统提供了对服务器与客户端之间的带宽的改善的使用,可适应不同的客户端设备能力,并且极少需要或者不需要对交互式图形应用进行重新编程。Therefore, what is desired is an interactive graphics streaming system that provides improved use of bandwidth between a server and a client, that can accommodate varying client device capabilities, and that requires little or no reprogramming of the interactive graphics application.

本发明的目的是提供一种满足以上期望同时克服现有技术的缺点或至少提供有用的替代方案的用于交互式图形流传输的方法和系统。It is an object of the present invention to provide a method and system for interactive graphics streaming that meets the above expectations while overcoming the shortcomings of the prior art or at least providing a useful alternative.

发明内容Summary of the Invention

根据本发明的第一方面,提供了一种将交互式计算机图形从服务器流传输至客户端设备的方法,该方法包括:According to a first aspect of the present invention, there is provided a method of streaming interactive computer graphics from a server to a client device, the method comprising:

a)拦截从应用传输去往在该服务器处的图形处理单元(GPU)的多条图形指令;a) intercepting a plurality of graphics instructions transmitted from an application to a graphics processing unit (GPU) at the server;

b)在该服务器处对这些图形指令进行处理以生成图形数据;b) processing the graphics instructions at the server to generate graphics data;

c)在该服务器处至少针对该图形数据中的部分图形数据生成索引信息;c) generating, at the server, index information for at least a portion of the graphic data;

d)代替该图形数据将该索引信息传输至客户端设备;d) transmitting the index information to the client device instead of the graphic data;

e)利用该索引信息提取存储在该客户端设备处的相应图形数据;并且e) extracting corresponding graphic data stored at the client device using the index information; and

f)使用该相应图形数据在该客户端设备处的图形处理单元(GPU)处渲染计算机图形。f) rendering computer graphics at a graphics processing unit (GPU) at the client device using the corresponding graphics data.

该图形数据可以包括图形状态、静态资源和动态资源的集合中的一者或多者。The graphics data may include one or more of a graphics state, a collection of static resources, and dynamic resources.

可以对在该图形数据内的多个对象进行散列以生成该索引信息。A plurality of objects within the graphics data may be hashed to generate the index information.

该动态资源可以包括顶点缓冲区,并且可以针对该顶点缓冲区的多个经修改的部分生成索引信息。该顶点缓冲区可以被划分成多个块,并且针对多个经修改的块的运行生成索引信息。可以针对多个经修改的块的修正运行生成索引信息,从而使得该运行从在该运行中的第一个块内的第一个经修改的位延伸到在该运行中的最后一个块内的最后一个经修改的位。该顶点缓冲区可以被划分成对应于多个顶点字段的多个条带,并且针对多个经修改的条带可以生成索引信息。The dynamic resource may include a vertex buffer, and index information may be generated for a plurality of modified portions of the vertex buffer. The vertex buffer may be divided into a plurality of blocks, and index information may be generated for a run of the plurality of modified blocks. Index information may be generated for a modified run of the plurality of modified blocks such that the run extends from a first modified bit within a first block in the run to a last modified bit within a last block in the run. The vertex buffer may be divided into a plurality of stripes corresponding to a plurality of vertex fields, and index information may be generated for the plurality of modified stripes.

该第一方面的方法可以进一步包括在该服务器与该客户端之间同步该图形数据的步骤。当该图形数据包括纹理时,可以仅同步所使用的这些纹理的数据。该客户端设备的配置文件可以确定图形数据同步。该客户端设备的该配置文件可以通过在该客户端设备处为多个较高分辨率图形分配多个较低分辨率图形来确定图形数据同步。The method of the first aspect may further include synchronizing the graphics data between the server and the client. When the graphics data includes textures, only the data of the used textures may be synchronized. A configuration file of the client device may determine synchronization of the graphics data. The configuration file of the client device may determine synchronization of the graphics data by allocating multiple lower-resolution graphics to multiple higher-resolution graphics at the client device.

可以在该客户端设备处的显示器上显示这些经渲染的图形。该客户端设备可以响应于这些显示的图形接收用户输入,并且该用户输入可以被传输回至在该服务器上正执行的应用。可以使用UDP至少部分地传输该用户输入。可以在该服务器上合成状态转换事件。The rendered graphics can be displayed on a display at the client device. The client device can receive user input in response to the displayed graphics, and the user input can be transmitted back to the application executing on the server. The user input can be transmitted at least in part using UDP. State transition events can be synthesized on the server.

该应用可以是由用户从多个应用中选择出来用于在该服务器上执行的。The application may be selected by a user from a plurality of applications for execution on the server.

根据本发明的进一步的方面,提供了一种用于对交互式计算机图形流传输的系统,包括:According to a further aspect of the present invention, there is provided a system for transmitting interactive computer graphics streams, comprising:

服务器,该服务器被配置成用于拦截从应用传输去往在该服务器处的图形处理单元(GPU)的多条图形指令、处理这些图形指令以生成图形数据、至少针对该图形数据中的部分图形数据生成索引信息、代替该图形数据将该索引信息传输至客户端设备;以及a server configured to intercept a plurality of graphics instructions transmitted from an application to a graphics processing unit (GPU) at the server, process the graphics instructions to generate graphics data, generate index information for at least a portion of the graphics data, and transmit the index information to a client device in place of the graphics data; and

客户端设备,该客户端设备被配置成用于利用该索引信息提取存储在该客户端设备处的相应图形数据并且使用该相应图形数据在该客户端设备处的图形处理单元(GPU)处渲染多个计算机图形。A client device is configured to extract corresponding graphics data stored at the client device using the index information and render a plurality of computer graphics at a graphics processing unit (GPU) at the client device using the corresponding graphics data.

附图说明BRIEF DESCRIPTION OF THE DRAWINGS

现在将仅通过举例并且参考附图描述本发明的实施例,在附图中:Embodiments of the present invention will now be described, by way of example only, and with reference to the accompanying drawings, in which:

图1:示出了展示根据本发明的实施例的系统的硬件图;FIG1 shows a hardware diagram illustrating a system according to an embodiment of the present invention;

图2:示出了展示根据本发明的实施例的处理流水线的框图;FIG2 shows a block diagram illustrating a processing pipeline according to an embodiment of the present invention;

图3:示出了展示根据本发明的实施例的方法的流程图;FIG3 shows a flow chart illustrating a method according to an embodiment of the present invention;

图4:示出了展示根据本发明的实施例的在客户端播放器与服务器之间的交互的框图;FIG4 shows a block diagram illustrating the interaction between a client player and a server according to an embodiment of the present invention;

图5:示出了展示根据本发明的实施例的拦截图形指令的流程图;FIG5 shows a flowchart illustrating interception of graphics instructions according to an embodiment of the present invention;

图6:示出了展示根据本发明的实施例创建散列键集合的流程图;FIG6 shows a flowchart illustrating creation of a hash key set according to an embodiment of the present invention;

图7:示出了展示根据本发明的实施例的图形命令压缩的流程图;并且FIG7 shows a flowchart illustrating compression of graphics commands according to an embodiment of the present invention; and

图8:示出了展示根据本发明的实施例的顶点缓冲区块的散列法的框图。FIG8 : shows a block diagram illustrating hashing of vertex buffer blocks according to an embodiment of the present invention.

具体实施方式DETAILED DESCRIPTION

本发明提供了一种用于将交互式图形从服务器流传输至客户端设备的方法和系统。The present invention provides a method and system for streaming interactive graphics from a server to a client device.

该系统采集在服务器上执行的应用的输出并且使用语义驱动的压缩来使能在客户端上使用其自身的图形处理单元(GPU)实时地本地渲染该输出。客户端设备上的用户输入被反馈至服务器以使能与正执行的应用进行交互。The system collects the output of applications executing on the server and uses semantically driven compression to enable local rendering of the output in real time on the client using its own graphics processing unit (GPU).User input on the client device is fed back to the server to enable interaction with the executing application.

驱动应用的数据以及对该数据的处理在服务器上保持安全,同时图形结果被流传输用于在客户端设备上进行渲染。The data that drives the application and the processing of that data remain secure on the server, while the graphical results are streamed for rendering on the client device.

这使得客户端设备能够利用其GPU来将处理成本从服务器上转移,同时保留客户端-服务器架构的安全性优势。This enables client devices to leverage their GPUs to shift processing costs from the server while retaining the security advantages of a client-server architecture.

在图1中,示出了根据本发明的实施例的交互式图形流传输系统100。In FIG. 1 , an interactive graphics streaming system 100 according to an embodiment of the present invention is shown.

系统100包括服务器101和至少一个客户端设备102。服务器101和客户端设备102可以经由通信网络103进行通信。The system 100 includes a server 101 and at least one client device 102. The server 101 and the client device 102 can communicate via a communication network 103.

服务器101可以包括中央处理单元104,该中央处理单元被配置成用于执行应用模块、拦截器模块、处理模块和通信模块。The server 101 may include a central processing unit 104 configured to execute an application module, an interceptor module, a processing module, and a communication module.

客户端设备102可以包括中央处理单元105,该中央处理单元被配置成用于执行第二处理模块、被配置成用于存储索引图形数据的本地存储器106和被配置成渲染图形的图形处理单元(GPU)107。客户端设备102还可以包括用户输入108和显示设备109。显示设备109可以被配置成用于向用户显示经渲染的图形。客户端设备102可以被进一步配置成用于响应于显示的图形接收来自用户的输入并且将该输入传输至服务器101。The client device 102 may include a central processing unit 105 configured to execute the second processing module, a local memory 106 configured to store indexed graphics data, and a graphics processing unit (GPU) 107 configured to render graphics. The client device 102 may also include a user input 108 and a display device 109. The display device 109 may be configured to display rendered graphics to the user. The client device 102 may be further configured to receive input from the user in response to the displayed graphics and transmit the input to the server 101.

在图2中,将描述根据本发明的实施例的图形处理流水线200。In FIG. 2 , a graphics processing pipeline 200 according to an embodiment of the present invention will be described.

示出了应用模块201。应用模块201可以是应用的标准软件部署,该应用响应于用户输入而生成图像,如计算机游戏应用。There is shown an application module 201. The application module 201 may be a standard software implementation of an application that generates images in response to user input, such as a computer game application.

应用模块201生成用于预期传输至本地图形处理单元(GPU)的图形指令。The application module 201 generates graphics instructions intended for transmission to a local graphics processing unit (GPU).

这些指令可以被拦截器模块202拦截,并且,因此有用地,应用模块201不必被修改成在本发明的图形处理系统的实施例中发挥作用。These instructions may be intercepted by the interceptor module 202 and, therefore, usefully, the application module 201 does not have to be modified to function in embodiments of the graphics processing system of the present invention.

拦截器模块202可以将所有这些指令转向至处理模块203。因此,执行应用模块201的装置不需要图形处理单元(GPU)或不需要使用图形处理单元。The interceptor module 202 can redirect all of these instructions to the processing module 203. Therefore, the device executing the application module 201 does not need a graphics processing unit (GPU) or need not use a graphics processing unit.

处理模块203可以处理图形指令以生成图形数据,例如图形状态、静态资源或动态资源。The processing module 203 may process graphics instructions to generate graphics data, such as graphics states, static resources, or dynamic resources.

然后,处理模块203可以利用此图形数据来生成索引信息。Then, the processing module 203 may use the graphic data to generate index information.

索引信息可以经由通信模块204被传输至远程设备。The index information may be transmitted to a remote device via the communication module 204 .

在远程设备上的第二处理模块205可以接收此索引信息并且可以在远程设备处从本地存储器中检索对应于索引信息的图形数据。The second processing module 205 on the remote device may receive this index information and may retrieve the graphics data corresponding to the index information from the local memory at the remote device.

此图形数据可以在远程设备处在图形处理单元(GPU)处被渲染器206利用以渲染图形。This graphics data may be utilized by a renderer 206 at a graphics processing unit (GPU) at the remote device to render graphics.

在图3中,将描述将交互式图形从服务器流传输至客户端设备的方法300。In FIG3 , a method 300 of streaming interactive graphics from a server to a client device will be described.

在步骤301中,在服务器上执行的交互式图形应用生成用于图形处理单元(GPU)的图形指令。In step 301 , an interactive graphics application executing on a server generates graphics instructions for a graphics processing unit (GPU).

在步骤302中,这些指令例如被拦截器模块拦截。In step 302, these instructions are intercepted, for example, by an interceptor module.

在步骤303中,这些被拦截的指令例如被处理模块处理以生成图形数据。图形数据可以包括图形状态、静态资源和/或动态资源。In step 303, the intercepted instructions are processed by a processing module to generate graphic data. The graphic data may include graphic states, static resources, and/or dynamic resources.

在步骤304中,生成针对图形数据的索引信息。例如,在图形数据中的对象可以被散列以生成散列码。In step 304, index information for the graphic data is generated. For example, objects in the graphic data may be hashed to generate a hash code.

在一个实施例中,当动态资源是顶点缓冲区时,该顶点缓冲区可以被分区并且被散列以减少变化之后的对于整个顶点缓冲区的不必要的重传。例如,顶点缓冲区可以被划分成多个块,并且可以针对多个经修改的块的每个运行生成散列。块的运行可以是块的修正运行,从而使得生成从该运行的第一个块的第一改变到该运行的最后一个块的最后改变的散列。In one embodiment, when the dynamic resource is a vertex buffer, the vertex buffer can be partitioned and hashed to reduce unnecessary retransmissions of the entire vertex buffer after changes. For example, the vertex buffer can be divided into multiple blocks, and a hash can be generated for each run of multiple modified blocks. A run of blocks can be a modified run of blocks, such that a hash is generated from the first change of the first block of the run to the last change of the last block of the run.

在步骤305中,代替图形数据将此索引信息传输至客户端设备。In step 305 , this index information is transmitted to the client device instead of the graphic data.

在步骤306中,索引信息用于在客户端设备处检索相应的图形数据。In step 306 , the index information is used to retrieve corresponding graphics data at the client device.

在步骤307中,此图形数据被传输至在客户端设备处的图形处理单元(GPU)以对图形进行渲染。In step 307, this graphics data is transmitted to a graphics processing unit (GPU) at the client device for rendering of the graphics.

在步骤308中,可以向用户显示图形。In step 308, the graphic may be displayed to the user.

在步骤309中,用户可以提供输入,该输入被反馈至在服务器上正执行的交互式图形应用。In step 309, the user may provide input that is fed back to the interactive graphics application executing on the server.

在一个实施例中,该方法进一步包括在服务器与客户端之间同步图形数据的步骤。在同步过程中,只有一部分图形数据可以被传输。例如,mipmap可以在传输之前被从图形数据中删除并且在客户端处重新生成,可以基于客户端设备的分辨率能力代替高分辨率纹理发送降低分辨率的纹理,并且可以将实际利用的纹理数据传输至客户端设备。In one embodiment, the method further includes the step of synchronizing graphics data between the server and the client. During synchronization, only a portion of the graphics data may be transmitted. For example, mipmaps may be removed from the graphics data prior to transmission and regenerated at the client, reduced-resolution textures may be sent instead of high-resolution textures based on the resolution capabilities of the client device, and actual utilized texture data may be transmitted to the client device.

将参照图4至图8描述本发明的一个实施例。One embodiment of the present invention will be described with reference to FIG. 4 to FIG. 8 .

此实施例准许服务器提供可以从客户端设备远程调用的多个应用。在服务器上运行的应用逻辑以及该应用的图形输出通过互联网被流传输至客户端设备进行本地渲染。This embodiment allows the server to provide multiple applications that can be called remotely from the client device. The application logic running on the server and the graphical output of the application are streamed to the client device over the Internet for local rendering.

将理解的是,所描述的与此实施例有关的各种特征可以被全部实现以呈现该系统或者可以被部分地实现以呈现潜在的不太有效的系统。It will be understood that the various features described in connection with this embodiment may be implemented in full to present this system or may be implemented in part to present a potentially less efficient system.

如图4所示,进程开始于正在客户端设备(PC、平板计算机、智能电视机、移动设备)上运行的客户端播放器应用程序。此播放器应用程序使用TCP/IP连接到在服务器上运行提供当前可用应用的“转盘(Carousel)”。选择应用并且利用切换至该启动的应用的TCP连接发起针对客户端的会话,因此该应用可以继续与客户端进行通信。As shown in Figure 4, the process begins with a client player application running on a client device (PC, tablet, smart TV, mobile device). This player application uses TCP/IP to connect to a "carousel" running on a server that displays currently available applications. An application is selected and a session is initiated for the client using a TCP connection that switches to the launched application, allowing the application to continue communicating with the client.

这个实施例需要无损下行通信。因此,TCP或无损UDP协议可以有利地用于下行通信,并且(有损但是低时延的)UDP协议可以用于上行客户端输入通信。上行客户端输入(如定位器设备、键盘、操纵杆)可以全部以一种“绝对形式”与正在服务器上合成的实际“状态转换事件”一起被发送以用于正运行的应用。这种方法可以准许丢掉UDP数据包而不漏掉改变应用行为的潜在重要的状态转换事件。例如,鼠标随着按钮被按压移动,而不是鼠标在按钮没有被按压的情况下移动。This embodiment requires lossless downstream communication. Therefore, TCP or lossless UDP protocols can be advantageously used for downstream communication, and the (lossy but low-latency) UDP protocol can be used for upstream client input communication. Upstream client input (such as locator devices, keyboards, joysticks) can all be sent in an "absolute form" along with the actual "state transition events" being synthesized on the server for the running application. This approach can allow UDP packets to be dropped without missing potentially important state transition events that change the behavior of the application. For example, the mouse moves as the button is pressed, rather than the mouse moving when the button is not pressed.

在正常操作中,应用调用3D图形驱动程序的边际效应(side effect)将会是对写入帧缓存中并且被显示的像素的计算。如图5所示,这个实施例的过程通过利用代理对在服务器上运行的现有应用进行干预来运作,该代理将图形命令流以及所有相关联的资源引导到本发明的系统中。In normal operation, the side effect of an application calling a 3D graphics driver will be the calculation of pixels that are written to the frame buffer and displayed. As shown in Figure 5, the process of this embodiment operates by intervening in an existing application running on a server using an agent that directs the graphics command stream and all associated resources to the system of the present invention.

该代理管理将数据传输到对数据进行渲染并创建当前图像所在的远程客户端设备。The proxy manages the transmission of the data to the remote client device where it is rendered and the current image is created.

从应用流到3d图形系统的数据量通常很大,并且如果不借助以下描述的语义驱动的压缩处理则难以传递至远程客户端。The amount of data streamed from an application to a 3d graphics system is typically large and difficult to deliver to a remote client without the aid of a semantically driven compression process as described below.

本发明的这个实施例通过利用从应用流至图形系统的数据表示什么以及怎样以一种有效的方式处理该数据的知识来运作。这个数据流可以被视为用于在远程设备上的扩展状态、演变状态和边际效应(通常是GPU命令)。This embodiment of the present invention works by leveraging the knowledge of what the data flowing from the application to the graphics system represents and how to process that data in an efficient manner. This data stream can be viewed as extending state, evolving state, and side effects (usually GPU commands) on the remote device.

这个实施例使得观察到:当以30Hz生成帧时,图形资产的工作集以更加适度的速度演变,因为通常存在几何帧间相干。发明人还观察到:因为该数据流是由在某种粒度程度上具有固定的调度序列的应用所生成的,这可以用于避免传输之前发送至客户端设备的数据。This embodiment allows the observation that when generating frames at 30 Hz, the working set of graphics assets evolves at a more moderate rate, since there is generally geometric inter-frame coherence. The inventors also observed that because the data stream is generated by an application with a fixed scheduling sequence at a certain granularity, this can be used to avoid transmitting data previously sent to the client device.

当客户端连接到服务时,作为握手协议的一部分,其为服务器给出:When a client connects to a service, as part of the handshake protocol, it gives the server:

·客户端配置文件,该客户端配置文件详细描述其图形能力和所请求分辨率。这些图形能力用于确保代理仿效客户端能够执行的。A client profile that details its graphics capabilities and requested resolution. These graphics capabilities are used to ensure that the proxy emulates what the client is capable of performing.

·散列键集合,其中,每个键唯一地标识客户端已本地缓存的数据的blob。这个缓存可以不确定地从CDN(内容传递网络)或从可移除介质(如USB闪盘)由之前的会话填充。A set of hash keys, where each key uniquely identifies a blob of data that the client has cached locally. This cache can be populated indefinitely from a CDN (Content Delivery Network) or from removable media (such as a USB flash drive) from previous sessions.

散列键集合确保服务器将总是使用散列键(也被称为数据摘要)而不是重发数据,从而减小了带宽需求。图6示出了通用技术。The hash key set ensures that the server will always use the hash key (also known as the data digest) instead of resending the data, thereby reducing bandwidth requirements. Figure 6 shows the general technique.

散列键通常比其所表示的数据要小得多,通常是64位或128位键。然而,通过保持到最近使用的数据blob的散列键的索引的较小附加缓存(例如,256个条目),可以进一步减小带宽。这允许减小“发送资源更新”命令的大小。Hash keys are typically much smaller than the data they represent, typically 64-bit or 128-bit keys. However, bandwidth can be further reduced by maintaining a small additional cache (e.g., 256 entries) of indices to the hash keys of recently used data blobs. This allows the size of "Send Resource Update" commands to be reduced.

图形命令Graphics Commands

如图7所示,图形命令随着其由应用下发而被采集并且被延迟直到尽可能晚才使用无损熵编码(如霍夫曼编码)被编码、相对于客户端历史图形命令被去重并且使用滑窗字典被压缩。As shown in FIG7 , graphics commands are captured as they are issued by the application and delayed until as late as possible to be encoded using lossless entropy coding (such as Huffman coding), deduplicated relative to the client's historical graphics commands, and compressed using a sliding window dictionary.

用于发射命令流的触发器是边际效应命令(如绘制命令或帧结束命令)的表现,在该点处已经被应用改变的所有相关状态被分辨以确保其在远程设备上被同步。The trigger for firing a command stream is the manifestation of a side-effect command (such as a draw command or an end-of-frame command), at which point all relevant state that has been changed by the application is resolved to ensure that it is synchronized on the remote device.

应用图形命令帧所需要的数据量(当明显地是应用依赖型时)通常很低,因为在当前帧中所使用的图形命令(但不必是图形参数)与前一帧的图形命令非常相似。The amount of data required to apply a graphics command frame (when clearly application dependent) is typically low, since the graphics commands (but not necessarily the graphics parameters) used in the current frame are very similar to the graphics commands of the previous frame.

分辨改变的状态Identifying Changed States

存在多种类型的用于实时图形中的状态,并且每个状态可以被区别处理:There are several types of states used in real-time graphics, and each state can be handled differently:

·图形状态Graphics state

·静态资源Static resources

·动态资源Dynamic resources

图形状态Graphics State

图形状态包括控制客户端图形系统操作的所有状态。其包括渲染状态(RenderState)和杂项固定功能控制(例如,视口大小(Viewport size)、帧缓冲区清除颜色)以及着色器和着色器常量。通过逐渐消隐服务器-客户端状态来处理这些状态,以减少不必要的传输以及由图形应用使用的进入自定义代码中的包装公共渲染状态突发传送——例如,当创建新的待使用纹理时,几乎所有图形程序还设定缩小倍数过滤和放大倍数过滤以及包装模式。所有这些可以被压缩到单个低开销命令中。The graphics state includes all states that control the operation of the client graphics system. This includes the render state (RenderState) and miscellaneous fixed-function controls (e.g., viewport size, framebuffer clear color), as well as shaders and shader constants. These states are handled by gradually fading server-client state to reduce unnecessary transfers and bursts of wrapped public render state into custom code used by graphics applications—for example, when creating a new texture to use, almost all graphics programs also set the downscaling and upscaling filtering and wrapping mode. All of this can be compressed into a single low-overhead command.

着色器常量(也称为均匀性)是由图形应用使用以对其着色器代码进行参数的方法。其作为具有N个4元组的线性寄存器文件呈现给该应用,其中,N通常大于128。这个寄存器文件以任何该应用觉得合适的方式被使用,意味着本发明的这个实施例需要仔细处理这个文件以确保例如并非每次使用着色器时都传输整个寄存器文件。许多过程可以被用于减小带宽:Shader constants (also called uniforms) are a method used by graphics applications to parameterize their shader code. They are presented to the application as a linear register file with N 4-tuples, where N is typically greater than 128. This register file is used in any way the application sees fit, meaning that embodiments of the present invention require careful processing of this file to ensure, for example, that the entire register file is not transferred every time a shader is used. A number of procedures can be used to reduce bandwidth:

·标识常用值,如0.0和1.0Identify common values, such as 0.0 and 1.0

·有损重编码至更低的精度(例如半浮点数和有范围整数)Lossy re-encoding to lower precision (e.g. half-float and ranged integers)

·每个着色器地消隐寄存器文件以减少抖动Per-shader blanking register files to reduce jitter

·游程长度编码变化Run-length encoding changes

静态资源Static resources

静态资源的生命周期为使得:一旦被创建,这些静态资源就被简单地引用作为图形处理的一部分,直到这些静态资源不再被需要时对其进行处置。The lifecycle of static resources is such that, once created, they are simply referenced as part of the graphics processing until they are no longer needed, at which time they are disposed of.

针对静态资产,这是以直接的方式运作的,因为应用对于资产做出的任何读/写都可以被干预并且散列的内容可以对照散列键集合被检查。For static assets, this works in a straightforward manner, as any reads/writes made by the application to the asset can be intercepted and the contents of the hash can be checked against the set of hash keys.

作为标准3d图形API(应用程序编程接口)的一部分,当应用与图形资源进行交互时,该应用必须提供指示其意图的标志。这些标志被规则的图形驱动器用来优化本地机器的性能。As part of the standard 3D graphics API (application programming interface), when an application interacts with a graphics resource, it must provide flags indicating its intent. These flags are used by regular graphics drivers to optimize performance on the local machine.

在这个实施例中,可以重新改变标志的用途以帮助标识可能不变的资源。在当前实施例中,如果资源被标记为“WRITE_ONLY”并且已经涉及这个资源的所有存储器,则可以猜测这是静态资源——例如,静态几何网格。此静态资源可以被散列、进行散列键集合检查并且被可选择地传递至客户端设备。In this embodiment, the flag can be repurposed to help identify resources that are likely to remain unchanged. In the current embodiment, if a resource is marked as "WRITE_ONLY" and all memory for this resource has been referenced, it can be assumed that this is a static resource - for example, a static geometry mesh. This static resource can be hashed, checked against a hash key set, and optionally delivered to the client device.

如上所述,着色器代码永远是静态的并且进行散列键集合探测。客户端设备使用不同的着色器语言,因此可以在服务器上使用自动的着色器译码功能以在散列之前将用HLSL写的着色器转换成用GLSL写的着色器。As mentioned above, shader code is always static and performs hash key set detection. Client devices use different shader languages, so automatic shader decoding can be used on the server to convert shaders written in HLSL to shaders written in GLSL before hashing.

同样地,顶点声明描述了顶点缓冲区的布局是静态的。Likewise, the vertex declaration describing the vertex buffer layout is static.

大多数的纹理也是静态资产,但是造成其是大型资源的问题。当前实施例通过以下方式减轻这个问题:Most textures are also static assets, but this poses a problem of being large resources. The current embodiment mitigates this problem by:

·只传输实际使用的纹理。进一步细化可以是通过检查几何纹理坐标来标识实际使用的纹理部分,该坐标将纹理图集的区域指定在地图上。Only transmit textures that are actually used. A further refinement could be to identify the parts of the texture that are actually used by examining the geometry's texture coordinates, which specify the area of the texture atlas on the map.

·控制代理图形驱动器的能力以减小将被从应用接受的表观最小纹理尺寸。这利用了以下事实:在应用可以基于用户的图形驱动器的特征和性能改变保真度的一般要求下,图形应用被设计成用于在广泛的性能配置文件上运行。通过改变代理驱动器能力,应用可被间接地控制。Control the capabilities of the proxy graphics driver to reduce the apparent minimum texture size that will be accepted from the application. This takes advantage of the fact that graphics applications are designed to run on a wide range of performance profiles, with applications generally requiring varying fidelity based on the characteristics and performance of the user's graphics driver. By changing the proxy driver capabilities, the application can be indirectly controlled.

·将在其中可以在客户端上生成mipmap的纹理从顶层纹理中标识出来从而减少33%的发送数据量。进一步细化可以是:从确定实际使用纹理的哪个mipmap的之前的游戏会话中收集数据。对于3d内容而言,具有比运行时需要的分辨率高得多的分辨率的纹理并不少见。Identifying textures where mipmaps can be generated on the client from the top-level texture reduces the amount of data sent by 33%. A further refinement could be to collect data from previous game sessions to determine which mipmap of a texture is actually used. For 3D content, it is not uncommon to have textures with a much higher resolution than required at runtime.

·使用散列键集合来替代更低分辨率资产更好地匹配于客户端设备能力。这可以被驱除出客户端配置文件并且在每个应用上执行。Use hash key sets to replace lower resolution assets that better match client device capabilities. This can be driven out of the client configuration file and performed on a per-application basis.

动态资源Dynamic Resources

和静态资源一样,3d应用经常具有随时间演变的资源,并且这些3d应用造成了针对带宽受限制的客户端设备的挑战。最常见的动态资源编辑是使用被称为顶点缓冲区的包含几何信息的特殊缓冲区。这个顶点缓冲区的格式灵活并且由之前声明的顶点声明定义,该顶点声明描述了顶点缓冲区的不同字段和偏移,使得图形硬件可以解释数据。As with static resources, 3D applications often have resources that evolve over time, and these 3D applications pose challenges for bandwidth-constrained client devices. The most common way to edit dynamic resources is to use a special buffer called a vertex buffer that contains geometric information. The format of this vertex buffer is flexible and is defined by a previously declared vertex declaration that describes the different fields and offsets of the vertex buffer so that the graphics hardware can interpret the data.

由应用动态地更新的资源使用锁定/解锁范式以确保数据、图形硬件的消费者以及数据、应用的生产者不发生冲突。Resources that are dynamically updated by applications use a lock/unlock paradigm to ensure that consumers of data, the graphics hardware, and producers of data, the applications, do not conflict.

对于3d应用而言,锁定包含几何结构的顶点缓冲区、做出改变并且然后使用那个数据来绘制显示的某个元素很常见。锁定API一般提供用于指示顶点缓冲区的哪个部分将被编辑的参数,然而,这些参数经常由应用为整个缓冲区设定,因为该应用与锁定操作达成的“协定”仅仅是保证不改变由图形硬件正在使用的数据。It's common for 3D applications to lock a vertex buffer containing geometry, make changes, and then use that data to draw some element of the display. Locking APIs typically provide parameters that indicate which portion of the vertex buffer will be edited; however, these parameters are often set by the application for the entire buffer, since the application's "agreement" with the locking operation is simply to not change data currently in use by the graphics hardware.

这个问题可以通过在应用与顶点缓冲区之间引入散列的锁定缓冲区来解决。正如本发明的其他部分,可以利用关于如何从已经被声明的先前结构中处理顶点缓冲区的信息以及关于如何在实践中使用顶点缓冲区的经验知识。This problem can be solved by introducing a hashed lock buffer between the application and the vertex buffer.As with other parts of the invention, information about how to process vertex buffers from previously declared structures and empirical knowledge about how vertex buffers are used in practice can be exploited.

散列的锁定缓冲区将顶点缓冲区分割成固定长度的块。在当前实施例中,使用1024字节块,但是这可以出于性能原因被调节。每个块追踪其是否是“污染的”(已经被改变并因此将需要与客户端设备同步)、其是否可以是“干净的”(已经被同步、应用是否曾经可以重写该数据)以及在该污染块中改变是从哪里开始的。The hashed lock buffer splits the vertex buffer into fixed-length blocks. In the current embodiment, 1024-byte blocks are used, but this can be adjusted for performance reasons. Each block tracks whether it is "dirty" (has been changed and therefore will need to be synchronized with the client device), whether it can be "clean" (has been synchronized, whether the application can ever overwrite the data), and where in the dirty block the change started.

随着应用执行锁定-编辑-解锁操作,每个块的此元数据被累积。在因为数据将要被绘制命令使用而必须对其进行解析时,客户端设备必须与服务器同步。This metadata is accumulated for each block as the application performs lock-edit-unlock operations.When the data must be parsed because it is to be used by a drawing command, the client device must synchronize with the server.

为了确保在散列键集合中获得匹配,必须精确地标识出变化的数据的相同运行。标识包括在内的运行将产生不同的散列并因此不允许避免发送大量数据。当前实施例使用污染块的运行来识别需要更新的区域。To ensure a match is obtained in the hash key set, the same run of changed data must be accurately identified. Identifying the included runs will produce different hashes and therefore does not allow to avoid sending large amounts of data. The current embodiment uses runs of dirty blocks to identify areas that need to be updated.

通过使用第一个块的开始以及最后一个块的结束进一步细化这些区域,其中,数据不同于产生的“污染块的修正运行”。此外,使用确保以正确的粒度处理数据的当前有效的顶点声明,也就是说,因为前几个字节恰好没有不同,所以散列并非开始于顶点结构的中间。通过使用顶点声明,此实施例回退到完整顶点的开始并且在完整顶点的末尾完成。These regions are further refined by using the start of the first block and the end of the last block where the data differs, resulting in a "corrected run of dirty blocks." Furthermore, using currently valid vertex declarations ensures that the data is processed at the correct granularity, i.e., the hash does not begin in the middle of the vertex structure because the first few bytes just don't differ. By using vertex declarations, this embodiment wraps around to the start of the complete vertex and finishes at the end of the complete vertex.

下一个问题是,对于图形应用而言,在顶点缓冲区中交叉存储不同的顶点数据类型是常见且被鼓励的。然而,并非更新顶点的所有字段也是常见的。例如,顶点颜色和顶点纹理坐标可以是常量,但是顶点的位置是变化的。The next problem is that for graphics applications, it is common and encouraged to store different vertex data types in the vertex buffer. However, it is not common to update all fields of the vertex. For example, the vertex color and vertex texture coordinates can be constant, but the vertex position can vary.

(伪码)顶点声明可能看起来如此:A (pseudocode) vertex declaration might look like this:

当污染块的修正运行可以被散列并且该系统的这种实施例将运行时,可以在每个条带的基础上在用于处理污染块的修正运行的操作中通过使用顶点声明来进一步减小带宽。When a fixup run for a polluted block can be hashed and such an embodiment of the system will operate, bandwidth can be further reduced by using vertex declarations in the operations for processing the fixup run for a polluted block on a per-stripe basis.

也就是说,该系统可以跨过顶点缓冲区(选择性地压缩)并且将相似类型的数据散列到一起,使得在此示例中该系统为每个顶点具有的3个字段生成3个散列。结果是该系统将在键集合中找到颜色条带以及纹理坐标条带并且不需要将这些条带发送至客户端设备。当且仅当该系统还未看到顶点位置之前,将需要发送变化的顶点位置。例如,对于循环动画而言,这将用匹配的散列快速地填充键集合。That is, the system can go across the vertex buffer (optionally compressed) and hash similar types of data together, so that in this example the system generates three hashes for the three fields that each vertex has. The result is that the system will find the color strip and the texture coordinate strip in the key set and will not need to send those strips to the client device. A changing vertex position will need to be sent if and only if the system has not seen that vertex position before. For example, for a looping animation, this will quickly fill the key set with matching hashes.

缓冲区重用Buffer reuse

在当前实施例中,该系统对微软DirectX 3d图形API进行干预并且利用从标志参数中得获得的附加语义洞悉,该标志参数是当该应用锁定顶点缓冲区以及由微软支持的“最佳实践”调用序列时提供的。In the current embodiment, the system interfaces with the Microsoft DirectX 3D graphics API and exploits additional semantic insights gained from flag parameters provided when the application locks vertex buffers and a "best practices" calling sequence supported by Microsoft.

顶点缓冲区锁定的常见用例是用动态生成的几何结构逐渐填充缓冲区,直到该缓冲区被填满并且然后从头再次开始。为了确保图形硬件可以继续全速运作,图形API引进针对该应用的2个附加标志:NO_OVERWRITE和DISCARD。A common use case for vertex buffer locking is to gradually fill a buffer with dynamically generated geometry until the buffer is full and then start again from the beginning. To ensure that the graphics hardware can continue to operate at full speed, the graphics API introduces two additional flags for this application: NO_OVERWRITE and DISCARD.

NO_OVERWRITE意味着该应用承诺永不重写其之前已经写入缓冲区中的任何数据。这个承诺的原因在于图形硬件可以在使用存储器映像、直接存储器存取(DMA)或存取此数据的任何其他手段时保持自信并且保证不过时。NO_OVERWRITE means that the application promises to never overwrite any data it has previously written to the buffer. The reason for this promise is so that the graphics hardware can remain confident and future-proof when using memory mapping, direct memory access (DMA), or any other means of accessing this data.

DISCARD意味着该应用指示缓冲区是“一次性写入”并且随后将不再从中读取。这个承诺的原因在于其允许当应用填充新的缓冲区时并且当缓冲区是解锁时图形硬件继续在现有缓冲区上运作、安静地交换驱动器内部的缓冲区并且处置已知其将永远不再被需要的其他缓冲区。DISCARD means that the application indicates that the buffer is "write once" and will not be read from it subsequently. The reason for this commitment is that it allows the graphics hardware to continue operating on existing buffers while the application fills new buffers and while buffers are unlocked, quietly swapping buffers inside the driver and disposing of other buffers that it knows will never be needed again.

鼓励应用开发人员通过用图形数据逐渐填充NO_OVERWRITE缓冲区、提取其一些部分来一起使用这两个标志。当达到不能再将数据装入缓冲区中的点时,开发人员用DISCARD标志锁定该缓冲区并且从该缓冲区的开始再次开始填充。这个系统允许图形硬件以最高的效率运作。Application developers are encouraged to use these two flags together by gradually filling the NO_OVERWRITE buffer with graphics data, extracting portions of it. When the point is reached where no more data can fit into the buffer, the developer locks the buffer with the DISCARD flag and begins filling it again from the beginning. This system allows the graphics hardware to operate at maximum efficiency.

如图8所示,本发明的这个实施例利用这个知识来在针对OVERWRITE锁定的相同缓冲区极有可能被关联之后在DISCARD缓冲区的开始处标识该系统何时检测到块的短污染运行。在DISCARD缓冲区中的块的此短污染运行将很可能不与散列键集合匹配并且需要进行发送。This embodiment of the invention uses this knowledge to identify when the system detects a short dirty run of blocks at the beginning of the DISCARD buffer after the same buffer locked for OVERWRITE is most likely associated, as shown in Figure 8. This short dirty run of blocks in the DISCARD buffer will most likely not match the hash key set and will need to be sent.

因此,新的DISCARD缓冲区运行可以被当做在缓冲区结尾处的前一运行的继续从而确保散列键集合匹配。Therefore, a new DISCARD buffer run can be treated as a continuation of the previous run at the end of the buffer to ensure that the hash key sets match.

本发明的一些实施例的潜在优点在于:Potential advantages of some embodiments of the present invention are:

a)服务器上不需要专业高耗电GPU并且因此可以使用一般的服务器。这进而意味着每个服务器的用户数量可以更高,从而减小运行成本。a) No specialized, power-hungry GPU is required on the server, and therefore standard servers can be used. This in turn means the number of users per server can be higher, reducing operating costs.

b)本发明可以是分辨率无关的,并且不像基于像素的视频压缩,本发明可以在不增加流带宽需求的情况下以高分辨率进行播放。b) The present invention can be resolution independent and, unlike pixel-based video compression, can play back at high resolutions without increasing streaming bandwidth requirements.

c)对于以高分辨率运行的一些应用,带宽需求可以极低(<1Mbs),因为依靠了压缩,该压缩利用了对关于什么被压缩了的知晓。c) For some applications running at high resolutions, bandwidth requirements can be extremely low (<1 Mbs) due to reliance on compression that exploits knowledge of what is being compressed.

d)本发明可以不需要对现有可执行应用的改变,并且因此不需要访问用于修改的源代码,因此可以在现有的和遗留的软件上被使用。d) The present invention may not require changes to existing executable applications and therefore does not require access to source code for modification and can therefore be used on existing and legacy software.

e)可以将任意的新内容实时注入流中以将其重新用于新的设备和平台。例如,针对虚拟按钮的覆盖当在平板计算机上运行时可以被创建、围绕内容的标语广告可以被引入、并且用于将广告插入视频游戏的虚拟世界内部的图像可以被替换。e) Arbitrary new content can be injected into the stream in real time to repurpose it for new devices and platforms. For example, overlays for virtual buttons can be created when running on a tablet computer, banner ads around content can be introduced, and images used to insert ads into the virtual world of a video game can be replaced.

f)可以收集来自用户的细粒度资源使用信息以帮助细化哪里的资产被保持在CDN(内容传递网络)上并且为了未来的用户将冗余数据从流中去除。f) Fine-grained resource usage information from users can be collected to help refine where assets are kept on the CDN (Content Delivery Network) and remove redundant data from the stream for future users.

虽然已经通过其实施例的描述说明了本发明,并且虽然已经相当详细地描述了实施例,但是申请人并不意在将所附权利要求书的范围限定或者以任何方式限制于这些细节。本领域技术人员将易于想到附加优势和修改。因此,本发明在其较宽的方面并不限于示出和描述的特定细节、代表性装置和方法以及说明性示例。因此,可以在不偏离申请人的总体发明概念的精神或范围的情况下偏离这些细节。Although the present invention has been illustrated by the description of its embodiments, and although the embodiments have been described in considerable detail, applicants do not intend that the scope of the appended claims be limited or in any way restricted to such details. Additional advantages and modifications will readily occur to those skilled in the art. Therefore, the present invention in its broader aspects is not limited to the specific details, representative apparatus and methods, and illustrative examples shown and described. Accordingly, departures from such details may be made without departing from the spirit or scope of applicants' overall inventive concept.

Claims (23)

1.一种用于将交互式计算机图形从服务器流传输至客户端设备的方法,该方法包括:1. A method for streaming interactive computer graphics from a server to a client device, the method comprising: 在该服务器处执行应用,该应用生成用于该服务器中的图形处理单元GPU的图形指令;The application is executed on the server, and the application generates graphics instructions for the graphics processing unit (GPU) in the server. 在该服务器处拦截生成的图形指令,该生成的图形指令传输自该应用;The server intercepts the generated graphical commands, which are transmitted from the application. 在该服务器处对拦截的图形指令进行处理以生成图形数据;The intercepted graphical commands are processed at the server to generate graphical data; 在执行该应用用于生成其他图形指令的过程中,在不将全部的生成的图形数据传输至该客户端设备的情况下,对该生成的图形数据的部分和存储在该客户端设备处的图形数据进行同步,其中,基于该客户端设备的配置文件来执行同步,该配置文件标识了该客户端设备的图形能力;During the execution of the application's instructions to generate other graphics, without transmitting all the generated graphics data to the client device, a portion of the generated graphics data and the graphics data stored on the client device are synchronized, wherein the synchronization is performed based on the client device's configuration file, which identifies the client device's graphics capabilities. 在该服务器处至少针对该生成的图形数据中的部分图形数据生成索引信息;At the server, at least a portion of the generated graphic data is indexed. 代替该生成的图形数据中的至少部分图形数据将该索引信息传输至该客户端设备;The index information is transmitted to the client device in place of at least a portion of the generated graphic data. 在该客户端设备处利用该索引信息提取存储在该客户端设备处的相应图形数据;并且The index information is used at the client device to retrieve the corresponding graphic data stored at the client device; and 使用提取的相应图形数据在该客户端设备处的图形处理单元GPU处渲染计算机图形。The extracted graphics data is used to render computer graphics at the graphics processing unit (GPU) on the client device. 2.如权利要求1所述的方法,其中,该图形数据包括图形状态、静态资源和动态资源的集合中的一者或多者。2. The method of claim 1, wherein the graphics data includes one or more of a set of graphics states, static resources, and dynamic resources. 3.如权利要求1所述的方法,其中,在该图形数据中的多个对象被散列以生成该索引信息。3. The method of claim 1, wherein multiple objects in the graphic data are hashed to generate the index information. 4.如权利要求2所述的方法,其中,这些动态资源包括顶点缓冲区。4. The method of claim 2, wherein the dynamic resources include vertex buffers. 5.如权利要求4所述的方法,其中,针对该顶点缓冲区的多个部分生成该索引信息。5. The method of claim 4, wherein the index information is generated for multiple portions of the vertex buffer. 6.如权利要求5所述的方法,其中,该顶点缓冲区被划分成多个块,并且针对多个块的运行生成索引信息。6. The method of claim 5, wherein the vertex buffer is divided into multiple blocks, and index information is generated for the operation of the multiple blocks. 7.如权利要求6所述的方法,其中,针对该多个块的修正运行生成该索引信息,从而使得该修正运行从在该运行中的第一个块内的第一个经修改的位延伸到在该修正运行中的最后一个块内的最后一个经修改的位。7. The method of claim 6, wherein the index information is generated by a correction run for the plurality of blocks such that the correction run extends from the first modified bit in the first block of the run to the last modified bit in the last block of the correction run. 8.如权利要求4所述的方法,其中,该顶点缓冲区被划分成对应于多个顶点字段的多个条带,并且针对多个条带生成该索引信息。8. The method of claim 4, wherein the vertex buffer is divided into multiple stripes corresponding to multiple vertex fields, and the index information is generated for the multiple stripes. 9.如权利要求1所述的方法,其中,该生成的图形数据包括低分辨率纹理和高分辨率纹理,并且基于该客户端设备的分辨率能力代替该高分辨率纹理发送该低分辨率纹理。9. The method of claim 1, wherein the generated graphics data includes a low-resolution texture and a high-resolution texture, and the low-resolution texture is sent in place of the high-resolution texture based on the resolution capability of the client device. 10.如权利要求1所述的方法,其中,当该图形数据包括纹理时,仅同步包括在该图形数据中的纹理中的以下纹理:被用来在该客户端设备的GPU处渲染计算机图形的纹理。10. The method of claim 1, wherein, when the graphics data includes textures, only the following textures included in the graphics data are synchronized: textures used to render computer graphics at the GPU of the client device. 11.如权利要求1所述的方法,其中,该客户端设备的配置文件包括该客户端设备所请求的分辨率,并且基于该客户端设备所请求的分辨率来确定该生成的图形数据中被同步的部分。11. The method of claim 1, wherein the configuration file of the client device includes the resolution requested by the client device, and the synchronized portion of the generated graphics data is determined based on the resolution requested by the client device. 12.如权利要求11所述的方法,其中,该同步包括:代替该生成的图形数据中所包括的高分辨率图形,传输低分辨率图形。12. The method of claim 11, wherein the synchronization comprises: transmitting a low-resolution graphic instead of a high-resolution graphic included in the generated graphic data. 13.如权利要求1所述的方法,其中,这些经渲染的计算机图形被显示在该客户端设备处的显示器上。13. The method of claim 1, wherein the rendered computer graphics are displayed on a display at the client device. 14.如权利要求13所述的方法,其中,该客户端设备响应于这些显示的计算机图形接收用户输入,并且该用户输入被传输回至在该服务器上的该正执行中的应用。14. The method of claim 13, wherein the client device receives user input in response to the displayed computer graphics, and the user input is transmitted back to the executing application on the server. 15.如权利要求14所述的方法,其中,可以使用用户数据报协议UDP至少部分地传输该用户输入。15. The method of claim 14, wherein the user input may be transmitted at least partially using the User Datagram Protocol (UDP). 16.如权利要求15所述的方法,其中,在该服务器上合成多个状态转换事件。16. The method of claim 15, wherein a plurality of state transition events are synthesized on the server. 17.如权利要求1所述的方法,其中,该应用是由用户从多个应用中选择出来用于在该服务器上执行的。17. The method of claim 1, wherein the application is selected by the user from a plurality of applications for execution on the server. 18.如权利要求1所述的方法,其中,存储在该客户端设备处的图形数据包括:接收自该服务器的图形数据的部分,和在该客户端设备处生成的图形数据。18. The method of claim 1, wherein the graphics data stored at the client device comprises: a portion of graphics data received from the server, and graphics data generated at the client device. 19.一种用于对交互式计算机图形进行流传输的系统,该系统包括:19. A system for streaming interactive computer graphics, the system comprising: 客户端设备;以及Client devices; and 服务器,该服务器被配置成用于:The server is configured to be used for: 执行应用,该应用生成用于该服务器中的图形处理单元GPU的图形指令,The application is executed, which generates graphics instructions for the graphics processing unit (GPU) in the server. 拦截生成的图形指令,该生成的图形指令传输自该应用,处理拦截的图形指令以生成图形数据,The system intercepts generated graphics commands transmitted from the application, processes these commands to generate graphics data. 在执行该应用用于生成其他图形指令的过程中,在不将全部的生成的图形数据传输至该客户端设备的情况下,对该生成的图形数据的部分和存储在该客户端设备处的图形数据进行同步,其中,基于该客户端设备的配置文件来执行同步,该配置文件标识了该客户端设备的图形能力;During the execution of the application's instructions to generate other graphics, without transmitting all the generated graphics data to the client device, a portion of the generated graphics data and the graphics data stored on the client device are synchronized, wherein the synchronization is performed based on the client device's configuration file, which identifies the client device's graphics capabilities. 至少针对该生成的图形数据中的部分图形数据生成索引信息,At least a portion of the generated graphic data should be indexed. 代替该生成的图形数据中的至少部分图形数据将该索引信息传输至该客户端设备,The index information is transmitted to the client device in place of at least a portion of the generated graphic data. 其中,该客户端设备被配置成用于利用该索引信息提取存储在该客户端设备处的相应图形数据并且使用提取的相应图形数据在该客户端设备处的图形处理单元GPU处渲染多个计算机图形。The client device is configured to use the index information to extract the corresponding graphics data stored on the client device and to use the extracted graphics data to render multiple computer graphics on the graphics processing unit (GPU) of the client device. 20.如权利要求19所述的系统,其中,该生成的图形数据包括具有顶点缓冲区的动态资源,该顶点缓冲区被划分成多个块,生成该图形数据包括修改之前生成的块中的部分块,并且针对经修改的块生成该索引信息。20. The system of claim 19, wherein the generated graphics data includes a dynamic resource having a vertex buffer divided into multiple blocks, generating the graphics data includes modifying a portion of the previously generated blocks, and generating the index information for the modified blocks. 21.一种服务器,该服务器被配置成用于如权利要求19所述的系统。21. A server configured for use in the system of claim 19. 22.一种客户端设备,该客户端设备被配置成用于如权利要求19所述的系统。22. A client device configured for use with the system of claim 19. 23.一种用于对交互式计算机图形进行流传输的系统,该系统包括:23. A system for streaming interactive computer graphics, the system comprising: 客户端设备;以及Client devices; and 服务器,该服务器被配置成用于:执行应用,该应用生成用于该服务器中的图形处理单元GPU的图形指令;拦截生成的图形指令,该生成的图形指令传输自该应用;处理拦截的图形指令以生成图形数据;在不将全部的生成的图形数据传输至该客户端设备的情况下,对该生成的图形数据的部分和存储在该客户端设备处的图形数据进行同步,其中,基于该客户端设备的配置文件来执行同步,该配置文件标识了该客户端设备的图形能力;至少针对该生成的图形数据中的部分图形数据生成索引信息;代替该生成的图形数据中的至少部分图形数据将该索引信息传输至该客户端设备,A server configured to: execute an application that generates graphics instructions for a graphics processing unit (GPU) in the server; intercept the generated graphics instructions transmitted from the application; process the intercepted graphics instructions to generate graphics data; synchronize a portion of the generated graphics data with graphics data stored on the client device without transmitting all of the generated graphics data to the client device, wherein the synchronization is performed based on a configuration file of the client device that identifies the graphics capabilities of the client device; generate index information for at least a portion of the generated graphics data; and transmit the index information to the client device in place of at least a portion of the generated graphics data. 其中,该客户端设备被配置成用于利用该索引信息提取存储在该客户端设备处的相应图形数据;并且使用提取的相应图形数据在该客户端设备处的图形处理单元GPU处渲染计算机图形,其中,存储在该客户端设备处的图形数据包括:接收自该服务器的图形数据的部分,和基于该服务器处生成的信息在该客户端设备处生成的图形数据。The client device is configured to extract corresponding graphics data stored on the client device using the index information; and to render computer graphics on the graphics processing unit (GPU) of the client device using the extracted graphics data. The graphics data stored on the client device includes: a portion of the graphics data received from the server, and graphics data generated on the client device based on information generated on the server.
HK17102036.3A 2014-01-21 2015-01-21 A method and system for interactive graphics streaming HK1228552B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US61/929,538 2014-01-21

Publications (2)

Publication Number Publication Date
HK1228552A1 HK1228552A1 (en) 2017-11-03
HK1228552B true HK1228552B (en) 2021-02-11

Family

ID=

Similar Documents

Publication Publication Date Title
CN105917382B (en) Method and system for interactive graphics streaming
Shi et al. A survey of interactive remote rendering systems
US10229651B2 (en) Variable refresh rate video capture and playback
JP5060489B2 (en) Multi-user terminal service promotion device
CN105637886B (en) Server from graphic user interface to client and client for providing
JP2014531142A (en) Script-based video rendering
US20140344469A1 (en) Method of in-application encoding for decreased latency application streaming
EP3646611A1 (en) Systems and methods of orchestrated networked application services
CN115190345B (en) Coordinated control method for display media, client device and storage medium
CN116636224A (en) System and method for alternative networking application services
EP2804143A1 (en) System and method for forwarding a graphics command stream
Hou et al. A cloud gaming system based on NVIDIA GRID GPU
US11887239B2 (en) Integration of 3rd party geometry for visualization of large data sets system and method
US12118639B2 (en) Method and system for interactive graphics streaming
KR102825746B1 (en) MPD Chaining in Live CMAF/DASH Players with W3C Media Sources and Encrypted Extensions
CN117370696A (en) Method and device for loading applet page, electronic equipment and storage medium
HK1228552B (en) A method and system for interactive graphics streaming
HK1228552A1 (en) A method and system for interactive graphics streaming
KR101779527B1 (en) Web server for processing 360° VR video having high resolution and method thereof
US12482178B2 (en) Method of generating frames for a display device
WO2024139724A1 (en) Image processing method and apparatus, computer device, computer readable storage medium, and computer program product
Wilhelmsen Real-time interactive cloud applications
Trávníček Multi-threaded real-time video grabber
HK40080095B (en) Method for processing events in media stream, apparatus, storage medium and computer equipment
Hoffmann et al. A generic framework for using interactive visualization on mobile devices