欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在并行的多個(gè)客戶端之間的gpu資源的分配的制作方法

文檔序號(hào):6360835閱讀:265來(lái)源:國(guó)知局
專利名稱:在并行的多個(gè)客戶端之間的gpu資源的分配的制作方法
技術(shù)領(lǐng)域
本發(fā)明總的來(lái)說(shuō)涉及應(yīng)用程序的服務(wù)器端渲染,更詳細(xì)地說(shuō),涉及一種基于多組渲染參數(shù)同時(shí)為多個(gè)客戶端渲染多個(gè)應(yīng)用程序的服務(wù)器。
背景技術(shù)
客戶端-服務(wù)器架構(gòu)一般來(lái)說(shuō)是分布式計(jì)算架構(gòu),該架構(gòu)在服務(wù)器(可以被認(rèn)為是“服務(wù)提供者”)和客戶端(可以被認(rèn)為是“服務(wù)請(qǐng)求者”或“服務(wù)消費(fèi)者”)之間劃分任務(wù)或工作負(fù)荷。服務(wù)器和客戶端常常會(huì)通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)連接,并且各種數(shù)據(jù)可以通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)在獨(dú)立的服務(wù)器和獨(dú)立的客戶端之間雙向傳輸。服務(wù)器通常具有比客戶端更多的資源和更好的性能。服務(wù)器可與一個(gè)或多個(gè)客戶端共享其資源,例如為客戶端執(zhí)行某些任務(wù)(即給客戶端提供服務(wù))。由于服務(wù)器典型地具有比客戶端更多的資源,因此服務(wù)器能比客戶端更快地完成任務(wù),特別是有資源需求的任務(wù)。服務(wù)器和客戶端之間所交換的數(shù)據(jù)可以由任何合適的數(shù)據(jù)格式來(lái)表征,并利用任何合適的通信協(xié)議來(lái)傳輸。例如,當(dāng)在服務(wù)器上為客戶端執(zhí)行某一應(yīng)用程序時(shí),該應(yīng)用程序的輸出可以使用結(jié)構(gòu)化文檔來(lái)表征,諸如超文本標(biāo)記語(yǔ)言(HTML)文檔或可擴(kuò)展標(biāo)記語(yǔ)言(XML)文檔。服務(wù)器可以通過(guò)在服務(wù)器和客戶端之間的超文本傳輸協(xié)議(HTTP)連接將包括表征應(yīng)用程序輸出的數(shù)據(jù)的HTML或XML文檔傳輸給客戶端。當(dāng)接收到HTML或XML文檔時(shí),客戶端就可以消費(fèi)該文檔,并利用諸如在該客戶端上被執(zhí)行的網(wǎng)絡(luò)瀏覽器中的該HTML或XML文檔本地渲染應(yīng)用程序的輸出。

發(fā)明內(nèi)容
本發(fā)明總的來(lái)說(shuō)涉及應(yīng)用程序的服務(wù)器端渲染,更詳細(xì)地說(shuō),涉及一種基于多組渲染參數(shù)同時(shí)為多個(gè)客戶端渲染多個(gè)應(yīng)用程序的服務(wù)器。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)托管多個(gè)應(yīng)用程序?qū)嵗?,每個(gè)應(yīng)用程序?qū)嵗龑?duì)應(yīng)于一個(gè)遠(yuǎn)程客戶端應(yīng)用程序。計(jì)算機(jī)系統(tǒng)保持與為其托管應(yīng)用程序?qū)嵗拿總€(gè)遠(yuǎn)程客戶端應(yīng)用程序網(wǎng)絡(luò)連接。計(jì)算機(jī)系統(tǒng)在至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序之間分配計(jì)算機(jī)系統(tǒng)中圖形處理單元的資源。該計(jì)算機(jī)系統(tǒng)利用其圖形處理單元的資源同時(shí)渲染對(duì)應(yīng)于所述至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序的應(yīng)用程序?qū)嵗膱D形輸出。而且,該計(jì)算機(jī)系統(tǒng)通過(guò)相應(yīng)的網(wǎng)絡(luò)連接將渲染后的圖形輸出傳輸給所述至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序。在一個(gè)實(shí)施例中,第一計(jì)算機(jī)系統(tǒng)訪問(wèn)多組渲染參數(shù),其中,第一計(jì)算機(jī)系統(tǒng)與多個(gè)第二計(jì)算機(jī)系統(tǒng)相連;多組渲染參數(shù)中的每一組對(duì)應(yīng)于多個(gè)第二計(jì)算機(jī)系統(tǒng)中特定一個(gè)第二計(jì)算機(jī)系統(tǒng);第一計(jì)算機(jī)系統(tǒng)包括用于存儲(chǔ)圖像的渲染目標(biāo);并且該渲染目標(biāo)由多個(gè)第二計(jì)算機(jī)系統(tǒng)共享。第一計(jì)算機(jī)系統(tǒng)基于多組渲染參數(shù)為多個(gè)第二計(jì)算機(jī)系統(tǒng)并行渲染多個(gè)圖像,其中,基于與多個(gè)第二計(jì)算機(jī)系統(tǒng)中特定一個(gè)第二計(jì)算機(jī)系統(tǒng)相對(duì)應(yīng)的多組渲染參數(shù)中的特定一組渲染參數(shù),為所述多個(gè)第二計(jì)算機(jī)系統(tǒng)中特定一個(gè)第二計(jì)算機(jī)系統(tǒng)渲染多個(gè)圖像中的每一個(gè)圖像并存儲(chǔ)在渲染目標(biāo)中。而且,第一計(jì)算機(jī)系統(tǒng)將所述多個(gè)圖像中的每一個(gè)圖像傳輸給已經(jīng)為其渲染該圖像的所述第二計(jì)算機(jī)系統(tǒng)中的特定一個(gè)第二計(jì)算機(jī)系統(tǒng)。本發(fā)明的這些和其他的特征、方面和優(yōu)點(diǎn)將在以下的詳細(xì)說(shuō)明中結(jié)合附圖地加以詳細(xì)闡明。


