子畫面圖形渲染系統(tǒng)的制作方法
【專利說明】子畫面圖形渲染系統(tǒng)
【背景技術】
[0001] 本公開整體涉及計算機圖形領域。更具體地,但并非作為限制,本公開涉及在與圖 形處理單元(GPU) -起使用的渲染系統(tǒng)中用于操控子畫面(sprite)的技術。
[0002] 子畫面是一種集成到更大場景中的二維(2D)圖像或動畫??蓪⒆赢嬅嬗成涞饺?維(3D)場景中。可從任何來源創(chuàng)建子畫面,該任何來源包括預先渲染的圖像、動態(tài)3D圖 形、矢量圖并且甚至文本。由于圖形處理單元(GPU)已變得可用,因此已開發(fā)出子畫面庫和 圖形處理例程以提供一種渲染系統(tǒng),該渲染系統(tǒng)允許使用GPU的能力以用于更快地渲染圖 形,而不是完全依賴于普通中央處理單元(CPU)的處理能力。通常,CPU和GPU兩者均在由 這些庫提供的圖形處理操作中涉及到,其中大部分圖形處理是由GPU進行的。
[0003] 這些渲染系統(tǒng)通常在場景樹中表示圖形操作。場景圖是一種布置圖形場景的邏輯 和常見(但未必一定)空間表示的結構。場景圖是圖或樹結構中的節(jié)點的集合。節(jié)點可有 很多子節(jié)點,但常常僅有單一父節(jié)點,其中父節(jié)點的效果適用于所有其子節(jié)點。在一個組上 執(zhí)行的操作將其效果自動傳播到其所有成員。常見的特征是能夠將相關形狀/對象分組成 復合對象,然后可如單個對象那樣容易地移動、變換、選擇等。
【發(fā)明內容】
[0004] 本發(fā)明提供了圖形渲染系統(tǒng)的軟件開發(fā)者工具包(SDK)形式的一組工具以改善 總體圖形操作。一般來講,該工具涉及分析場景樹并將其呈現(xiàn)優(yōu)化為一個或多個圖形處理 單元(GPU),以便改善渲染操作。這一總體目標是通過若干不同功能提供的,通過新的應用 編程接口(API)向軟件開發(fā)者呈現(xiàn)每種功能。
【附圖說明】
[0005] 圖1是示出了圖形渲染系統(tǒng)的一個實施例的框圖。
[0006] 圖2是示出了具有多個并行操作以同時執(zhí)行多個線程的計算處理器(例如計算單 元)的計算設備的實例的框圖。
[0007] 圖3是表示簡單場景圖的樹圖。
[0008] 圖4是示出了根據(jù)一個實施例的自動批處理技術的流程圖。
[0009] 圖5是示出了根據(jù)一個實施例的用于使用索引緩沖區(qū)和頂點緩沖區(qū)的技術的流 程圖。
[0010] 圖6是示出了根據(jù)一個實施例的由效果節(jié)點代替子樹的簡單場景圖的圖示。
[0011] 圖7是示出了根據(jù)一個實施例的用于生成效果節(jié)點的技術的流程圖。
[0012] 圖8是示出了根據(jù)一個實施例的用于自動生成紋理圖集的技術的流程圖。
[0013] 圖9是不出了根據(jù)一個實施例的實例場景圖和掩蔽場景圖的子樹的兩種方式的 圖示。
[0014] 圖10是示出了根據(jù)一個實施例的用于植染系統(tǒng)的視錐(view frustrum)的框圖。
[0015] 圖11是示出了根據(jù)一個實施例的用于使用模板緩沖區(qū)進行掩蔽的技術的流程 圖。
[0016]圖12是根據(jù)一個實施例的與渲染系統(tǒng)一起使用的計算機系統(tǒng)的框圖。
【具體實施方式】
[0017] 在以下描述中,出于解釋的目的闡述了許多具體細節(jié)以便提供對本發(fā)明的徹底理 解。然而,對本領域的技術人員而言將顯而易見的是,可在不存在這些具體的情況下實踐本 發(fā)明。在其他情況下,以框圖的形式示出了結構和設備,以便避免模糊本發(fā)明。提到?jīng)]有下 標或后綴的數(shù)字將被理解為參考與所提到數(shù)字對應的下標和后綴的所有情況。此外,本公 開中所使用的語言主要被選擇用于可讀性和指導性目的,并且可能沒有被選擇為劃定或限 定該發(fā)明性主題,訴諸于所必需的權利要求以確定此類發(fā)明性主題。在說明書中提到"一個 實施例"或"一種實施例"意指包括在本發(fā)明的至少一個實施例中的結合該實施例進行描述 的特定特征、結構或特性,并且多次提到"一個實施例"或"一種實施例"不應被理解為全部 必然地參考相同的實施例。
[0018] 下圖中示出的過程由處理邏輯部件執(zhí)行,該處理邏輯部件包括硬件(例如電路、 專用邏輯部件等)、軟件(諸如在通用計算機或專用機器上運行的軟件)、或兩者的組合。盡 管下文根據(jù)一些順序操作描述了各過程,但可按照不同的次序執(zhí)行所述的一些操作,并可 并行而非順序地執(zhí)行一些操作。
[0019] 圖形處理單元(GPU)可以是實施非常高效的圖形操作諸如2D、3D圖形操作和/或 數(shù)字視頻相關功能的專用圖形處理器。GPU可包括專用(可編程)硬件以執(zhí)行圖形操作,例 如,位塊傳輸器操作、紋理映射、多邊形渲染、像素著色和頂點著色。已知GPU會從幀緩沖區(qū) 獲取數(shù)據(jù)并將像素混合到一起以將圖像返回到幀緩沖區(qū)中以用于進行顯示。GPU還可控制 幀緩沖區(qū),并允許使用幀緩沖區(qū)來刷新顯示器,諸如CRT或IXD顯示器。常規(guī)上,GPU可從 與GPU耦接的一個或多個中央處理單元(CPU)獲取圖形處理任務,以通過顯示控制器向顯 示設備輸出光柵圖形圖像。
[0020] 典型的GPU通常是單指令多數(shù)據(jù)(SMD)設備,其中每條指令可以并行操作多條數(shù) 據(jù)。正如CPU從單個處理單元發(fā)展到能夠在每個核中獨立執(zhí)行指令的多核處理器那樣,更 新近的GPU提供矢量計算的"通道",可以將每個通道理解為獨立的線程。單一硬件序列發(fā) 生器通常并行操作一組此類線程。如果全部執(zhí)行同一指令,它們就可以說是相干的。單一 指令取出被廣播到所有單個處理元件。如果線程在不同方向上出現(xiàn)分支,則它們被稱為分 叉的。單一指令序列發(fā)生器跟蹤哪些線程已分叉。在它的每個周期獲取單個指令并將其分 配到掩碼啟用的所有那些處理元件。
[0021] 圖1是示出了圖形渲染系統(tǒng)100的一個實施例的框圖,圖形渲染系統(tǒng)100使用包 括CPU和/或GPU的計算設備來為應用程序執(zhí)行并行計算。系統(tǒng)100可實施并行計算架構。 在一個實施例中,系統(tǒng)100可以是包括通過數(shù)據(jù)總線190與一個或多個CPU 170和一個或 多個GPU 180耦接的一個或多個主機處理器的圖形系統(tǒng)。可在主機系統(tǒng)110中將多個主機 處理器聯(lián)網(wǎng)在一起。多個CPU 170可包括來自不同供應商的多核CPU。計算處理器或計算 單元諸如CPU或GPU可與一組功能相關聯(lián)。例如,GPU可具有專用的紋理渲染硬件。另一 個媒體處理器可以是支持專用紋理渲染硬件和雙精度浮點運算兩者的GPU。多個GPU可連 接在一起。
[0022] 在一個實施例中,主機系統(tǒng)110可支持軟件堆棧。軟件堆??砂ㄜ浖褩2考?諸如應用程序120、計算應用程序庫130、計算平臺層140,例如OpenCL平臺、計算運行時層 150和計算編譯器160。應用程序120可通過API調用與其他堆棧部件進行交互。一個或多 個處理元件或線程可針對主機系統(tǒng)110中的應用程序120同時運行。計算平臺層140可維 護數(shù)據(jù)結構或計算設備數(shù)據(jù)結構,為每個附接的物理計算設備存儲處理能力。在一個實施 例中,應用程序可通過計算平臺層140檢索關于主機系統(tǒng)110的可用處理資源的信息。應 用程序可通過計算平臺層140選擇和指定用于執(zhí)行處理任務的能力要求。因此,計算平臺 層140可為物理計算設備確定配置,以分配和初始化來自附接的CPU 170和/或GPU 180 的處理資源以用于處理任務。
[0023] 計算運行時層109可例如基于一個或多個邏輯計算設備根據(jù)應用程序103的配 置的處理資源來管理處理任務的執(zhí)行。在一個實施例中,執(zhí)行處理任務可包括創(chuàng)建表示處 理任務的計算程序對象以及分配存儲器資源,例如,用于保持可執(zhí)行文件、輸入/輸出數(shù)據(jù) 等。為計算程序對象