圖I示出了用于在并行的多個(gè)客戶端之間分配服務(wù)器資源的一個(gè)示例性的客戶端-服務(wù)器系統(tǒng);圖2示出了被劃分成多個(gè)渲染目標(biāo)單元的服務(wù)器渲染目標(biāo)的一個(gè)例子;圖3示出了服務(wù)器同時(shí)為多個(gè)客戶端實(shí)施多個(gè)渲染的方法;圖4示出了一示例性網(wǎng)絡(luò)環(huán)境;圖5示出了一示例性計(jì)算機(jī)系統(tǒng)。
具體實(shí)施例方式下面將參考附圖中所示的一些實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。為了更加透徹地理解本發(fā)明,在以下描述中,闡述了大量的具體細(xì)節(jié)。然而,本領(lǐng)域的技術(shù)人員顯而易見(jiàn)的是,在部分或全部沒(méi)有這些具體細(xì)節(jié)的情況下,本發(fā)明也可以實(shí)現(xiàn)。在其他例子中,為了避免不必要地使本發(fā)明難以理解,沒(méi)有詳細(xì)描述熟知的處理步驟和/或結(jié)構(gòu)。另外,雖然結(jié)合特定的實(shí)施例對(duì)本發(fā)明進(jìn)行了闡述,但應(yīng)理解,本說(shuō)明書并非用于限制所述實(shí)施例的公開(kāi)內(nèi)容。相反地,本說(shuō)明書旨在涵蓋各種可以包括在如本發(fā)明所附權(quán)利要求書所限定的公開(kāi)內(nèi)容的精神和范圍之內(nèi)的各種替換、修改或等同替換??蛻舳?服務(wù)器架構(gòu)使服務(wù)器能夠與一個(gè)或多個(gè)客戶端共享其資源。這種架構(gòu)具有許多優(yōu)點(diǎn)。例如,由于服務(wù)器比客戶端典型地具有更多的資源(例如,處理器或內(nèi)存)和更好的性能,因此與客戶端所能做到的相比,服務(wù)器可以更快地完成任務(wù)。當(dāng)任務(wù)為資源需求型或當(dāng)客戶端僅有有限數(shù)量的資源時(shí),這種性能差異特別明顯。同時(shí),當(dāng)服務(wù)器為客戶端或代表客戶端執(zhí)行任務(wù)時(shí),可以釋放客戶端的資源以執(zhí)行其他任務(wù),諸如需要在客戶端本地執(zhí)行的那些任務(wù)(例如,與客戶端用戶互動(dòng))。可以適合在服務(wù)器上完成的一種任務(wù)可以是由服務(wù)器托管的作為視頻輸出傳輸給客戶端的應(yīng)用程序的渲染。在計(jì)算機(jī)繪圖中,渲染可以被認(rèn)為是通常利用計(jì)算機(jī)程序從模型生成圖像的過(guò)程。模型通常是三維(3D)物體的描述并可以以嚴(yán)格定義的語(yǔ)言或數(shù)據(jù)結(jié)構(gòu)來(lái)表征。模型可以包含幾何形狀、視點(diǎn)、紋理、照明效果、著色、動(dòng)作以及其他適當(dāng)類型的信息。由模型渲染成的圖像可以是數(shù)字圖像或光柵圖形圖像,該圖像可以由像素的集合形成。本發(fā)明將渲染的概念擴(kuò)大到生成表征任何應(yīng)用程序的任何輸出的圖像。可基于任何數(shù)據(jù)完成渲染,所述數(shù)據(jù)包括二維(2D )數(shù)據(jù)和三維(3D )數(shù)據(jù)。除了基于3D模型生成圖像之外,特定的實(shí)施例可以渲染表征如下所述應(yīng)用程序的輸出的圖像,即,所述應(yīng)用程序諸如(例如但不限于)網(wǎng)絡(luò)瀏覽器應(yīng)用程序,文字處理應(yīng)用程序,電子表格應(yīng)用程序,多媒體應(yīng)用程序,科學(xué)和醫(yī)學(xué)應(yīng)用程序以及游戲應(yīng)用程序。由于渲染過(guò)程經(jīng)常是資源需求型的,特別是當(dāng)渲染的圖像具有高分辨率和高品質(zhì)時(shí),其可能是非常計(jì)算密集性的,因此渲染可以是一種適合在服務(wù)器上執(zhí)行的任務(wù)。在過(guò)去,將一個(gè)三維模型渲染成單個(gè)2D圖像將花費(fèi)老式計(jì)算機(jī)系統(tǒng)數(shù)小時(shí)或數(shù)天的時(shí)間。隨著計(jì)算機(jī)硬件、特別是專門為計(jì)算機(jī)繪圖應(yīng)用程序(例如,游戲,多媒體,娛樂(lè)或繪圖)所設(shè)計(jì)的計(jì)算機(jī)硬件的進(jìn)步和發(fā)展,現(xiàn)在的計(jì)算機(jī)系統(tǒng)能夠在幾秒或幾毫秒內(nèi)渲染每個(gè)圖像。事實(shí)上,將模型渲染成單個(gè)圖像通常并不占用服務(wù)器的全部可用資源。為了更好地利用服務(wù)器的可用資源,在特定的實(shí)施例中,服務(wù)器可以為多個(gè)客戶端同時(shí)執(zhí)行多個(gè)渲染(例如,將多個(gè)3D模型同時(shí)渲染成多個(gè)2D圖像),并且為不同的客戶端執(zhí)行多個(gè)渲染中的每一個(gè)。在特定的實(shí)施例中,服務(wù)器的可用資源可以被分配給多個(gè)客戶端且由多個(gè)客戶端共享。因此,客戶端中的每個(gè)客戶端被分配有服務(wù)器可用資源中的一部分。更具體地說(shuō),在特定的實(shí)施例中,服務(wù)器的圖形處理單元(GPU)在客戶端之間共享。為一個(gè)特定客戶端執(zhí)行的多個(gè)渲染中的每一個(gè)可以使用專門分配給該客戶端的那部分資源。在特定的實(shí)施例中,作為渲染過(guò)程的最終輸出的每個(gè)渲染圖像可以被傳輸給對(duì)應(yīng)的為其獲取渲染圖像的客戶端。圖I示出了一個(gè)示例性的系統(tǒng),其中,單個(gè)服務(wù)器120同時(shí)為多個(gè)客戶端130執(zhí)行多個(gè)渲染。需要注意的是,為了簡(jiǎn)明起見(jiàn),圖I中僅示出了四個(gè)客戶端130A,130B,130C,130D。實(shí)際上,服務(wù)器可以為任意數(shù)量的客戶端同時(shí)執(zhí)行渲染,而且對(duì)服務(wù)器在任何時(shí)候支持客戶端的數(shù)量在理論上并沒(méi)有限制。類似地,為了簡(jiǎn)明起見(jiàn),圖I中僅示出了一個(gè)GPU121和一個(gè)CPU122。實(shí)際上,服務(wù)器可以具有任意數(shù)量的GPU和CPU。在特定的實(shí)施例中,服務(wù)器120通過(guò)單獨(dú)的連接150與每一個(gè)客戶端130連接。在特定的實(shí)施例中,服務(wù)器120和客戶端130之間的連接150可以為通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)的網(wǎng)絡(luò)連接,諸如,例如并且不限于,因特網(wǎng),內(nèi)聯(lián)網(wǎng),局域網(wǎng)(LAN),廣域網(wǎng)(WAN),無(wú)線網(wǎng)絡(luò),或者兩個(gè)或多個(gè)此類計(jì)算機(jī)網(wǎng)絡(luò)的組合。在特定的實(shí)施例中,每個(gè)網(wǎng)絡(luò)連接150可以為傳輸控制協(xié)議(TCP)連接,用戶數(shù)據(jù)報(bào)協(xié)議(UDP)連接,或者任何其他合適的連接。在特定的實(shí)施例中,服務(wù)器120可以具有多個(gè)TCP網(wǎng)口 124,并且每個(gè)客戶端130可以通過(guò)單獨(dú)的TCP連接150連接到不同的TCP網(wǎng)口 124上。例如,客戶端130A可以通過(guò)TCP連接150A連接到服務(wù)器120的TCP網(wǎng)口 124A上。在特定的實(shí)施例中,通過(guò)一個(gè)對(duì)應(yīng)的連接150,可以在服務(wù)器120和每個(gè)客戶端130之間實(shí)現(xiàn)雙向數(shù)據(jù)交換。例如,服務(wù)器120和客戶端130A可以通過(guò)連接150A雙向地交換數(shù)據(jù)。數(shù)據(jù)可以為任何合適的格式。例如,服務(wù)器120可以以視頻流的形式將數(shù)據(jù)傳輸?shù)娇蛻舳?30 ;并且每一個(gè)客戶端130可以將數(shù)據(jù)傳輸給服務(wù)器120。服務(wù)器120和客戶端130之間的通信可以采用任何合適的協(xié)議。例如,假設(shè)為客戶端130A在服務(wù)器120上執(zhí)行應(yīng)用程序?qū)嵗?31A。在服務(wù)器120上執(zhí)行的應(yīng)用程序?qū)嵗?31A的渲染輸出可以以視頻流的形式從服務(wù)器120傳輸?shù)娇蛻舳?30A,其中每一個(gè)渲染圖像將應(yīng)用程序?qū)嵗?31A的輸出表征為視頻流的一個(gè)特定的幀??蛻舳?30A接收的輸入,特別是那些可以導(dǎo)致在服務(wù)器120上執(zhí)行的應(yīng)用程序?qū)嵗?31A改變狀態(tài)的輸入,可以從客戶端130A傳輸給服務(wù)器120。在特定的實(shí)施例中,服務(wù)器120可以具有一個(gè)或多個(gè)中央處理單元(CPU)122以及一個(gè)或多個(gè)圖形處理單元(GPU)121。CPU和GPU在計(jì)算機(jī)領(lǐng)域內(nèi)是公知的。簡(jiǎn)要地說(shuō),CPU是計(jì)算機(jī)系統(tǒng)中執(zhí)行計(jì)算機(jī)的功能和計(jì)算機(jī)程序的指令的那部分。GPU是一種專門的處理器,其從微處理器(例如CPU)卸載圖形渲染。一般而言,GPU能非常有效地處理計(jì)算機(jī)圖形,并且GPU高度并行的結(jié)構(gòu)使其對(duì)于一些復(fù)雜算法(例如與圖形相關(guān)的算法)比通用CPU更加有效。在特定的實(shí)施例中,GPU121可以是視頻卡的一部分或者位于服務(wù)器120的主板上。在特定的實(shí)施例中,GPUl21包括渲染目標(biāo)。在特定的實(shí)施例中,渲染過(guò)程將作為一 個(gè)或多個(gè)圖像的一個(gè)或多個(gè)應(yīng)用程序的輸出渲染成渲染目標(biāo)。在特定的實(shí)施例中,經(jīng)渲染的2D圖像可以存儲(chǔ)在GPU121的渲染目標(biāo)中。在特定的實(shí)施例中,渲染目標(biāo)可以為幀緩沖器或者GPU121內(nèi)的任何合適類型的內(nèi)存或存儲(chǔ)器。圖2示出了示例性的GPU (例如GPU121)的渲染目標(biāo)200。在此例子中,渲染目標(biāo)200為在GPU121中的內(nèi)存,諸如幀緩沖器。在特定的實(shí)施例中,渲染目標(biāo)可以存儲(chǔ)表征一個(gè)或多個(gè)應(yīng)用程序的渲染輸出的高達(dá)256兆像素。因此,渲染目標(biāo)能被分成例如由I兆像素區(qū)塊(1024像素X 1024像素)構(gòu)成的一個(gè)16X16的網(wǎng)格。渲染目標(biāo)還能被劃分以適應(yīng)其他顯示寬高比。在特定的實(shí)施例中,渲染目標(biāo)可以被分成多個(gè)部分。在圖2中,渲染目標(biāo)200以4X4的網(wǎng)格被分成16個(gè)部分,每個(gè)部分可以被稱為渲染目標(biāo)200的一個(gè)單元或一個(gè)渲染目標(biāo)單元。同樣,將渲染目標(biāo)200分成16個(gè)渲染目標(biāo)單元只是為了簡(jiǎn)化后續(xù)的說(shuō)明。實(shí)際上,渲染目標(biāo)可以被分成任意數(shù)量的單元,并且對(duì)渲染目標(biāo)到底可以被劃分成多少個(gè)渲染目標(biāo)單元在理論上沒(méi)有限制。類似地,每一個(gè)渲染目標(biāo)單元的大小和尺寸可以根據(jù)渲染目標(biāo)的大小和尺寸以及渲染目標(biāo)所被劃分成的渲染目標(biāo)單元的數(shù)量變化。例如,每個(gè)渲染目標(biāo)單元可以為256像素X 256像素,512像素X 512像素,或1024像素X 1024像素。當(dāng)然,渲染目標(biāo)單元不必都具有相同的寬度和高度。例如,渲染目標(biāo)單元可以為256像素X512像素或512像素X 256像素。在特定的實(shí)施例中,服務(wù)器120的GPU121的渲染目標(biāo)200可以在四個(gè)客戶端130之間被分配,使得每個(gè)客戶端130被分配一個(gè)或多個(gè)渲染目標(biāo)單元。給一個(gè)特定的客戶端130分配多少渲染目標(biāo)單元可以取決于那個(gè)客戶端130的實(shí)際需求和系統(tǒng)架構(gòu)。在特定的實(shí)施例中,特定客戶端130的顯示器的分辨率、尺寸和取向可以決定給那個(gè)客戶端130分配多少個(gè)渲染目標(biāo)單元。例如,假設(shè)圖2中的每個(gè)渲染目標(biāo)單元為1024像素X 1024像素。進(jìn)一步地假設(shè)客戶端130A為具有較低分辨率的顯示器(例如1024像素X768像素)的筆記本電腦。在此情況下,單個(gè)渲染目標(biāo)單元可以具有足夠的存儲(chǔ)空間來(lái)儲(chǔ)存1024像素X768像素或更小的渲染圖像。因此,客戶端130A可以被分配一個(gè)渲染目標(biāo)單元(例如渲染目標(biāo)單元211)。另一方面,假設(shè)客戶端130B是具有1920像素X 1680像素顯示器的臺(tái)式電腦。在這種情況下,可能需要四個(gè)渲染目標(biāo)單元來(lái)存儲(chǔ)1920像素X1680像素或更小的圖像。因此,客戶端130B可以被分配四個(gè)渲染目標(biāo)單元(例如渲染目標(biāo)單元212,213,222和223)。在特定的實(shí)施例中,分配給特定客戶端130的渲染目標(biāo)單元的取向可以取決于該客戶端130的顯示器的尺寸和取向。例如,假設(shè)客戶端130C具有細(xì)長(zhǎng)型顯示器,其中該顯示器的寬度遠(yuǎn)小于該顯示器的高度。在這種情況下,可將同列中的三個(gè)渲染目標(biāo)單元221,231,241分配給客戶端130C,以便支持其細(xì)長(zhǎng)型顯示器(即渲染目標(biāo)單元221,231,241 —起模擬客戶端130C的顯示器的尺寸和取向)。最后,假設(shè)客戶端130D具有高分辨率顯示器,從而將六個(gè)渲染目標(biāo)單元232,233,234,242,243,244分配給該客戶端130D,以便存儲(chǔ)如此高分辨率的渲染圖像。當(dāng)然,不一定需要在任意給定時(shí)間內(nèi)將全部可用渲染目標(biāo)單元分配給各個(gè)客戶端。有時(shí),可以在某些渲染中不分配若干渲染目標(biāo)單元(例如渲染目標(biāo)單元214,224),而是在過(guò)后將其分配給客戶端130。類似地,已經(jīng)被分配給特定客戶端130的渲染目標(biāo)單元當(dāng)它們不再被需要時(shí)(例如當(dāng)該特定客戶端130與服務(wù)器120斷開(kāi)連接)可被釋放出來(lái)。在特定的實(shí)施例中,每個(gè)客戶端130可以與一個(gè)或多個(gè)計(jì)算機(jī)程序相關(guān)聯(lián),該一個(gè)或多個(gè)計(jì)算機(jī)程序也被稱為應(yīng)用程序。為了簡(jiǎn)化說(shuō)明,在圖I中,顯示出與每個(gè)客戶端130相關(guān)聯(lián)的單獨(dú)一個(gè)應(yīng)用程序131。例如,應(yīng)用程序131A與客戶端130A相關(guān)聯(lián)。然而,當(dāng)多個(gè)應(yīng)用程序與每個(gè)客戶端130相關(guān)聯(lián)時(shí),適用同樣的概念。在特定的實(shí)施例中,服務(wù)器120被配置成為一個(gè)或多個(gè)客戶端130托管一個(gè)或多個(gè)應(yīng)用程序131的一個(gè)或多個(gè)實(shí)例。將應(yīng)用程序131的實(shí)例的渲染輸出傳輸?shù)綄?duì)應(yīng)的客戶端130以呈現(xiàn)給客戶端130的一個(gè)或多個(gè)用戶。在特定的實(shí)施例中,與客戶端130關(guān)聯(lián)的應(yīng)用程序131的實(shí)例可以在服務(wù)器120上為客戶端130運(yùn)行。在服務(wù)器120上運(yùn)行的應(yīng)用程序131的實(shí)例的輸出可以由服務(wù)器120渲染為圖像。在特定的實(shí)施例中,應(yīng)用程序131的實(shí)例的渲染輸出可以被編碼為視頻數(shù)據(jù)并作為視頻流傳輸?shù)綄?duì)應(yīng)的客戶端130。當(dāng)接收到表征其對(duì)應(yīng)應(yīng)用程序131的渲染輸出的視頻流時(shí),每個(gè)客戶端130可以解碼視頻數(shù)據(jù)并顯示對(duì)應(yīng)應(yīng)用程序131的渲染輸出。例如,在服務(wù)器120上為客戶端130A運(yùn)行應(yīng)用程序?qū)嵗?31A。應(yīng)用程序?qū)嵗?31A的輸出可以通過(guò)服務(wù)器120被渲染為一個(gè)或多個(gè)圖像。應(yīng)用程序?qū)嵗?31A的渲染輸出可以被編碼為視頻流并傳輸給客戶端130A。在接收到該視頻流時(shí),客戶端130A可以解碼該視頻流以重新得到應(yīng)用程序?qū)嵗?31A的渲染輸出并將該輸出顯示于客戶端130A上。在特定的實(shí)施例中,每個(gè)客戶端130可以包括一個(gè)或多個(gè)CPU (未示出)以及一個(gè)或多個(gè)GPU (未示出)。在特定的實(shí)施例中,每個(gè)客戶端130可以將視頻流(S卩,編碼的視頻幀)裝入其GPU的內(nèi)存中并解碼該編碼的視頻數(shù)據(jù)以顯示對(duì)應(yīng)應(yīng)用程序131的渲染輸出。因?yàn)橛?jì)算機(jī)程序131的實(shí)例在客戶端130上運(yùn)行,所以可能需要執(zhí)行各種渲染。例如,假設(shè)應(yīng)用程序?qū)嵗?31A是一個(gè)游戲應(yīng)用程序。該游戲的視頻可以每秒60幀的速度進(jìn)行,并且每一幀可能需要將游戲場(chǎng)景的3D模型新渲染成圖像。因此,應(yīng)用程序?qū)嵗?31A可能需要每秒60次的渲染。假設(shè)應(yīng)用程序?qū)嵗?31B是一個(gè)動(dòng)畫電影,并且視頻以每秒30幀的速度進(jìn)行。同樣,每一幀可能需要將動(dòng)畫場(chǎng)景新渲染成圖像。因此,應(yīng)用程序?qū)嵗?31B可能需要每秒30次的渲染。另外,對(duì)于每個(gè)應(yīng)用程序131的實(shí)例,還可以有一組用于指明如何將該程序?qū)嵗?31的3D模型渲染為圖像的渲染參數(shù)。在特定的實(shí)施例中,渲染參數(shù)可以包括(例如并且不限于)要渲染的模型,視口或鏡頭角度,燈光,紋理,陰影或圖像分辨率。另外,渲染參數(shù)可以在幀之間改變,由此在渲染之間也改變。例如,在諸如應(yīng)用程序?qū)嵗?31A的游戲應(yīng)用程序的情況下,隨著客戶端130A的游戲者移動(dòng)游戲場(chǎng)景,游戲場(chǎng)景的3D模型中的對(duì)象以及鏡頭角度,燈光和陰影可以變化。因此,每一個(gè)渲染可以具有對(duì)應(yīng)于當(dāng)前游戲狀態(tài)的一組不同的渲染參數(shù)來(lái)指明該渲染的例如特定的場(chǎng)景,視點(diǎn)位置,鏡頭角度,照明效果,或陰影。在特定的實(shí)施例中,服務(wù)器120可以保持當(dāng)前連接到服務(wù)器120上的每個(gè)客戶端130的一個(gè)不同的渲染參數(shù)組123。例如,渲染參數(shù)組123A對(duì)應(yīng)于客戶端130A。每組渲染參數(shù)123可以從計(jì)算機(jī)程序131的對(duì)應(yīng)實(shí)例中獲得,并且描述了對(duì)于該計(jì)算機(jī)程序131的實(shí)例如何執(zhí)行渲染。例如,渲染參數(shù)組123A可以包括描述了對(duì)于應(yīng)用程序?qū)嵗?31A如何執(zhí)行渲染的渲染參數(shù)并且可以基于應(yīng)用程序?qū)嵗?31A的當(dāng)前狀態(tài)進(jìn)行更新。有時(shí),多個(gè)客戶端130可以執(zhí)行相同計(jì)算機(jī)程序的多個(gè)實(shí)例并且還具有不同的渲染參數(shù)123。例如,假設(shè)客戶端130A和130D運(yùn)行同一游戲應(yīng)用程序的兩個(gè)實(shí)例。在客戶端130A和130D的兩個(gè)游戲者可以獨(dú)自地或互動(dòng)式地玩同樣的游戲(例如在同一游戲中充當(dāng)兩個(gè)不同的角色)。如果兩個(gè)游戲者獨(dú)自地玩同樣的游戲,在特定時(shí)間,他們可能處于游戲的不同階段,因此,他們?cè)诳蛻舳?30A和130D的顯示器上所看到的圖像是不同的。如果兩個(gè)游戲者互動(dòng)式地玩同樣的游戲,在特定時(shí)間,即使兩個(gè)游戲者都處于同樣的游戲場(chǎng)景中,他們也可能從不同的位置和不同的角度觀看游戲場(chǎng)景。同樣,兩個(gè)游戲者在客戶端130A和130D的顯示器上也可能看到不同的圖像。不論何種情況,因?yàn)閮蓚€(gè)游戲者在任意的給定時(shí)間看到的圖像不同,所以渲染參數(shù)在相同的游戲應(yīng)用程序的兩個(gè)實(shí)例之間存在差異。在一個(gè)給定的渲染進(jìn)程中,像素著色器(和/或其他渲染功能)按一組渲染參數(shù)操作,該組渲染參數(shù)中還定義了渲染圖像的視點(diǎn)或類似參數(shù)。在特定的實(shí)施例中,在單次渲染進(jìn)程中,服務(wù)器120可以分別基于四組渲染參數(shù)123為在客戶端130上運(yùn)行的四個(gè)程序?qū)嵗?31同時(shí)執(zhí)行四次渲染。在特定的實(shí)施例中,GPU121可以執(zhí)行實(shí)際的渲染功能。在特定的實(shí)施例中,每一次渲染為每一個(gè)客戶端同時(shí)輸出一幀渲染圖像。在特定的實(shí)施例中,四幅渲染圖像中的每一幅都被存儲(chǔ)在GPU121內(nèi)渲染目標(biāo)200的已被分配給對(duì)應(yīng)客戶端130的特定部分中。例如,基于渲染參數(shù)組123A,為在客戶端130A上運(yùn)行的應(yīng)用程序?qū)嵗?31A執(zhí)行第一渲染,并且將第一渲染圖像存儲(chǔ)在渲染目標(biāo)單元211中?;阡秩緟?shù)組123B,為在客戶端130B上運(yùn)行的應(yīng)用程序?qū)嵗?31B執(zhí)行第二渲染,并且將第二渲染圖像存儲(chǔ)在渲染目標(biāo)單元212、213、222、223中。基于渲染參數(shù)組123C,為在客戶端130C上運(yùn)行的應(yīng)用程序?qū)嵗?31C執(zhí)行第三渲染,并且將第三渲染圖像存儲(chǔ)在渲染目標(biāo)單元221,231,241中?;阡秩緟?shù)組123D,為在客戶端130D上運(yùn)行的應(yīng)用程序?qū)嵗?31D執(zhí)行第四渲染,并且將第四渲染圖像存儲(chǔ)在渲染目標(biāo)單元232,233,234,241,242,243,244中。在特定的實(shí)施例中,在單次編碼過(guò)程中,服務(wù)器120可以對(duì)存儲(chǔ)于渲染目標(biāo)200中的四個(gè)渲染圖像并行編碼。在特定的實(shí)施例中,GPU121可以執(zhí)行實(shí)際的編碼功能。例如,每一個(gè)渲染圖像可以被編碼為不同視頻流中的單個(gè)幀。在特定的實(shí)施例中,服務(wù)器120此后可以分別將現(xiàn)在已被編碼在四段視頻流中的四個(gè)渲染圖像傳輸?shù)剿膫€(gè)客戶端130。更具體地說(shuō),第一渲染圖像可以被編碼為第一視頻流中的一幀并被傳輸?shù)娇蛻舳?30A。第二渲染圖像可以被編碼為第二視頻流中的一幀并被傳輸?shù)娇蛻舳?30B。第三渲染圖像可以被編碼為第三視頻流中的一幀并被傳輸?shù)娇蛻舳?30C。第四渲染圖像可以被編碼為第四視頻流中的一幀并被傳輸?shù)娇蛻舳?30D。當(dāng)接收到對(duì)應(yīng)的視頻流時(shí),每一個(gè)客戶端130可以解碼視頻流并且在其顯示器上顯示渲染圖像。在特定的實(shí)施例中,服務(wù)器120可以實(shí)現(xiàn)視頻編解碼器功能。視頻編解碼器可以用于對(duì)渲染圖像進(jìn)行編碼,所述渲染圖像表征在服務(wù)器120上運(yùn)行的應(yīng)用程序131的實(shí)例的輸出。在特定的實(shí)施例中,視頻編解碼器訪問(wèn)存儲(chǔ)于渲染目標(biāo)200中的渲染圖像并將圖像劃分成宏塊。在一種實(shí)施方案中,每個(gè)宏塊的大小為16像素X 16像素。如下所述,在一些實(shí)施方案式中,可以在8X8分區(qū)上執(zhí)行離散余弦變換(DCT)操作。因此,由于4 :2 :0縮減像素采樣,每個(gè)宏塊包括四個(gè)8X8亮度分區(qū),四個(gè)4X4Cb分區(qū),以及四個(gè)4X4Cr分區(qū)。然而,也可以采用其他的宏塊尺寸。然后,視頻編解碼器如下所述地對(duì)每個(gè)宏塊的亮度和色度分區(qū)執(zhí)行一定的變換和量化操作。這些操作可以串行地或并行地進(jìn)行。如果在GPU上執(zhí)行編碼操作,對(duì)宏塊的處理能夠以并行的方式完成,從而減少處理時(shí)間并增大吞吐量。編解碼器給每個(gè)宏塊配備一個(gè)2D平面,其可最佳地模擬宏塊像素的亮度值。該平面由方程式z=ax+by定義,其中a和b定義了該平面的梯度參數(shù)。然后,編解碼器基于該平面的梯度參數(shù)調(diào)整宏塊像素的亮度值。在一種實(shí)施方案中,對(duì)于每一個(gè)像素,編解碼器從這個(gè)位置上的像素值中減去平面方程式的對(duì)應(yīng)值。在概念上,由以下方程式定義經(jīng)調(diào)整的像素(x,y) =像素(x,y)-z。在一種實(shí)施方案中,編解碼器并不調(diào)整色度分區(qū)的值。然后,編解碼器將DCT應(yīng)用于宏塊。在一種實(shí)施方案中,編解碼器將DCT分別應(yīng)用到8 X 8像素的四個(gè)亮度分區(qū)和八個(gè)4 X 4色度分區(qū)。編解碼器此后在對(duì)應(yīng)于每個(gè)亮度分區(qū)和每個(gè)色度分區(qū)的每個(gè)DCT系數(shù)集合的DC分量上應(yīng)用2X2阿達(dá)瑪(Hadamard)變換,以找出DC系數(shù)值之間的關(guān)聯(lián)。在可替代的實(shí)施方案中,編解碼器動(dòng)態(tài)地確定分區(qū)的大小。例如,編解碼器可以基于每一個(gè)分區(qū)選擇的信息率(rate)和失真,在4X4,8X8,16X 16分區(qū)中動(dòng)態(tài)地選擇。編解碼器將用于一個(gè)宏塊的DCT系數(shù)重新排序成一維(ID)矩陣。在一種實(shí)施方案中,以曲折排序掃描四個(gè)亮度分區(qū)的DCT系數(shù),然后使DCT系數(shù)交錯(cuò),從而使DC分量值和其他對(duì)應(yīng)DCT的分量值一起形成組。在一種實(shí)施方案中,亮度分區(qū)相對(duì)于色度分區(qū)單獨(dú)編碼。在一種實(shí)施方案中,色度分區(qū)以與亮度通道相似的方式被交錯(cuò)在一起。在其他實(shí)施方案中,可使用曲折重排序(zigzag re-ordering)的替代方法。編解碼器還采用例如率失真優(yōu)化法量化ID矩陣中的DCT系數(shù),率失真優(yōu)化法是一種基于每種選擇的最終成本(需要編碼的位數(shù))和與每種選擇相關(guān)聯(lián)的錯(cuò)誤或失真評(píng)價(jià)是否上下取舍到最接近的整數(shù)或取舍到零的量化過(guò)程。在一種實(shí)施方案中,率失真優(yōu)化法基本上應(yīng)用視頻質(zhì)量測(cè)試方法,來(lái)測(cè)量與源的偏差以及每個(gè)可能的判定結(jié)果的位成本。通過(guò)位成本乘以拉格朗日算符(Lagrangian)以數(shù)學(xué)方法精確地計(jì)算出位,其中拉格朗日算符是一個(gè)表征位成本和特定質(zhì)量水平的質(zhì)量之間的關(guān)系的值。為了最大化峰值信噪比(PSNR)視頻質(zhì)量測(cè)試方法,可以以均方誤差來(lái)衡量與源的偏差。位成本的計(jì)算可以通過(guò)使每個(gè)待測(cè)試的視頻塊通過(guò)熵編解碼器以測(cè)量其實(shí)際位成本來(lái)完成。 在一種實(shí)施方案中,通過(guò)從宏塊的DC系數(shù)中減去DC預(yù)測(cè)值,編解碼器于是計(jì)算出每個(gè)宏塊的DC預(yù)測(cè)值并且基于DC預(yù)測(cè)值調(diào)整每個(gè)宏塊的DC系數(shù)。在一種實(shí)施方案中,DC預(yù)測(cè)值X基于相鄰區(qū)塊的DC系數(shù)。換言之,區(qū)塊的DC預(yù)測(cè)值X是基于區(qū)塊a與b的DC系數(shù)之和再減去區(qū)塊c的DC系數(shù)值。在一種實(shí)施方案中,在亮度和色度通道上執(zhí)行DC預(yù)測(cè)
值調(diào)整。編解碼器然后將量化的系數(shù)編碼到每個(gè)區(qū)塊的保留內(nèi)存空間中。在一種實(shí)施方案中,編解碼器采用變長(zhǎng)編碼的形式壓縮每個(gè)區(qū)塊的量化系數(shù)。在一種實(shí)施方案中,編解碼器先采用游程編碼(RLE)然后再采用霍夫曼(Huffman)編碼。在對(duì)每個(gè)宏塊的量化DCT系數(shù)編碼后,產(chǎn)生宏塊的被編碼的位和位長(zhǎng)。在獲知位長(zhǎng)信息后,編解碼器就能執(zhí)行并行前綴求和,以在最終輸出位流中獲得每個(gè)宏塊的開(kāi)始位置。在一種實(shí)施方案中,通過(guò)以類似光柵的順序?qū)懭朊總€(gè)宏塊的數(shù)據(jù),編解碼器于是使GPU121將編碼數(shù)據(jù)寫入將緩沖到主系統(tǒng)內(nèi)存中的輸出流上。在一種實(shí)施方案中,通過(guò)并行的處理操作,由GPU121將數(shù)據(jù)寫入CPU內(nèi)存。例如,編解碼器可以在一個(gè)集中操作中使數(shù)據(jù)被寫入一個(gè)或多個(gè)輸出流。例如,具有寫數(shù)據(jù)字(諸如I或2個(gè)字節(jié))任務(wù)的步驟或功能可利用每個(gè)宏塊的開(kāi)始位位置以及在該幀的輸出流中的數(shù)據(jù)字的位置,來(lái)確定從哪個(gè)保留內(nèi)存位置訪問(wèn)數(shù)據(jù)位以創(chuàng)建數(shù)據(jù)字并將其寫入內(nèi)存。集中操作允許利用GPU121的資源在并行處理操作中寫輸出,由此進(jìn)一步增加了吞吐量。例如,在一種實(shí)施方案中,可以定義一個(gè)功能,即將輸出流被寫入其中的內(nèi)存中的數(shù)據(jù)或機(jī)器字的位置接收為輸入。運(yùn)用該功能可基于數(shù)據(jù)或機(jī)器字的位置以及宏塊的開(kāi)始位值從一個(gè)或多個(gè)宏塊的位的選擇部分中收集機(jī)器字,并且將機(jī)器字的數(shù)據(jù)寫入內(nèi)存。該功能能被并行地執(zhí)行,以將來(lái)自GPU121的內(nèi)存(例如渲染目標(biāo)200)的該輸出加速寫入主內(nèi)存,以便通過(guò)網(wǎng)絡(luò)傳輸給客戶端130。在其他實(shí)施方案中,可直接訪問(wèn)GPU121的內(nèi)存,以寫入用于傳輸?shù)骄W(wǎng)口或其他連接抽象的數(shù)據(jù)。—些種類的應(yīng)用程序可能需要將它們的輸出持續(xù)地渲染成代表性圖像。例如,如上所述,游戲應(yīng)用程序經(jīng)常需要每秒60次渲染。其他類型的應(yīng)用程序可能僅在響應(yīng)用程序戶輸入時(shí)需要一個(gè)新的渲染。例如,當(dāng)用戶輸入時(shí),文字處理應(yīng)用程序可能僅需要刷新顯示于客戶端屏幕上的文本文檔(即,渲染該文檔的圖像)。另外,用于在客戶端運(yùn)行的應(yīng)用程序?qū)嵗拿總€(gè)渲染可以基于不同的渲染參數(shù),因?yàn)閼?yīng)用程序?qū)嵗漠?dāng)前狀態(tài)可能隨時(shí)間而改變。在特定的實(shí)施例中,每個(gè)客戶端130可將在客戶端130上運(yùn)行的應(yīng)用程序131的3D模型或渲染所依據(jù)的其他數(shù)據(jù)以及最新的渲染參數(shù)(需要時(shí))傳輸?shù)椒?wù)器120。服務(wù)器120可以存儲(chǔ)從每個(gè)客戶端130接收到的信息。在特定的實(shí)施例中,服務(wù)器120可以基于從每個(gè)客戶端130接收到的信息確定在需要為特定客戶端執(zhí)行渲染時(shí),哪個(gè)3D模型和哪些渲染參數(shù)將被用于該渲染,以及其他適合的信息。在特定的實(shí)施例中,CPU122可以執(zhí)行實(shí)際的決定。在特定的實(shí)施例中,對(duì)于每個(gè)渲染進(jìn)程(rendering pass), CPU122可以給GPU121提供在該渲染進(jìn)程中GPU121同時(shí)執(zhí)行多個(gè)渲染時(shí)可能需要的所有必要的數(shù)據(jù)(例如,模型,成組的渲染參數(shù))。圖3示出了一種服務(wù)器同時(shí)為多個(gè)客戶端執(zhí)行多個(gè)渲染的方法。特定的實(shí)施例可以將服務(wù)器的GPU中的渲染目標(biāo)分為多個(gè)渲染目標(biāo)單元(步驟301)。在特定的實(shí)施例中,渲染目標(biāo)可以為幀緩沖器或GPU中可以用于存儲(chǔ)渲染圖像的其他合適種類的內(nèi)存或存儲(chǔ)器。在特定的實(shí)施例中,渲染目標(biāo)單元可以都具有同樣的大小(例如,每個(gè)渲染目標(biāo)單元具有相同數(shù)量的像素)。在任意的給定時(shí)間,服務(wù)器可以與任意數(shù)量的客戶端相連,而且可以代表并為這些客戶端、或者更加具體地說(shuō)是為在這些客戶端上運(yùn)行的計(jì)算機(jī)程序的實(shí)例執(zhí)行渲染。特定的實(shí)施例可以給當(dāng)前與服務(wù)器相連并由服務(wù)器支持的每個(gè)客戶端分配一個(gè)或多個(gè)渲染目標(biāo)單元(步驟302)。給特定客戶端實(shí)際上分配多少個(gè)渲染目標(biāo)單元以及分配哪些具體的渲染目標(biāo)單元可以取決于可供選擇的具體的渲染目標(biāo)單元和該客戶端的系統(tǒng)架構(gòu),諸如,例如但不限于,客戶端的視頻幀緩沖器或顯示器的分辨率、尺寸以及取向。例如,當(dāng)將客戶端新連接到服務(wù)器上時(shí),服務(wù)器可以給該特定客戶端分配一個(gè)或多個(gè)其當(dāng)前可用的渲染目標(biāo)單元(即,該渲染目標(biāo)單元當(dāng)前沒(méi)有分配給任何其他的客戶端)。相反,當(dāng)客戶端與服務(wù)器斷開(kāi)連接時(shí),服務(wù)器可以解除分配(即釋放)已分配給該特定客戶端的渲染目標(biāo)單元,使得這些渲染目標(biāo)單元將來(lái)可用于分配給其他客戶端。分配給客戶端的渲染目標(biāo)單元的數(shù)量可以取決于該特定客戶端的視頻幀緩沖器或顯示器的大小或分辨率(例如,具有高分辨率顯示器的客戶端與具有低分辨率顯示器的客戶端相比可以被分配給更多數(shù)量的渲染目標(biāo)單元)。在特定的實(shí)施例中,當(dāng)在與服務(wù)器連接的客戶端上開(kāi)始運(yùn)行計(jì)算機(jī)程序的實(shí)例時(shí),如果服務(wù)器要為該程序?qū)嵗龍?zhí)行渲染,那么客戶端會(huì)通知程序?qū)嵗姆?wù)器并且請(qǐng)求服務(wù)器為該程序?qū)嵗龍?zhí)行渲染。客戶端可以將程序?qū)嵗哪P蛡鬏斀o服務(wù)器以在渲染中使用。服務(wù)器在其為程序?qū)嵗龍?zhí)行渲染期間可以存儲(chǔ)程序?qū)嵗哪P?。在特定的?shí)施例中,因?yàn)榉?wù)器可以為多個(gè)客戶端執(zhí)行渲染,所以每個(gè)模型可以用一個(gè)唯一的標(biāo)識(shí)符(ID)來(lái)識(shí)別,該標(biāo)識(shí)符指示模型與哪個(gè)客戶端相關(guān)聯(lián)。當(dāng)然,在客戶端上可以執(zhí)行相同或不同計(jì)算機(jī)程序的多個(gè)實(shí)例。在特定的實(shí)施例中,客戶端可以請(qǐng)求服務(wù)器為在該客戶端上運(yùn)行的多個(gè)程序?qū)嵗龍?zhí)行渲染。在這種情況下,客戶端可以將對(duì)應(yīng)于多個(gè)程序?qū)嵗亩鄠€(gè)模型傳輸?shù)椒?wù)器。例如,每當(dāng)程序?qū)嵗诳蛻舳松祥_(kāi)始運(yùn)行時(shí),客戶端可以將該程序?qū)嵗哪P蛡鬏數(shù)椒?wù)器。服務(wù)器可以存儲(chǔ)這些模型,并且可以用唯一的ID識(shí)別每個(gè)模型,該ID指示模型與哪個(gè)客戶端和在該客戶端上運(yùn)行的哪個(gè)程序?qū)嵗嚓P(guān)聯(lián)。特定的實(shí)施例可以為當(dāng)前與服務(wù)器連接并由服務(wù)器支持的每個(gè)客戶端保持一組或多組渲染參數(shù)(步驟303)。在特定的實(shí)施例中,每組渲染參數(shù)對(duì)應(yīng)于在特定客戶端上運(yùn)行的計(jì)算機(jī)程序的一個(gè)實(shí)例并且指示如何為該特定程序?qū)嵗龍?zhí)行渲染。因此,由于程序?qū)嵗娘@示可以隨時(shí)間而變化,渲染參數(shù)也可以隨時(shí)間而改變(例如,從渲染到渲染)。在特定的實(shí)施例中,每組渲染參數(shù)用唯一的ID進(jìn)行識(shí)別,該ID指示模型與哪個(gè)客戶端和在該客戶端上運(yùn)行的哪個(gè)程序?qū)嵗嚓P(guān)聯(lián)。目前存在著大量的渲染技術(shù),而本發(fā)明可能適用任何適合的渲染技術(shù)。例如,光線跟蹤是熟知的且常用的渲染技術(shù),其能夠在最終的渲染圖像中產(chǎn)生程度非常高的真實(shí)感。簡(jiǎn)而言之,光線跟蹤是一種通過(guò)跟蹤穿過(guò)位于圖像平面中的像素的光路而由模型生成圖像的技術(shù)。有多種算法可以用于光線跟蹤。雖然光線跟蹤逼真地模擬了 3D物體上的照明效果,但其是計(jì)算密集性的,因此最好在服務(wù)器上實(shí)現(xiàn)。特定的實(shí)施例可以在服務(wù)器上實(shí)施光線跟蹤算法并利用光線跟蹤執(zhí)行渲染。在計(jì)算機(jī)繪圖領(lǐng)域,著色器是一組主要用于在具有高度靈活性的繪圖硬件上計(jì)算渲染效果的軟件指令。在特定的實(shí)施例中,著色器可以用于對(duì)服務(wù)器的GPU可編程渲染管線編程,其可能已經(jīng)主要地替代了固定功能管線。有各種類型的著色器,并且本發(fā)明可適用任何合適的著色器。例如,頂點(diǎn)著色器可以對(duì)給予GPU的每個(gè)頂點(diǎn)運(yùn)行一次,以將虛擬空間中每個(gè)頂點(diǎn)的3D位置轉(zhuǎn)換為在顯示器屏幕上或在渲染的2D圖像中顯示的2D坐標(biāo)和Z緩沖器的深度值。頂點(diǎn)著色器可以操控諸如位置、顏色和紋理坐標(biāo)等的屬性。幾何著色器可以是在渲染管線中位于頂點(diǎn)著色器后的下一個(gè)階段,其可以從網(wǎng)格中添加和移除頂點(diǎn),并且可以用于在流程上生成幾何圖形或用于給現(xiàn)有的網(wǎng)格添加體積細(xì)節(jié)。像素著色器,也被稱為片段著色器,可計(jì)算各像素的顏色并典型地用于場(chǎng)景燈光及相關(guān)效果,諸如凹凸貼圖(bumpmapping)和調(diào)色(color toning)等。在特定的實(shí)施例中,每一組渲染參數(shù)可以包括對(duì)應(yīng)于GPU的渲染管線中的各種著色器的著色器常數(shù)。這些著色器常數(shù)給GPU指示出特定的渲染是如何執(zhí)行的。因此,事實(shí)上,著色器常數(shù)可以用于控制渲染的結(jié)果(即,渲染圖像)。如上所述,每組渲染參數(shù)(例如,著色器常數(shù))可以在用于對(duì)應(yīng)的程序?qū)嵗匿秩九c渲染之間變化,因?yàn)槌绦驅(qū)嵗梢栽诓煌瑫r(shí)間顯示不同的圖像。如果需要的話,特定的實(shí)施例可以在渲染進(jìn)程之前更新由服務(wù)器保持的渲染參數(shù)組(步驟304)。每個(gè)客戶端可以將在其上運(yùn)行的并由服務(wù)器支持的程序?qū)嵗漠?dāng)前狀態(tài)傳輸給服務(wù)器。在特定的實(shí)施例中,服務(wù)器可以基于從客戶端接收的信息更新渲染參數(shù)組。在特定的實(shí)施例中,在單次渲染進(jìn)程中,服務(wù)器可以為當(dāng)前由其所支持的多個(gè)客戶端同時(shí)渲染多個(gè)圖像(即,執(zhí)行多次渲染)(步驟305)。在特定的實(shí)施例中,單次渲染進(jìn)程可以通過(guò)GPU渲染管線移動(dòng)一次。在渲染管線中可以存在多個(gè)階段。例如,首先,服務(wù)器的CPU可以將指令和幾何圖形數(shù)據(jù)發(fā)送給服務(wù)器的GPU。這些指令和數(shù)據(jù)可以基于對(duì)應(yīng)的模型和渲染參數(shù)組來(lái)確定。其次,在頂點(diǎn)著色器內(nèi),可以轉(zhuǎn)換幾何圖形并且可以進(jìn)行光照計(jì)算。第三,如果使用幾何著色器,那么就可以執(zhí)行場(chǎng)景中的一些幾何圖形變化。第四,計(jì)算出的幾何圖形可以被三角化。最后,可以將這些三角形轉(zhuǎn)換為像素。為了在單次渲染進(jìn)程中同時(shí)渲染多個(gè)圖像,GPU可以在多個(gè)渲染過(guò)程中共享其資源。在特定的實(shí)施例中,每個(gè)最終的渲染圖像以及更具體地說(shuō),渲染圖像的像素值被存儲(chǔ)在特定的渲染目標(biāo)單元中,該渲染目標(biāo)單元被分配給對(duì)應(yīng)于該渲染圖像的客戶端。在特定的實(shí)施例中,服務(wù)器可以采用視頻流將渲染圖像傳輸?shù)狡洚?dāng)前所支持的每個(gè)客戶端,使得每個(gè)渲染圖像為該視頻流的一幀。在特定的實(shí)施例中,服務(wù)器可以在單步編碼中將存儲(chǔ)在渲染目標(biāo)中的多個(gè)渲染圖像同時(shí)編碼到對(duì)應(yīng)于多個(gè)客戶端的多個(gè)視頻流中(步驟306)。例如,第一渲染圖像被編碼為針對(duì)第一客戶端的第一視頻流的當(dāng)前幀;第二渲染圖像被編碼為針對(duì)第二客戶端的第二視頻流的當(dāng)前幀;以此類推。在特定的實(shí)施例中,服務(wù)器可以隨后將現(xiàn)已被編碼為視頻流中的幀的渲染圖像傳輸?shù)娇蛻舳?步驟307)。每個(gè)視頻流被傳輸給對(duì)應(yīng)的客戶端。例如,第一視頻流被傳輸給第一客戶端;第二視頻流被傳輸給第二客戶端;以此類推。當(dāng)接收到視頻流中的新數(shù)據(jù)時(shí),每個(gè)客戶端可以將視頻流解碼以提取當(dāng)前幀,該幀實(shí)際上就是由服務(wù)器渲染的圖像??蛻舳巳缓罂梢栽谄滹@示器屏幕上顯示該當(dāng)前幀(即,渲染圖像)。經(jīng)常可能需要為在每個(gè)客戶端上運(yùn)行的每個(gè)程序?qū)嵗龍?zhí)行多個(gè)渲染。因此,步驟304-307可以重復(fù)。每次渲染進(jìn)程可以為當(dāng)前由服務(wù)器支持的客戶端最終生成大量的渲染圖像,一個(gè)特定客戶端有一個(gè)渲染圖像。每個(gè)渲染圖像可以被編碼成對(duì)視頻流中單獨(dú)的一幀并被傳輸?shù)綄?duì)應(yīng)的客戶端。特定的實(shí)施例可在網(wǎng)絡(luò)環(huán)境中實(shí)施。圖4示出了一個(gè)示例性的網(wǎng)絡(luò)環(huán)境400。網(wǎng)絡(luò)環(huán)境400包括將一個(gè)或多個(gè)服務(wù)器420以及一個(gè)或多個(gè)客戶端430彼此連接在一起的網(wǎng)絡(luò)410。在特定的實(shí)施例中,網(wǎng)絡(luò)410可以為內(nèi)聯(lián)網(wǎng),外聯(lián)網(wǎng),虛擬專用網(wǎng)(VPN),局域網(wǎng)(LAN),無(wú)線LAN (WLAN),廣域網(wǎng)(WAN),城域網(wǎng)(MAN),通信網(wǎng)絡(luò),衛(wèi)星網(wǎng)絡(luò),部分因特網(wǎng),或者另外的網(wǎng)絡(luò)410,或者兩個(gè)或兩個(gè)以上此類網(wǎng)絡(luò)410的組合。本發(fā)明適用任何合適的網(wǎng)絡(luò)410。一個(gè)或多個(gè)鏈路450將服務(wù)器420或客戶端430連接到網(wǎng)絡(luò)410中。在特定的實(shí)施例中,一個(gè)或多個(gè)鏈路450中的每一個(gè)包括一個(gè)或多個(gè)有線的、無(wú)線的或光學(xué)的鏈路450。在特定的實(shí)施例中,一個(gè)或多個(gè)鏈路450中的每個(gè)鏈路包括內(nèi)聯(lián)網(wǎng),外聯(lián)網(wǎng),VPN,LAN,WLAN, WAN,MAN,通信網(wǎng)絡(luò),衛(wèi)星網(wǎng)絡(luò),部分因特網(wǎng),或其他鏈路450,或者兩個(gè)或兩個(gè)以上此類鏈路450的組合。本發(fā)明適用任何合適的能將服務(wù)器420和客戶端430連接到網(wǎng)絡(luò)中的鏈路450。在特定的實(shí)施例中,每個(gè)服務(wù)器420可以是單一的服務(wù)器,或者可以是跨多個(gè)計(jì)算機(jī)或多個(gè)數(shù)據(jù)中心的分布式服務(wù)器。服務(wù)器420可以是各種類型的,諸如,例如但不限于,網(wǎng)絡(luò)服務(wù)器,新聞服務(wù)器,郵件服務(wù)器,消息服務(wù)器,廣告服務(wù)器,文件服務(wù)器,應(yīng)用程序服務(wù)器,交換服務(wù)器,數(shù)據(jù)庫(kù)服務(wù)器,或代理服務(wù)器。在特定的實(shí)施例中,每個(gè)服務(wù)器420可以包括硬件,軟件,或者嵌入式邏輯部件或兩個(gè)及兩個(gè)以上的此類部件的組合,以用于執(zhí)行由服務(wù)器420支持或?qū)嵤┑暮线m的功能。例如,網(wǎng)絡(luò)服務(wù)器一般能夠托管包含網(wǎng)頁(yè)或網(wǎng)頁(yè)中的特定要素的網(wǎng)站。更具體地說(shuō),網(wǎng)絡(luò)服務(wù)器可以托管HTML文件或其他文件類型,或者可以依請(qǐng)求動(dòng)態(tài)地創(chuàng)建或建立文件,并響應(yīng)于來(lái)自客戶端430的HTTP或其他請(qǐng)求將文件傳遞給客戶端430。郵件服務(wù)器一般能夠?yàn)楦鞣N客戶端430提供電子郵件服務(wù)。數(shù)據(jù)庫(kù)服務(wù)器一般能夠提供用于管理存儲(chǔ)在至少一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的界面。在特定的實(shí)施例中,每個(gè)客戶端430可以為這樣一種電子設(shè)備,其包括硬件,軟件,或者嵌入式邏輯部件,或者兩個(gè)或兩個(gè)以上此類部件的組合,并且能夠執(zhí)行由客戶端430支持或?qū)崿F(xiàn)的合適的功能。例如但不限于,客戶端430可以為臺(tái)式電腦系統(tǒng),筆記本電腦系統(tǒng),上網(wǎng)本電腦系統(tǒng),手持電子設(shè)備,或移動(dòng)電話??蛻舳?30可以使客戶端430處的網(wǎng)絡(luò)用戶能夠訪問(wèn)網(wǎng)絡(luò)410??蛻舳?30可以具有網(wǎng)頁(yè)瀏覽器,諸如Microsoft InternetExplorer或Mozilla Firefox,并且可以具有一個(gè)或多個(gè)附件,插件,或其他諸如GoogleToolbar或YahooToolbar之類的擴(kuò)展??蛻舳?30可以使其用戶能夠與在其他客戶端430上的其他用戶通信。本發(fā)明適用任何合適的客戶端430。在特定的實(shí)施例中,一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)器440可以通過(guò)一個(gè)或多個(gè)鏈路450可通信聯(lián)絡(luò)地與一個(gè)或多個(gè)服務(wù)器420相鏈接。在特定的實(shí)施例中,數(shù)據(jù)存儲(chǔ)器440可以被用于存儲(chǔ)各種信息。在特定的實(shí)施例中,可以根據(jù)具體的數(shù)據(jù)結(jié)構(gòu)組織存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器440中的信息。特定的實(shí)施例可以提供能夠使服務(wù)器420或客戶端430管理(例如檢索,修改,添加,或刪除)存儲(chǔ)于數(shù)據(jù)存儲(chǔ)器440中的信息的界面。在特定的實(shí)施例中,每個(gè)服務(wù)器420可以同時(shí)服務(wù)于一個(gè)或多個(gè)客戶端430并且為其所支持的客戶端430執(zhí)行渲染。通過(guò)以每一個(gè)渲染圖像作為特定的一幀的方式編碼視頻流中的渲染圖像,服務(wù)器420可以傳輸為其所支持的特定客戶端430渲染的圖像,并且將視頻流傳輸給該客戶端430。當(dāng)接收到視頻流時(shí),客戶端430可以將該視頻流解碼,以提取圖像幀用于顯示。申請(qǐng)?zhí)枮?2/579,300和12/709,343的兩篇美國(guó)申請(qǐng)(這兩篇文獻(xiàn)都通過(guò)引用而結(jié)合到本文中)公開(kāi)了可以用于將被壓縮的視頻流傳送到一個(gè)或多個(gè)客戶端430的視頻編解碼器。另外,上述申請(qǐng)還公開(kāi)了每個(gè)服務(wù)器420是如何利用GPU的并行處理資源來(lái)生成視頻數(shù)據(jù)并流式傳輸給客戶端430的。特定的實(shí)施例可以通過(guò)硬件、軟件或硬件和軟件的結(jié)合來(lái)實(shí)現(xiàn)。例如但不限于,一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)可以運(yùn)行特定的邏輯或軟件以實(shí)施在此所描述或展示的一個(gè)或多個(gè)過(guò)程的一個(gè)或多個(gè)步驟。在適當(dāng)情況下,一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)可以為單一式或分布式架設(shè)的多計(jì)算機(jī)系統(tǒng)或多數(shù)據(jù)中心。本發(fā)明適用任何合適的計(jì)算機(jī)系統(tǒng)。在特定的實(shí)施例中,完成在此所描述或展示的一個(gè)或多個(gè)過(guò)程的一個(gè)或多個(gè)步驟不必局限于一個(gè)或多個(gè)特定的地理位置,并且不需要一定具有時(shí)間限制。舉例而言但并不僅限于此,一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)可以以“實(shí)時(shí)”,“線下”,或“批處理模式”執(zhí)行它們的功能,另外,在適當(dāng)情況下,也可以以前述的“實(shí)時(shí)”、“線下”、“批處理模式”的合適的組合執(zhí)行。在適當(dāng)情況下,一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)可以在不同時(shí)間,不同位置,使用不同處理過(guò)程來(lái)執(zhí)行它們的一部分或多部分功能。此處,有關(guān)的邏輯可以包括軟件,并且在適當(dāng)情況下,反之亦然。有關(guān)的軟件可以包括一個(gè)或多個(gè)計(jì)算機(jī)程序,并且在適當(dāng)情況下,反之亦然。有關(guān)的軟件可以包括數(shù)據(jù),指令,或兩者,并且在適當(dāng)情況下,反之亦然。類似地,有關(guān)的數(shù)據(jù)可以包括指令,并且在適當(dāng)情況 下,反之亦然。一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以存儲(chǔ)或在其他情況下包括實(shí)現(xiàn)特定實(shí)施例的軟件。在適當(dāng)情況下,計(jì)算機(jī)可讀介質(zhì)可以是任何能夠執(zhí)行、通信、包含、持有、保持、傳播、保留、存儲(chǔ)、傳送、輸送,或在其他情況下包括軟件的介質(zhì)。在適當(dāng)情況下,計(jì)算機(jī)可讀介質(zhì)可以是生物的、化學(xué)的、電子的、電磁的、紅外的、磁性的、光學(xué)的、量子的或其他合適的介質(zhì)或者兩種或兩種以上此類介質(zhì)的組合。計(jì)算機(jī)可讀介質(zhì)可以包括一個(gè)或多個(gè)納米級(jí)部件或在其他情況下包含納米級(jí)的設(shè)計(jì)或制造。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的例子包括但不限于,光盤(CD),現(xiàn)場(chǎng)可編程門陣列(FPGA),軟盤,軟式光盤,硬盤,全息存儲(chǔ)設(shè)備,集成電路(IC)(諸如專用集成電路(ASIC)),磁帶,高速緩沖存儲(chǔ)器,可編程邏輯器件(PLD),隨機(jī)存儲(chǔ)器(RAM)設(shè)備,只讀存儲(chǔ)器(ROM)設(shè)備,半導(dǎo)體存儲(chǔ)設(shè)備,以及其他合適的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在合適的情況下,實(shí)施特定實(shí)施例的軟件可以以任何合適的編程語(yǔ)言(其可以是程序性的或面向?qū)ο蟮?或編程語(yǔ)言的組合來(lái)編寫。在合適的情況下,任何合適類型的計(jì)算機(jī)系統(tǒng)(諸如單處理器或多處理器計(jì)算機(jī)系統(tǒng))或多個(gè)系統(tǒng)都可以運(yùn)行實(shí)施特定實(shí)施例的軟件。在合適的情況下,通用計(jì)算機(jī)系統(tǒng)也可以運(yùn)行實(shí)施特定實(shí)施例的軟件。例如,圖5示出了一個(gè)示例性的計(jì)算機(jī)系統(tǒng)500,該系統(tǒng)適用于實(shí)現(xiàn)特定實(shí)施例的一部分或多部分。盡管本發(fā)明描述并展示了特定配置下的具有特定部件的特定計(jì)算機(jī)系統(tǒng)500,但本發(fā)明適用在任何合適配置下具有任何合適部件的任何合適的計(jì)算機(jī)系統(tǒng)。此外,計(jì)算機(jī)系統(tǒng)500可以采取任何合適的物理結(jié)構(gòu),諸如一個(gè)或多個(gè)集成電路(1C),一個(gè)或多個(gè)印刷電路板(PCB),一個(gè)或多個(gè)手持設(shè)備或其他設(shè)備(諸如移動(dòng)電話或PDA),一個(gè)或多個(gè)個(gè)人電腦,或者一個(gè)或多個(gè)超級(jí)計(jì)算機(jī)。系統(tǒng)總線510將計(jì)算機(jī)系統(tǒng)500的子系統(tǒng)彼此相互連接起來(lái)。此處,有關(guān)的總線包括一個(gè)或多個(gè)服務(wù)公共功能的數(shù)字信號(hào)線。本發(fā)明適用任何合適的系統(tǒng)總線510,該系統(tǒng)總線510包括具有任何適當(dāng)?shù)目偩€架構(gòu)的任何合適的總線結(jié)構(gòu)(諸如一個(gè)或多個(gè)內(nèi)存總線,一個(gè)或多個(gè)外圍總線,一個(gè)或多個(gè)局部總線,或者上述幾種總線的組合)??偩€架構(gòu)的例子包括但不限于,工業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)總線,增強(qiáng)ISA (EISA)總線,微通道架構(gòu)(MCA)總線,視頻電子標(biāo)準(zhǔn)協(xié)會(huì)局域(VLB)總線,外圍設(shè)備互聯(lián)(PCI)總線,PCI-Express總線(PCI-X),以及加速圖形接口(AGP)總線。計(jì)算機(jī)系統(tǒng)500包括一個(gè)或多個(gè)處理器520(或中央處理單元(CPU))。處理器520可以包括用于指令、數(shù)據(jù)或計(jì)算機(jī)地址的臨時(shí)本地存儲(chǔ)的高速緩沖存儲(chǔ)器522。處理器520與一個(gè)或多個(gè)存儲(chǔ)設(shè)備連接,其包括內(nèi)存530。內(nèi)存530可以包括隨機(jī)存儲(chǔ)器(RAM)532和只讀存儲(chǔ)器(ROM)534。數(shù)據(jù)和指令可以在處理器520和RAM532之間雙向傳送。數(shù)據(jù)和指令可以單向地從R0M534傳送到處理器520。RAM532和R0M534可以包括任何合適的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
計(jì)算機(jī)系統(tǒng)500包括雙向連接到處理器520上的固定存儲(chǔ)器540。固定存儲(chǔ)器540可以通過(guò)存儲(chǔ)控制單元552連接到處理器520上。固定存儲(chǔ)器540可以提供額外的數(shù)據(jù)存儲(chǔ)容量并且可以包括任何合適的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。固定存儲(chǔ)器540可存儲(chǔ)操作系統(tǒng)(OS) 542,一個(gè)或多個(gè)可執(zhí)行文件544,一個(gè)或多個(gè)應(yīng)用程序或程序546,數(shù)據(jù)548,等等。固定存儲(chǔ)器540典型地是比主存儲(chǔ)器慢的二級(jí)存儲(chǔ)介質(zhì)(諸如硬盤)。在合適的情況下,存儲(chǔ)在固定存儲(chǔ)器540中的信息可以作為虛擬內(nèi)存結(jié)合到內(nèi)存530中。處理器520可以連接多個(gè)界面,諸如,例如圖形控制554,視頻界面558,輸入界面560,輸出界面562和存儲(chǔ)界面564,這些界面又可以分別連接到合適的設(shè)備上。輸入或輸出設(shè)備的例子包括但不限于,視頻顯示器,軌跡球,鼠標(biāo),鍵盤,麥克風(fēng),觸敏顯示器,讀卡器,磁帶或紙帶讀取器,平板電腦,手寫筆,聲音或手寫識(shí)別器,生物特征讀取器,或計(jì)算機(jī)系統(tǒng)。網(wǎng)絡(luò)界面556可以將處理器520連接到另一計(jì)算機(jī)系統(tǒng)或網(wǎng)絡(luò)580。借助于網(wǎng)絡(luò)界面556,處理器520可以在執(zhí)行特定的實(shí)施例的各個(gè)步驟的過(guò)程中從網(wǎng)絡(luò)580接收信息或給網(wǎng)絡(luò)580發(fā)送信息。特定的實(shí)施例可以在處理器520上單獨(dú)地實(shí)行。特定的實(shí)施例可以在處理器520上以及在一起操作的一個(gè)或多個(gè)遠(yuǎn)程處理器上實(shí)行。在網(wǎng)絡(luò)環(huán)境中,在計(jì)算機(jī)系統(tǒng)500連接網(wǎng)絡(luò)580的情況下,計(jì)算機(jī)系統(tǒng)500可以與連接網(wǎng)絡(luò)580的其他設(shè)備通信。計(jì)算機(jī)系統(tǒng)500可以通過(guò)網(wǎng)絡(luò)界面556與網(wǎng)絡(luò)580通信。例如,計(jì)算機(jī)系統(tǒng)500可以接收來(lái)自網(wǎng)絡(luò)580的在網(wǎng)絡(luò)界面556呈現(xiàn)為一個(gè)或多個(gè)輸入數(shù)據(jù)包的形式的信息(諸如來(lái)自另一設(shè)備的請(qǐng)求或響應(yīng)),并且內(nèi)存530可以存儲(chǔ)該輸入數(shù)據(jù)包以用于隨后的處理。計(jì)算機(jī)系統(tǒng)500可以以來(lái)自網(wǎng)絡(luò)界面556的呈一個(gè)或多個(gè)輸出數(shù)據(jù)包形式的信息(諸如給另一設(shè)備的請(qǐng)求或響應(yīng))發(fā)送給網(wǎng)絡(luò)580,所述信息在發(fā)送之前可由內(nèi)存530存儲(chǔ)。根據(jù)特定的需要,處理器520可以訪問(wèn)內(nèi)存530中的輸入或輸出數(shù)據(jù)包以對(duì)其進(jìn)行處理。計(jì)算機(jī)系統(tǒng)500可以具有一個(gè)或多個(gè)輸入設(shè)備566 (其可以包括按鍵,鍵盤,鼠標(biāo),手寫筆,等等),一個(gè)或多個(gè)輸出設(shè)備568 (其可以包括一個(gè)或多個(gè)顯不器,一個(gè)或多個(gè)揚(yáng)聲器,一個(gè)或多個(gè)打印機(jī),等等),一個(gè)或多個(gè)存儲(chǔ)設(shè)備570,以及一個(gè)或多個(gè)存儲(chǔ)介質(zhì)572。輸入設(shè)備566可以在計(jì)算機(jī)系統(tǒng)500的內(nèi)部或外部。輸出設(shè)備568可以在計(jì)算機(jī)系統(tǒng)500的內(nèi)部或外部。存儲(chǔ)設(shè)備570可以在計(jì)算機(jī)系統(tǒng)500的內(nèi)部或外部。存儲(chǔ)介質(zhì)572可以在計(jì)算機(jī)系統(tǒng)500的內(nèi)部或外部。特定的實(shí)施例包含一個(gè)或多個(gè)計(jì)算機(jī)存儲(chǔ)產(chǎn)品,該產(chǎn)品包括一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該介質(zhì)包含用于實(shí)施本文中所述或所展示的一個(gè)或多個(gè)過(guò)程中的一個(gè)或多個(gè)步驟的軟件。在特定的實(shí)施例中,介質(zhì)的一部分或多個(gè)部分,軟件,或它們兩者可以被特別設(shè)計(jì)并制造,以實(shí)施本文中所述或所展示的一個(gè)或多個(gè)過(guò)程中的一個(gè)或多個(gè)步驟。另外或作為一種選擇方案,在特定的實(shí)施例中,介質(zhì)的一部分或多個(gè)部分,軟件,或它們兩者可以是通用的而沒(méi)有針對(duì)本文中所述或所展示的過(guò)程進(jìn)行特別設(shè)計(jì)和制造。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的例子包括但不限于,⑶(諸如⑶-ROM),F(xiàn)PGA,軟盤,軟式光盤,硬盤,全息存儲(chǔ)設(shè)備,IC(諸如ASIC),磁帶,高速緩沖存儲(chǔ)器,PLD, RAM設(shè)備,ROM設(shè)備,半導(dǎo)體存儲(chǔ)設(shè)備,以及其他合適的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在特定的實(shí)施例中,軟件可以為編譯器可以生成的機(jī)器碼,或者一個(gè)或多個(gè)包含更高級(jí)別的編碼的文件,所述更高級(jí)別的編碼可由計(jì)算機(jī)通過(guò)使用解釋器來(lái)執(zhí)行。
舉例而言但并不局限于此,內(nèi)存530可以包括一個(gè)或多個(gè)包含軟件的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),并且計(jì)算機(jī)系統(tǒng)500可以提供本文中所述或所展示的特定功能作為處理器520執(zhí)行該軟件的結(jié)果。內(nèi)存530可以存儲(chǔ)該軟件,而處理器520可以運(yùn)行該軟件。通過(guò)網(wǎng)絡(luò)界面556,內(nèi)存530可以從在包含軟件的大容量存儲(chǔ)設(shè)備530上的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中或者從一個(gè)或多個(gè)其他源中讀取軟件。當(dāng)運(yùn)行軟件時(shí),處理器520可以執(zhí)行本文中所述或所展示的一個(gè)或多個(gè)過(guò)程中的一個(gè)或多個(gè)步驟,其可以包括根據(jù)特定需求定義內(nèi)存530中用于存儲(chǔ)的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu),以及按照由軟件的一個(gè)或多個(gè)部分的指引修改一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)。另外或作為一種選擇方案,由于硬連線在電路中的或在電路中以其他方式體現(xiàn)的邏輯,計(jì)算機(jī)系統(tǒng)500可以提供本文中所述或所示的特定功能,其可以代替軟件或與軟件一起運(yùn)行,以執(zhí)行本文中所述或所示的一個(gè)或多個(gè)過(guò)程中的一個(gè)或多個(gè)步驟。根據(jù)特定需求,本發(fā)明公開(kāi)的技術(shù)方案包含硬件和軟件的任何合適的組合。在特定的實(shí)施例中,計(jì)算機(jī)系統(tǒng)500可以包括一個(gè)或多個(gè)圖形處理單元(GPU)524。在特定的實(shí)施例中,GPU524可以包括一個(gè)或多個(gè)針對(duì)常用于圖形渲染中的數(shù)學(xué)運(yùn)算的集成電路和/或處理核。在一些實(shí)施例中,GPU524可以采用專門的圖形單元指令組,而在其他實(shí)施方案中,GPU可以采用類似CPU的(例如改進(jìn)的x86)指令組。圖形處理單元524可以完成大量圖形基元操作,諸如位塊圖像傳送,紋理映射,像素著色,幀緩沖,以及類似操作。在特定的實(shí)施例中,GPU524可以是圖形加速器,通用GPU (GPGPU),或任何其他合適的處理單元。在特定的實(shí)施例中,GPU524可以體現(xiàn)在圖形卡或顯示卡中,該圖形卡或顯示卡通過(guò)卡槽安裝在硬件系統(tǒng)架構(gòu)上。在其他實(shí)施例中,GPU524可以集成在計(jì)算機(jī)系統(tǒng)架構(gòu)的主板上。合適的圖形處理單??梢园ɑ贏dvanced Micro Devices (r) AMD R7XX的GPU設(shè)備(Radeon (r) HD 4XXX),基于 AMD R8XX 的 GPU 設(shè)備(Radeon (r) HD5XXX),基于 Intel (r)Larabee 的 GPU 設(shè)備(未發(fā)布),nVidia (r) 8 系列 GPU, nVidia (r) 9 系列 GPU, nVidia (r) 100系列 GPU, nVidia (r) 200 系列 GPU,以及任何其他 DXll-capable GPU。盡管本發(fā)明的說(shuō)明書描述或展示了按照特定順序發(fā)生的特定操作,但本發(fā)明適用按照任何合適的順序發(fā)生的任何合適的操作。另外,本發(fā)明適用按任何合適順序重復(fù)一次或多次的任何合適的操作。盡管本發(fā)明的說(shuō)明書描述或展示了特定操作依次發(fā)生,但在合適的情況下,本發(fā)明適用基本上同時(shí)發(fā)生的任何合適操作。在合適的情況下,本文中所述或所示的任何合適的操作或操作順序可以被中斷,暫停,或被另一過(guò)程(諸如操作系統(tǒng)或內(nèi)核)控制。動(dòng)作能夠在操作系統(tǒng)環(huán)境中進(jìn)行或作為占據(jù)系統(tǒng)處理過(guò)程的全部或主要部分的獨(dú)立應(yīng)用程序的流程進(jìn)行。本發(fā)明的公開(kāi)內(nèi)容涵蓋本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)理解的對(duì)本文所述具體實(shí)施例做出的所有改變,置換,變化,替代和修改。同樣,在合適的情況下,所附的權(quán)利要求書涵蓋本領(lǐng)域普通技術(shù)人員可以理解的對(duì)本文所述具體實(shí)施例做出的所有改變,置換,變化,替代和修改。
權(quán)利要求
1.一種方法,包括在計(jì)算機(jī)系統(tǒng)上托管多個(gè)應(yīng)用程序?qū)嵗總€(gè)應(yīng)用程序?qū)嵗龑?duì)應(yīng)一遠(yuǎn)程客戶端應(yīng)用程序;保持與為其托管應(yīng)用程序?qū)嵗拿總€(gè)所述遠(yuǎn)程客戶端應(yīng)用程序的網(wǎng)絡(luò)連接;在至少兩個(gè)所述遠(yuǎn)程客戶端應(yīng)用程序之間分配所述計(jì)算機(jī)系統(tǒng)的圖形處理單元的資源;利用所述計(jì)算機(jī)系統(tǒng)的所述圖形處理單元的所述資源,同時(shí)渲染相應(yīng)于所述至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序的所述應(yīng)用程序?qū)嵗膱D形輸出;通過(guò)相應(yīng)的網(wǎng)絡(luò)連接,將經(jīng)渲染的圖形輸出傳輸給所述至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述圖形處理單元的所述資源包括內(nèi)存,以及在所述至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序之間分配所述圖形處理單元的資源的步驟包括將所述內(nèi)存的特定部分分配給所述至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序中的每一個(gè)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,每個(gè)經(jīng)渲染的圖像輸出存儲(chǔ)在被分配給對(duì)應(yīng)遠(yuǎn)程客戶端應(yīng)用程序的所述內(nèi)存的所述部分中。
4.根據(jù)權(quán)利要求I所述的方法,還包括如下所述步驟,即,利用所述計(jì)算機(jī)系統(tǒng)的所述圖形處理單元的所述資源,在傳輸之前對(duì)所述經(jīng)渲染的圖像輸出同時(shí)進(jìn)行編碼。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,每個(gè)經(jīng)渲染的圖形輸出被編碼并且在視頻流中被傳輸給所述對(duì)應(yīng)的遠(yuǎn)程客戶端應(yīng)用程序。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述應(yīng)用程序?qū)嵗乃鰣D形輸出在單次渲染中被渲染;所述應(yīng)用程序?qū)嵗乃鼋?jīng)渲染的圖形輸出在單次編碼中被編碼。
7.一種方法,包括由第一計(jì)算機(jī)系統(tǒng)訪問(wèn)多組渲染參數(shù),其中,所述第一計(jì)算機(jī)系統(tǒng)被連接到多個(gè)第二計(jì)算機(jī)系統(tǒng);所述多組渲染參數(shù)中的每一組對(duì)應(yīng)于所述多個(gè)第二計(jì)算機(jī)系統(tǒng)中特定一個(gè)第二計(jì)算機(jī)系統(tǒng);所述第一計(jì)算機(jī)系統(tǒng)包括用于存儲(chǔ)圖像的渲染目標(biāo);并且所述渲染目標(biāo)在所述多個(gè)第二計(jì)算機(jī)系統(tǒng)之間共享;基于所述多組渲染參數(shù),由所述第一計(jì)算機(jī)系統(tǒng)為所述多個(gè)第二計(jì)算機(jī)系統(tǒng)同時(shí)渲染多個(gè)圖像,其中,基于對(duì)應(yīng)于所述多個(gè)第二計(jì)算機(jī)系統(tǒng)中的特定一個(gè)第二計(jì)算機(jī)系統(tǒng)的所述多組渲染參數(shù)中的特定一組渲染參數(shù),為所述多個(gè)第二計(jì)算機(jī)系統(tǒng)中的特定一個(gè)第二計(jì)算機(jī)系統(tǒng)渲染所述多個(gè)圖像中的每個(gè)圖像并將其存儲(chǔ)在所述渲染目標(biāo)中;以及由所述第一計(jì)算機(jī)系統(tǒng)將所述多個(gè)圖像中的每個(gè)圖像傳輸給所述多個(gè)第二計(jì)算機(jī)系統(tǒng)中的已經(jīng)為其渲染圖像的所述特定一個(gè)第二計(jì)算機(jī)系統(tǒng)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述渲染目標(biāo)被分為多個(gè)渲染目標(biāo)單元;所述多個(gè)渲染目標(biāo)單元中的每一個(gè)用于存儲(chǔ)至少一個(gè)像素;所述多個(gè)第二計(jì)算機(jī)系統(tǒng)中的每一個(gè)被分配所述多個(gè)渲染目標(biāo)單元中的至少一個(gè);所述多個(gè)圖像中的每一個(gè)被渲染到所述多個(gè)渲染目標(biāo)單元中的至少一個(gè)渲染目標(biāo)單元中,所述至少一個(gè)渲染目標(biāo)單元被分配給所述多個(gè)第二計(jì)算機(jī)系統(tǒng)中的已經(jīng)為其渲染圖像的所述特定一個(gè)第二計(jì)算機(jī)系統(tǒng)。
9.根據(jù)權(quán)利要求7所述的方法,還包括如下所述步驟,即,在傳輸之前由所述第一計(jì)算機(jī)系統(tǒng)對(duì)所述多個(gè)圖像同時(shí)進(jìn)行編碼。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述多個(gè)圖像中的每個(gè)圖像被編碼為多個(gè)視頻流中的特定一個(gè)視頻流的當(dāng)前幀;以及所述多個(gè)視頻流中的每個(gè)視頻流對(duì)應(yīng)于所述多個(gè)第二計(jì)算機(jī)系統(tǒng)中的特定一個(gè)第二計(jì)算機(jī)系統(tǒng)。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,由所述第一計(jì)算機(jī)系統(tǒng)將所述多個(gè)圖像中的每個(gè)圖像傳輸給所述多個(gè)第二計(jì)算機(jī)系統(tǒng)中的已經(jīng)為其渲染圖像的所述特定一個(gè)第二計(jì)算機(jī)系統(tǒng)的步驟包括,由所述第一計(jì)算機(jī)系統(tǒng)將所述多個(gè)視頻流中的每個(gè)視頻流傳輸給所述多個(gè)第二計(jì)算機(jī)系統(tǒng)中的所述對(duì)應(yīng)的一個(gè)第二計(jì)算機(jī)系統(tǒng)。
12.根據(jù)權(quán)利要求7所述的方法,還包括如下所述步驟,即,由所述第一計(jì)算機(jī)系統(tǒng)更新所述多組渲染參數(shù)。
13.根據(jù)權(quán)利要求12所述的方法,其特征在于,特定的計(jì)算機(jī)程序的實(shí)例在所述多個(gè)第二計(jì)算機(jī)系統(tǒng)的每個(gè)第二計(jì)算機(jī)系統(tǒng)上運(yùn)行;以及在所述多個(gè)第二計(jì)算機(jī)系統(tǒng)的每個(gè)第二計(jì)算機(jī)系統(tǒng)上運(yùn)行的所述特定計(jì)算機(jī)程序的實(shí)例的當(dāng)前狀態(tài)決定與所述第二計(jì)算機(jī)系統(tǒng)相對(duì)應(yīng)的所述多組渲染參數(shù)中的特定一組渲染參數(shù)。
14.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述多組渲染參數(shù)中的每組渲染參數(shù)包括至少一個(gè)著色器常數(shù)。
15.—種系統(tǒng),包括內(nèi)存,其包括由一個(gè)或多個(gè)處理器可執(zhí)行的指令;圖形處理單元;以及一個(gè)或多個(gè)處理器,其連接所述內(nèi)存并可操作地執(zhí)行所述指令,所述一個(gè)或多個(gè)處理器可在執(zhí)行所述指令時(shí)操作,從而托管多個(gè)應(yīng)用程序?qū)嵗?,每個(gè)應(yīng)用程序?qū)嵗龑?duì)應(yīng)于一遠(yuǎn)程客戶端應(yīng)用程序;保持與為其托管應(yīng)用程序?qū)嵗拿總€(gè)所述遠(yuǎn)程客戶端應(yīng)用程序的網(wǎng)絡(luò)連接;在至少兩個(gè)所述遠(yuǎn)程客戶端應(yīng)用程序之間分配所述圖形處理單元的資源;利用所述圖形處理單元的所述資源同時(shí)渲染對(duì)應(yīng)于所述至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序的所述應(yīng)用程序?qū)嵗膱D形輸出;通過(guò)相應(yīng)的網(wǎng)絡(luò)連接,將經(jīng)渲染的圖形輸出傳輸給所述至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序。
16.一種或多種計(jì)算機(jī)可讀的有形存儲(chǔ)介質(zhì),該介質(zhì)包括在由一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)執(zhí)行時(shí)可操作的軟件,從而托管多個(gè)應(yīng)用程序?qū)嵗?,每個(gè)應(yīng)用程序?qū)嵗龑?duì)應(yīng)于一個(gè)遠(yuǎn)程客戶端應(yīng)用程序;保持與為其托管應(yīng)用程序?qū)嵗拿總€(gè)所述遠(yuǎn)程客戶端應(yīng)用程序的網(wǎng)絡(luò)連接;在至少兩個(gè)所述遠(yuǎn)程客戶端應(yīng)用程序之間分配所述圖形處理單元的資源;利用所述圖形處理單元的所述資源同時(shí)渲染對(duì)應(yīng)于所述至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序的所述應(yīng)用程序?qū)嵗膱D形輸出;以及通過(guò)相應(yīng)的網(wǎng)絡(luò)連接,將經(jīng)渲染的圖形輸出傳輸給所述至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序。
全文摘要
本發(fā)明公開(kāi)的方法、設(shè)備和系統(tǒng)涉及在計(jì)算機(jī)系統(tǒng)上托管多個(gè)應(yīng)用程序?qū)嵗總€(gè)應(yīng)用程序?qū)嵗龑?duì)應(yīng)于一個(gè)遠(yuǎn)程客戶端應(yīng)用程序;保持與為其托管應(yīng)用程序?qū)嵗拿總€(gè)遠(yuǎn)程客戶端應(yīng)用程序的網(wǎng)絡(luò)連接;在至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序之間分配計(jì)算機(jī)系統(tǒng)中圖形處理單元的資源;利用計(jì)算機(jī)系統(tǒng)的圖形處理單元的資源,同時(shí)渲染對(duì)應(yīng)于至少兩個(gè)遠(yuǎn)程客戶端的應(yīng)用程序?qū)嵗膱D形輸出;以及通過(guò)相應(yīng)的網(wǎng)絡(luò)連接將經(jīng)渲染的圖像輸出傳輸給至少兩個(gè)遠(yuǎn)程客戶端應(yīng)用程序。
文檔編號(hào)G06F15/16GK102959517SQ201180028557
公開(kāi)日2013年3月6日 申請(qǐng)日期2011年6月10日 優(yōu)先權(quán)日2010年6月10日
發(fā)明者朱利安·M·烏爾巴赫 申請(qǐng)人:Otoy公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
维西| 三原县| 驻马店市| 水富县| 青铜峡市| 大庆市| 肃南| 专栏| 合肥市| 江川县| 陆河县| 鱼台县| 丹巴县| 白河县| 灵石县| 四会市| 正蓝旗| 阜阳市| 布尔津县| 特克斯县| 墨江| 合江县| 通城县| 普宁市| 洪泽县| 白水县| 新竹市| 石嘴山市| 洪洞县| 勐海县| 永城市| 灵丘县| 随州市| 如东县| 井冈山市| 文化| 双峰县| 沙坪坝区| 大同市| 应用必备| 赣州市|