TW202341062A - 計算機圖形處理方法以及系統 - Google Patents
計算機圖形處理方法以及系統 Download PDFInfo
- Publication number
- TW202341062A TW202341062A TW112103386A TW112103386A TW202341062A TW 202341062 A TW202341062 A TW 202341062A TW 112103386 A TW112103386 A TW 112103386A TW 112103386 A TW112103386 A TW 112103386A TW 202341062 A TW202341062 A TW 202341062A
- Authority
- TW
- Taiwan
- Prior art keywords
- depth
- shading
- frame
- graphics
- thresholds
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title claims description 4
- 238000000034 method Methods 0.000 claims abstract description 87
- 238000012545 processing Methods 0.000 claims abstract description 58
- 238000009877 rendering Methods 0.000 claims description 20
- 238000013459 approach Methods 0.000 abstract description 14
- 238000004590 computer program Methods 0.000 abstract description 4
- 238000003860 storage Methods 0.000 description 20
- 230000007704 transition Effects 0.000 description 17
- 230000008859 change Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 10
- 238000009826 distribution Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 239000012634 fragment Substances 0.000 description 9
- 238000005070 sampling Methods 0.000 description 9
- 230000009466 transformation Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 239000000203 mixture Substances 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000013213 extrapolation Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000003908 quality control method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Generation (AREA)
Abstract
本文公開了用於通過以程式設計方式控制計算機圖形中的著色率來減少GPU負載的系統、方法和計算機程式產品實施例。 通過對不同的屏幕區域應用不同的著色率,可以減少 GPU 負載。 通過讀取先前幀的深度緩衝區並執行圖像處理,可以計算控制著色率的閾值。 該方法可以在任何支援 VRS 硬體和基於圖元或基於圖像的 VRS 的平臺上運行。 該方法可以應用於安裝在客戶端設備上的圖形驅動、硬體和驅動之間的固件層、驅動和應用之間的軟體層或客戶端設備上的硬體中。 該方法靈活且適應性強,根據應用生成的圖形計算和設置可變速率著色,無需應用開發者手動設置可變速率著色。
Description
本申請涉及圖像技術領域。
計算機圖形是軟體應用的基礎元素。圖形是虛擬視覺化技術,例如圖像、視頻以及真實或虛構對象的其他表示。廣泛的軟體應用使用計算機圖形作為其功能的一部分。此類應用包括遊戲、電影、多媒體/內容傳遞系統(content delivery system)、社交媒體工具、設計產品、文字處理器(word processor)、試算表(spreadsheet)、導航系統、移動應用和一些其他軟體工具。
計算機圖形已經發展為變得越來越豐富、奢華和複雜。逼真的3-D圖形現在很常見。解析度和畫面播放速率被擴展來支援詳細、逼真和沉浸式(immersive)的圖形。 然而,處理這些複雜的織綿圖形(graphical tapestry)需要大量的計算資源(例如 CPU、記憶體(memory)等)。圖形處理單元 (Graphics processing unit, GPU) 電路和其他專用硬體已被設計用於執行與渲染圖形相關的特定任務。
本發明實施例提供一種計算機圖形處理方法,包括:在具有一個或多個處理器的客戶端設備處處理至少一個圖形命令以形成計算機圖形的第一幀;通過處理與所述第一幀相關的深度緩衝區中的資訊來計算出一個或多個深度閾值;以及通過基於所述一個或多個深度閾值將一個或多個著色率應用於所述計算機圖形的第二幀的一個或多個屏幕區域來控制所述第二幀的著色率。
本發明實施例提供一種系統,包括:記憶體;至少一個處理器,耦接到所述記憶體並被配置為:在客戶端設備處處理至少一個圖形命令以呈現計算機圖形的第一幀;通過處理與所述第一幀相關聯的深度緩衝區中的資訊來計算一個或多個深度閾值;以及通過基於所述一個或多個深度閾值將一個或多個著色率應用於所述計算機圖形的第二幀的一個或多個屏幕區域來控制所述第二幀的著色率。
本發明實施例提供一種存儲有指令的非暫時性計算機可讀設備,當由至少一個計算設備執行時,使該至少一個計算設備執行包括以下操作的操作:在客戶端設備處處理至少一個圖形命令以形成計算機圖形的第一幀;通過處理與所述第一幀相關聯的深度緩衝區中的資訊來計算一個或多個深度閾值;以及通過基於所述一個或多個深度閾值將一個或多個著色率應用於所述計算機圖形的第二幀的一個或多個屏幕區域來控制所述第二幀的著色率。
本發明的上述實施例提供的技術方案可以減少執行計算機圖形處理方法的設備(例如GPU)的負載。
本文提供了系統、裝置、設備、方法和/或計算機程式產品實施例,和/或其組合和子組合,用於通過以程式設計方式控制圖形中的著色率來減少圖形處理單元(graphics processing unit,GPU)的負載。
一般而言,軟體應用以計算機圖形的形式呈現視覺化。例如,在計算機遊戲中,圖形可以讓玩家沉浸在虛擬世界中,虛擬世界是由虛擬對象組成的 3-D空間。玩家可以四處走動並與虛擬世界互動。圖形可以逐幀更新並回應玩家的動作。在另一個示例中,用戶可以觀看使用計算機圖形生成的電影或其他多媒體內容。這些表示中的單個圖像可以稱為幀。幀可以由多個表示對象的三角形或多邊形構成。連續幀的集合可以稱為場景(scene)。
已經創建了允許開發者設計、實現和將圖形集成到他們的軟體應用中並且向用戶傳遞、發佈和呈現這些圖形的圖形引擎。例如,開放圖形庫(Open Graphics Library, OpenGL)提供了用於渲染計算機圖形的跨平臺介面。此類引擎提供了一組開發者在設計計算機圖形時可以利用的功能,即應用程式設計發展介面(application programming interface, API)。
隨著圖形變得更加豐富和複雜,已經構建了專門的硬體來處理這些引擎使用的繪圖流水線(graphics pipeline)。這些專用硬體設備稱為GPU。本質上,渲染圖形需要快速高效地處理大量的頂點(vertice)/矩陣(matrice),GPU可以使用並行處理技術同時處理這些頂點/矩陣。對於此類任務,GPU可以實現比非專用CPU好幾個數量級的性能。這一發展為更複雜、更豐富的圖形的集成和傳遞打開了大門。
然而,隨著GPU演進以提供新功能、優化和並行化,開發者經常不得不安裝驅動(driver)並採用擴展來允許傳統圖形引擎利用新特徵。從這個意義上說,OpenGL等較舊的圖形引擎無法有效利用現代GPU的特徵。因此,較新的圖形引擎提供了專門設計用於利用現代圖形卡功能的API。此範例包括圖形引擎,例如Vulkan、Direct3D 12、Metal、虛幻引擎(Unreal Engine)等。這些工具利用現代GPU的並行處理能力,並為開發者提供對圖形硬體的最大控制。然而,這些現代引擎需要權衡取捨。也就是說,開發者必須與繁瑣和冗長的API交互,其中與圖形相關的每個細節都需要管理和控制。但是這些下一代圖形引擎與現代GPU的功能相結合,在渲染計算機圖形時提供了極高的性能。
現代圖形引擎可以採用繪圖流水線。繪圖流水線可以提供一種嚴格結構,以實現現代GPU的並行處理能力。本質上,繪圖流水線是由圖形引擎執行的一系列操作。繪圖流水線可以接收與計算機圖形中的合成多邊形相關的頂點、紋理和其他資訊。繪圖流水線執行渲染圖形所需的各種轉換步驟(transformative step)。例如,在Vulkan中,繪圖流水線執行輸入組裝(input assembly)、頂點著色、曲面細分(tessellation)、幾何著色、光柵化(rasterization)、片段著色(fragment shading)和顏色混合(color blending)。某些操作在繪圖流水線中可能是靜態的和不可變的,而其他操作可以是開發者使用API功能高度可控/可程式設計的。開發者可以使用例如OpenGL著色語言(OpenGL shading language,GLSL)來控制行為。
圖形引擎可以在渲染3-D圖形時使用深度緩衝區。深度緩衝區,也稱為z緩衝區或w緩衝區,是計算機圖形學中用於從特定角度表示3D空間中對象的深度資訊的資料緩衝區。深度緩衝區有助於渲染場景以確保合適的多邊形適當地遮擋其他多邊形。深度緩衝區存儲幀中每個像素位置的深度。
頂點著色器(vertex shader)是繪圖流水線中的一個階段。頂點著色器可以應用各種轉換步驟,這些步驟考慮了與幀中對象相關的位置、顏色、紋理、照明和其他因素。頂點著色器可以將在虛擬空間中每個頂點的3-D位置轉換為它出現在屏幕上的2-D座標。這種轉換可以稱為投影轉換。作為投影轉換的結果,可以計算深度值。 可以使用深度緩衝區執行深度測試,以解決幀中重疊多邊形之間的衝突。
現代圖形引擎和GPU提供的一個特定特徵稱為可變速率著色(variable rate shading , VRS)。VRS是指控制片段著色器(fragment shader)應用的對象的著色率的能力。如果沒有VRS,場景中的每個像素都會單獨著色。這種高級別的處理可能需要大量的GPU處理。使用VRS,在整個幀上像素著色率是可變的。例如,Vulkan圖形引擎提供了VRS擴展(VK_KHR_fragment_shading_rate),允許應用開發者控制整個幀的著色率。這使開發者可以根據他們的應用的特性將著色資源集中在需要提高渲染性能和質量的地方。例如,屏幕上的像素組可以被分配1x1的著色率,為像素組中的每個像素都調用一次片段著色器(fragment shader)。這對於需要高水準細節的像素可能很重要——例如,在視頻遊戲的視野中心。然而,某些像素可能不需要如此高水準的細節,並且對於這樣的像素,可以選擇較低的著色率,例如2x2、1x2、2x4、4x4等。這可以適用於在視野邊緣、背景、空白空間(empty space)等的像素。
隨著現代圖形引擎尋求最大限度地利用 GPU的能力,GPU壓力仍然是性能瓶頸和閾值。資源緊縮可能非常嚴重,以至於某些應用無法在某些設備上運行。此外,移動設備的GPU提供了不同的架構,考慮到它們獨特的操作需求—資源可能更稀缺,GPU可能不太穩健。因此,GPU的負載控制在移動設備上尤為重要。
因此,需要減少GPU的負載。一些傳統解決方案試圖減少GPU的負載,但這些傳統解決方案通過更改幀緩衝區大小來操作。這種方法同樣會影響整個屏幕的圖形質量,對整體的用戶體驗產生不利影響,並且不會獲得顯著的性能提升。
雖然VRS提供了減少GPU上的GPU負載的選擇,但傳統方法需要圖形應用的開發者為特定幀/場景設置VRS。例如,視頻遊戲開發者可以將視野中心中的著色率配置為較高級別,而在邊緣上的著色率配置為較低級別,以節省其應用消耗的資源。但是開發者必須做出這個決定並相應地對應用進行程式設計。終端用戶無法控制做出此決定和實施此決定。
因此,需要基於幀和場景的特性以程式設計方式執行VRS的部分質量控制。在所公開的方法中,可以通過對屏幕的不同區域應用不同的著色率來減少GPU負載。在一個實施例中,所公開的方法採用協同工作的深度分析器和著色率控制器來控制計算機圖形中的著色率。深度分析器回應繪圖流水線中的命令,通過讀取深度緩衝區來計算深度閾值。著色率控制器然後根據計算的閾值修改圖形命令以控制後續幀的著色率。通過應用該技術,終端用戶可以減少GPU負載,而不管圖形應用開發者程式設計的著色率如何。由於深度分析器智慧地計算深度閾值,因此可以在不犧牲有意義的質量的情況下減少GPU負載。
該技術可以在支援VRS硬體和基於圖元(primitive)或基於圖像的VRS的任何平臺上運行。當在驅動中實現時,這種方法避免了修改應用程式的需要。在一個實施例中,該技術應用於安裝在客戶端設備上的圖形驅動以修改/更新從圖形應用接收到的命令。在另一個實施例中,該技術可以應用在硬體和驅動之間的固件層中。在另一個實施例中,該技術可以應用在驅動和應用之間的軟體層中。在又一個實施例中,該技術可以在客戶端設備上的硬體中實施。
這些實施例的方案具有如下技術效果:通過將VRS應用於圖形以便減少GPU負載,同時也不需要應用開發者手動設定和程式設計實際應用中的著色率。而且,通過減少 GPU負載,可以降低設備的功耗。而且,該技術靈活且適應性強,可以以接近即時的方式根據任何合適的圖形應用所生成的幀配置VRS。
第1圖是根據一些實施例的包括客戶端設備的環境100的框圖,該客戶端設備通過將VRS應用于由圖形應用生成的圖形來減少GPU負載。環境100可以包括客戶端設備102、GPU負載組件104、深度分析器105、著色率控制器106、閾值轉變模組107、圖形處理單元108、顯示器110、圖形引擎115和圖形應用120。如第1圖所示,在其他實施例中,這些組件可以存在於單個設備上,可以使用各種通信協議進行分佈和通信,或者以其他合適的佈置來組織。
客戶端設備102可以是桌上型計算機、工作站、膝上型計算機、筆記型計算機、數位助理、上網本、平板計算機、智慧型電話、行動電話、智慧手錶或其他可穿戴設備、設備、物聯網的一部分,和/或嵌入式系統,或其任何組合。客戶端設備102可以允許用戶執行各種任務,包括訪問、運行或以其他方式與產生計算機圖形的應用交互。此類應用可包括遊戲、多媒體/內容傳遞系統、社交媒體工具、設計產品、文字處理器、試算表、導航系統、移動應用和許多其他合適的軟體程式。圖形可以由圖形應用程式設計和構造以便形成人類可感知的圖像的大量三角形或多邊形構成。客戶端設備102可以促使查看這些圖形和與這些圖形的其他交互。客戶端設備102訪問的圖像序列中的特定圖像可以稱為“幀”。這些幀的特定序列可以稱為“場景”。圖形可以是2-D但也可以是3-D,並且本領域技術人員將理解存在多種技術來將幾何(geometric)資料的3-D表示渲染為2-D圖像以供顯示。例如,可以使用作為模型化世界中的空間區域的視錐體(viewing frustum),表示在客戶端設備102的用戶看圖形時呈現給用戶的視覺金字塔(pyramid of vision)。
在一個實施例中,客戶端設備102可以通過下載和安裝圖形創建應用(graphics-creating application)然後運行該應用來訪問圖形。在另一個實施例中,客戶端設備102可以通過網路從圖形產生應用接收圖形或使用另一個合適的通信協定或機制從圖形產生應用接收圖形。在一些實施例中,客戶端設備102可以另外安裝或以其他方式依賴適當的客戶端圖形引擎或驅動(例如以下描述為圖形引擎115)以進一步説明計算機圖形的渲染、接收和處理。儘管在其他實施例中,圖形產生應用可以從外部訪問圖形引擎或以其他方式依賴圖形引擎。
GPU負載組件104可以在客戶端設備102上操作並且通過以程式設計方式控制著色率來減少GPU負載。GPU負載組件104可以基於接收到的計算機圖形中的幀的特性來實施VRS。GPU負載組件104可以以近即時的方式向屏幕的不同區域應用不同的著色率來減少GPU負載。通過應用該技術,GPU負載組件104可以減少GPU上的負載,而不管由圖形應用開發者程式設計的著色率。下面更詳細地描述了該技術。
GPU負載組件104可以在安裝在客戶端設備102上的圖形驅動中、在硬體和驅動之間的固件層中、在驅動和應用之間的軟體層中、或在任何其他合適的配置中運行。GPU負載組件104可以包括深度分析器105、著色率控制器106和閾值轉變模組107。
深度分析器105可以讀取圖形命令和/或處理由圖形應用120生成的圖形中的幀以收集關於深度緩衝區的細節。深度分析器105然後可以使用圖形的深度緩衝區中的像素的深度資訊作為演算法中的輸入,該演算法計算一個或多個深度閾值。這些深度閾值用於使用圖形引擎和 GPU的VRS功能設置後續幀的特定屏幕區域的著色率。深度分析器105可以通過使用各種合適的分析技術執行圖像處理以分析深度特徵來確定深度閾值。這種技術可以考慮深度的統計資料(例如,最小值、最大值、中值等)、深度的長條圖分佈(histogram distribution)、深度的空間分佈、深度的聚類(clustering)或分割(例如,使用核(kernel)密度估計、K均值(K-means)、高斯混合模型,等等)。這些深度閾值可能不是恒定的,並且可能隨著場景的變化而變化。例如,在像素深度值表示為範圍為[0.0f,1.0f]的浮點數的實施例中,深度閾值可以是範圍為[0.0f,1.0f]的浮點數以用於以後比較。在另一個實施例中,深度閾值可以代數、幾何或使用其他合適的方法來表示。例如,運算式或方程可用於計算深度閾值,假如該方程產生在所實施的浮點數範圍(例如,[0.0f,1.0f])內的值。使用這種方法,深度閾值除了在幀與幀之間變化外,還可以在單個幀內自我調整地變化。在一些實施例中,深度分析器105可以使用下採樣(down sample)來提高效率。然後深度分析器105可以將計算的深度閾值輸出到著色率控制器106。在參考圖5進一步描述的實施例中,深度分析器105還可以計算應用到正常幀/非樣本幀的閾值的步幅以實現效率提升。深度分析器105可以參考先前的樣本幀或使用另一種合適的方法來計算步幅。
著色率控制器106可以使用深度閾值來控制場景中後續幀的著色率。著色率控制器106可以從深度分析器105接收深度閾值。著色率控制器106可以採用截獲與著色器相關的命令的截獲框架(interception framework)。截獲框架可以安裝/插入在圖形應用120和硬體之間的消息路徑上或在另一個合適的位置中。在一個實施例中,著色率控制器106可以修改一個或多個著色器配置命令並將適當的VRS配置命令添加到截獲的著色器相關命令。例如,著色率控制器106可以通過修改GLSL命令或通過將附加命令插入命令緩衝區,使用適當格式化的GLSL命令來控制著色率。GLSL語言可以提供基於圖元的VRS,並且可以通過在頂點著色器或其他能夠控制著色率的著色器中定義的內置變數來啟動基於圖元的VRS。因為著色器知道多邊形的深度值,所以著色器可以執行閾值比較以確定三角形的深度區域並設置內置的VRS變數。因此,著色率控制器106可以通過以下方式配置著色器/流水線:(1)將深度閾值傳遞到著色器中;(2)增加深度閾值比較操作;(3)啟動內置VRS變數。在其他實施例中,著色率控制器106可以僅修改圖形命令以應用VRS和/或僅將附加命令插入到命令緩衝區中以設置適當的著色率。
在替代實施例中,著色率控制器106可以創建著色率查找圖像並將其附加在渲染路徑(render-pass)上。這種技術可以稱為基於圖像的VRS。在這樣的實施例中,著色率控制器106可以創建用於控制幀中的著色率的查找圖像。查找圖像可以基於圖塊(tile)或基於圖元指定著色率或使用另一種合適的方法來指定著色率,基於圖塊(或基於圖元)指定著色率是指以圖塊(或圖元)為單位配置著色率,為每個圖塊(或圖元)指定一個著色率。在一個實施例中,圖塊可以包含多個粗糙像素(coarse pixel),並且每個粗糙像素可以包含多個像素。查找圖像中圖塊的大小可以基於所使用的硬體而不同。粗糙像素的大小可以是VRS設置(例如,1x1、2x2等)。在下面參考第6A -6D圖提供關於執行基於圖像的VRS的更多細節。
閾值轉變模組107可以確定閾值以應用于正常幀,即,非樣本幀。在一個實施例中,“樣本”幀是用於深度分析器105執行圖像處理以基於深度緩衝區中的像素的深度資訊確定適當的深度閾值的幀。在該實施例中,“正常”幀可以是閾值轉變模組107無需讀取深度緩衝區中的像素的深度資訊就可以確定閾值的幀。閾值轉變模組107可以從深度分析器105接收計算的閾值和步幅,或者使用合適的方法確定閾值和步幅。如上所述,深度閾值可以是用於為場景中的後續幀的特定屏幕區域設置VRS的代數或幾何閾值。“步幅”可以指示估計的多個幀的深度閾值之間的變化率,例如指示相鄰幀的深度閾值之間的變化。在一個實施例中,閾值轉變模組107可以參考先前的樣本幀來計算步幅。也就是說,閾值轉變模組107可以基於從一個樣本幀到下一個樣本幀的變化來確定適當的步幅。下文將參考第4A圖至第4B圖更詳細地討論步幅、閾值和正常幀/樣本幀。閾值轉變模組107的行為將在下面參考圖5詳細地描述。
圖形處理單元108可以是專門的電子電路,其被設計為處理數學密集型應用,例如計算機圖形。圖形處理單元108可以具有有效並行處理大資料塊的並行結構,例如用於計算機圖形應用、圖像、視頻等的數學密集型資料。也就是說,圖形處理需要快速和高效的處理大量頂點/矩陣,並且圖形處理單元108可以被專門設計為執行這些任務。圖形處理單元108在通過非專用CPU執行此類任務時可以提供更大的效率。圖形處理單元108可以支援VRS並提供與使用VRS渲染場景相關的優化和特徵。
客戶端設備102可以使用顯示器110向客戶端設備102的用戶呈現由圖形應用120生成的計算機圖形。顯示器110可以是監視器、屏幕顯示器、電視、虛擬實境耳機(virtual reality headset)或能夠顯示計算機圖形的其他此類合適的輸出設備。
圖形引擎115可以是允許開發者設計、實現圖形並將圖形集成到他們的軟體應用中並且向用戶傳遞、發佈和呈現這些圖形的工具。圖形引擎115可以呈現提供一組功能的API,開發者在設計由軟體應用使用的計算機圖形時可以利用這些功能。圖形引擎115的示例可以包括OpenGL、Vulkan、Direct3D 12 (“DX12”)、Metal、虛幻引擎和其他合適的引擎。圖形引擎115可以採用繪圖流水線,該流水線執行有效地渲染圖形所需的各種變換步驟。在渲染3-D圖形時,圖形引擎115可以存儲幀中每個位置的深度資訊到深度緩衝區(即,z緩衝區或w緩衝區)。圖形引擎115可以在繪圖流水線中使用頂點著色器,該頂點著色器應用考慮與幀中的像素相關的位置、顏色、紋理、照明和其他因素的各種變換步驟。
圖形引擎115可以支援VRS。此功能啟用對片段著色器應用到幀的特定部分的著色率的控制。使用VRS,像素著色率可以在整個幀上變化。例如,Vulkan提供了片段著色率(即“VK_KHR_fragment_shading_rate”)擴展,允許應用開發者控制片段著色率。此功能提高了渲染性能。可以為幀的某些部分指派1x1、2x2、1x2、2x4或4x4著色率。圖形引擎115可以支援基於圖元的VRS(primitive-based VRS)或基於圖像的VRS。在一些實施例中,圖形引擎115可以包括在客戶端設備102上運行的客戶端組件。
圖形應用120可以是向用戶提供計算機圖形的應用。圖形應用120是計算機遊戲、多媒體/內容傳遞系統、社交媒體工具、設計產品、文字處理器、試算表、導航系統、移動應用和任何其他合適的生成圖形的軟體應用。雖然在第1圖中單獨顯示,在一些實施例中,圖形引擎115或圖形應用120可以安裝在客戶端設備102上。
第2A-2D圖是根據一些實施例的示出VRS應用於場景中的對象的示例屏幕顯示。第2A-2D圖提供的屏幕顯示僅是示例性的,並且相關領域的技術人員將理解根據本發明可以採用一些方法來提供合適的屏幕顯示。
第2A圖示出了在計算機圖形中呈現場景中的原始幀(即,在由所公開的技術執行的任何修改之前)的屏幕顯示200A。屏幕顯示200A可以是場景中的單個幀,場景組合一系列幀以形成計算機圖形。屏幕顯示200A可以包括對象204A、對象204B和對象204C。在該示例中,對象204A是狗,對象204B是人,對象204C是樹,但這僅僅是說明性的,並且可以在計算機圖形中呈現任意數量的抽象和非抽象對象。在一些實施例中,可能只有一個對象,而在其他實施例中,可能有數百、數千或數百萬個對象。對象204A-C可以由多邊形構成,例如三角形。 對象204A-C可以具有多個特徵,包括顏色、透明度等。屏幕顯示200A可以具有影響對象204A-C的渲染的照明、著色(shading)和其他特徵。
第2B圖示出了屏幕顯示200B,該屏幕顯示200B示出根據深度緩衝區中存儲的像素的深度資訊圖像化得到的灰度圖。屏幕顯示200B被呈現為灰度圖像,其中每個像素的深度值在[0.0f,1.0f]的範圍內。在屏幕顯示200B中,深度閾值206A和深度閾值206B表示計算的閾值。可以基於第一幀(諸如屏幕顯示200B)中的資訊來計算深度閾值206A和深度閾值206B。當渲染下一幀(諸如屏幕顯示200C)時可以應用深度閾值206A和深度閾值206B。深度閾值206A和深度閾值206B可以以代數、幾何或使用其他合適的方法來表示。
第2C圖示出了屏幕顯示200C,該屏幕顯示200C呈現著色率控制器106基於由深度分析器105計算的深度閾值應用VRS之後的幀。屏幕顯示200C可以包括參照閾值206A-B確定的屏幕區域208A、屏幕區域208B和屏幕區域208C。在屏幕顯示200C中,因為對象204A落在屏幕區域208A內,所以對對象應用銳利的(例如,1x1)著色率。因為對象204B位於屏幕區域208B內,所以對象204B接收到稍低的VRS設置。因為對象204C位於區域208C內,所以對象204C接收到最低VRS設置。相關領域的技術人員將理解,通過將較低和/或較高的著色率應用於某些對象,可以減少圖形處理單元108上的負載。
第2D圖示出了呈現第二幀的屏幕顯示200D,其中深度閾值和著色率被應用於對象。屏幕顯示200D示出如果對象的位置由於場景改變而改變,則對象的著色率可能改變。例如,在屏幕顯示200D 中,對象204A(狗)移動到屏幕區域208B中,因此該演算法將較低的著色率應用於對象204A。而已經移動到屏幕區域208A中的對象204B(人)現在接收到銳利的著色率。
雖然屏幕顯示200A-200D僅僅是示例性的,但這些顯示說明了對場景中對象的VRS的一般應用。如在第3A圖和第3B圖中的方法中所描述的,通過以程式設計方式將VRS應用到場景可以減少GPU負載。
第3A圖是示出根據一些實施例的控制場景中的著色率以減少GPU負載的方法300A的流程圖。方法300A可以由處理邏輯來執行,該處理邏輯可以包括硬體(例如,電路、專用邏輯、可程式設計邏輯、微代碼等)、軟體(例如,在處理設備上執行的指令)或其組合。應當理解,並非所有步驟都可能需要執行本文提供的公開內容。此外,一些步驟可以同時執行,或者以不同於第3A圖所示的順序執行,如本領域普通技術人員將理解的。
在302A中,深度分析器105可以接收一組圖形命令、幀或圖形命令的結果。深度分析器105可以從圖形應用120和/或圖形引擎115接收命令/幀。在實施例中,深度分析器105可以從圖形應用120接收通過驅動被傳遞到硬體中的圖形命令。根據圖形語言的設計,圖形命令可以存儲在命令緩衝區中或立即被處理。在一種方法中,可以在應用和硬體(例如,圖形處理單元108)之間的消息路徑上安裝/插入截獲框架。在這種方法中,深度分析器105可以監視所有傳遞的圖形命令以收集必要的資訊(例如,緩衝區位址、深度屬性(depth property)、著色器資訊等)。深度分析器105然後可以使用該資訊從記憶體讀回深度緩衝區中的像素的深度資訊。該截獲框架還可用於允許著色率控制器106修改或添加命令(例如,配置VRS功能、執行深度分析作業等)並將修改/添加的命令傳遞給下游層並最終傳遞給硬體。
在304A中,深度分析器105可以讀取幀的深度緩衝區。在一個實施例中,深度緩衝區可以包括幀中每個像素的深度值,例如,每個像素的深度值是深度範圍0.0到1.0中的值。在一個實施例中,深度分析器105可以通過向圖形引擎115發送適當的命令來讀取深度緩衝區。在另一個實施例中,深度分析器105可以通過檢查幀來確定幀的深度緩衝區的位置。
在306A中,深度分析器105可以執行圖像處理以分析深度特徵。例如,深度分析器105可以參考深度的統計資料,如最小值、最大值、中值等。深度分析器105可以構建深度的長條圖(histogram)分佈或深度的空間分佈。深度分析器105可以通過諸如核密度估計、K-Means、高斯混合模型等演算法使用深度的聚類或分割。
在308A中,深度分析器105可以基於在306A中確定的特徵來計算深度閾值。深度分析器105可以計算單個深度閾值或多個深度閾值。深度分析器105可以計算多個深度閾值,其中每個深度範圍對應於一個著色率且由深度閾值劃分。 例如,比閾值A遠/高的深度範圍可以應用2x2著色率,在閾值B和閾值A 之間的範圍可以應用2x1著色率,並且比閾值B近/低的範圍可以應用1x1著色率。在其他實施例中,近/遠和高/低與著色率之間的對應關係可以相反。深度閾值可以用代數、幾何或使用其他合適的方法來表示。深度分析器105可以將深度閾值發送到著色率控制器106。
在310A中,著色率控制器106可以基於深度閾值插入或修改圖形命令將VRS應用於後續幀。在一個實施例中,著色率控制器106可以使用基於圖元的VRS。例如,用於控制著色率的圖形命令可以是著色語言(例如,GLSL)中提供的基於圖元的VRS API。在一個示例性方法中,著色率控制器106可以將特定著色率應用於屏幕區域中高於或低於深度閾值的像素。例如,可以將Vulkan 上的VK_KHR_fragment_shading_rate 擴展插入到圖形命令緩衝區中,以控制後續幀的著色率。例如,在Vulkan中,著色率控制器106可以使用 PrimitiveShadingRateKHR。在另一個實施例中,著色率控制器106可以使用基於圖像的VRS來控制著色率。例如,著色率控制器106可以創建查找圖像並提供片段著色率附件(attachment)並使用Vulkan的VkFragmentShadingRateAttachmentInfoKHR。
在312A中,客戶端設備102可以在顯示器110上渲染結果幀。根據計算的閾值和隨後修改的命令,幀的某些區域可以具有與其他區域不同的著色率。方法300然後返回到302以處理命令緩衝區中的下一幀和/或圖形命令集。在這個意義上,方法300可以是重複執行的並且基於計算機圖形隨時間的變化繼續調整VRS。
第3B圖是示出根據一些實施例的控制場景中的著色率以減少GPU負載的方法300B的流程圖。方法300B可以由可以包括硬體(例如,電路、專用邏輯、可程式設計邏輯、微代碼等)、軟體(例如,在處理設備上執行的指令)或其組合的處理邏輯來執行。應當理解,並非所有步驟都可能需要執行本文提供的內容。此外,一些步驟可以同時執行,或者以不同於第3B圖所示的順序執行。如本領域普通技術人員將理解的。
方法300B提出了執行上述方法300A的替代方法。方法300B說明與方法300A類似的步驟。 方法300B中的步驟302B對應於方法300A中的步驟302A。 步驟304B對應於步驟304A。步驟306B對應於步驟306A。步驟308B對應於步驟308A。步驟310B對應於步驟310A。步驟312B對應於步驟312A。方法300B進一步示出拆分深度分析器105和著色率控制器106的步驟的實施例。
第4A -4B圖示出了當控制場景中的著色率以減少GPU負載時實現效率提升的實施例所依賴的幾個概念。在該實施例中,GPU負載組件104可以將場景中的幀劃分為“樣本”幀和“正常”幀。通過僅確定用於“樣本”幀的閾值,GPU負載組件 104可以實現效率提升,因為執行圖像處理和/或讀取緩衝區深度可能需要較大計算量。
第4B圖是示出將場景劃分為樣本幀410A-B和正常幀412A-B的示意圖。
樣本幀410A-B可以是用於深度分析器106讀取幀的深度緩衝區、執行深度圖像處理以分析深度特徵、並計算深度閾值和步幅(步幅指示了估計的深度閾值隨著時間的變化率)的幀。例如,樣本幀410A和樣本幀410B可以從場景中週期性地、間隔的選擇,例如每隔一個幀、每隔十個幀、每隔一百個幀等,隨機地或者根據可能隨特定實施方式變化的任何其他合適的方法來選擇。
正常幀412A-B可以是閾值轉變模組107使用估計的步幅(以下討論為步幅404A-B)來計算閾值的幀—即,無需處理圖像或讀取深度緩衝區。通過避免針對正常幀412A-B讀取深度緩衝區和/或執行的圖像處理,閾值轉變模組107可以提高控制場景中的著色率以減少GPU負載的方法的效率。
第4A圖是進一步示出在場景中隨著時間的步幅、閾值和採樣間隔的示例圖。根據一些實施例,第4A圖包括閾值402A-D、步幅404A-B、採樣間隔406、閾值範圍408和點409A-B。
閾值402A-D示出了可以由深度分析器105計算的示例性深度閾值。在這個說明性示例中,在每個時間A0、A1、A2等處僅計算單個深度閾值。但是每次計算多個深度閾值也在本發明的範圍內。在第4A圖的示例性圖示中,樣本幀出現在時間A0、A1、A2和A3。正常幀(非樣本幀)出現在這些時間之間,特別是在點409A和點409B。對於樣本幀,深度分析器105可以讀取深度緩衝區、執行圖像處理並計算深度閾值。也就是說,深度分析器105可以計算在時間A0的閾值402A,在時間A1的閾值402B,在時間A2的閾值402C,在時間A3的閾值402D,等等。如第4A圖所示,閾值402A-D可以隨著場景改變而隨時間改變。可以通過使用合適的分析技術分析深度特徵在每個樣本幀處確定閾值402A-D。這種技術可以考慮深度的統計資料(例如,最小值、最大值、中值等)、深度的長條圖分佈、深度的空間分佈、深度的聚類或分割(例如,使用核密度估計、K-means、高斯混合模型,等等)。閾值402A-D可以用代數、幾何或使用其他合適的方法來表示。
時間A0、A1、A2和A3之間的時間區域包括正常幀。在正常幀中,閾值轉變模組107可以使用先前閾值和步幅404A-404B來確定適用於特定幀的深度閾值。步幅404A-B可以指示基於先前計算的深度閾值的估計的變化率,用於確定應用到後續正常幀的閾值。步幅404A-B可隨著場景的進展而重新計算,並可用于估計要應用于正常幀的著色率。可以通過當前樣本幀和先前樣本幀的深度閾值的外插(extrapolate)來計算步幅404A-B。外插方法可以是線性的、多項式的、三次多項式的(cubic)等。例如,通過外插閾值402A和閾值402B,閾值轉變模組107可以獲得向下傾斜的步幅404A並且使用該步幅來確定應用於時間A1和時間A2之間的正常幀的深度閾值。類似地,通過外插閾值402B和閾值402C,閾值轉變模組107可以獲得向上傾斜的步幅404B並且使用該步幅來確定要應用到時間A2和A3之間的正常幀的深度閾值。如果閾值越來越遠,則步幅 404A-B可能是向上傾斜的,即,設置為使得深度閾值從正常幀到正常幀持續增加。如果閾值越來越近,則步幅 404A-B可以向下傾斜,即,設置為使得深度閾值從正常幀到正常幀持續減小。
點409A和點409B示出了在計算新閾值的時間和應用新計算的閾值的時間之間可能存在時間延遲的原理。也就是說,只有在有關深度的資訊變得可用之後(這發生在使用先前的閾值和步幅組合已繪製所有對象時),才可以應用新計算的閾值。因此,通過外插閾值402A和閾值402B,閾值轉變模組107可以獲得向下傾斜的步幅404A。閾值轉變模組107可以在時間A2和時間A3之間的時段中繼續使用步幅404A計算深度閾值,這導致如圖所示中409A處的虛線,直到新閾值(例如,閾值402C)被計算出來為止。類似地,通過外插閾值402B和閾值402C,閾值轉變模組107可以獲得向上傾斜的步幅404B。在點409B,可以繼續使用步幅404B來計算深度閾值,直到新閾值(閾值402D)被計算出來為止。
採樣間隔406可以是樣本幀410A-410B之間的幀數。採樣間隔406可以是靜態的或可變的。採樣間隔406在不同的實施方式中可能不同。例如,根據特定實施方式,可以週期性地或間隔地選擇樣本幀410A-410B,例如每隔一幀、每隔十個幀、每隔一百個幀等。在一些實施例中,採樣間隔406可以是一致的(即,相同的取樣速率),但在其他實施例中,採樣間隔406可以隨時間改變。
閾值範圍408可以表示可用深度閾值的範圍。深度閾值可以是特定於實施方式的。例如,在Vulkan的實施方式中,可用的深度閾值可以在0.0到1.0之間。在其他實施方式中,其他合適的範圍可以應用於閾值範圍408。
第5A圖是示出根據一些實施例的通過將場景劃分為正常幀和樣本幀來控制場景中的著色率以減少GPU負載的方法500A的流程圖。方法500A可以由處理邏輯來執行,處理邏輯可以包括硬體(例如,電路、專用邏輯、可程式設計邏輯、微代碼等)、軟體(例如,在處理設備上執行的指令)或其組合。應當理解,並非所有步驟都可能需要執行本文提供的公開內容。此外,正如本領域普通技術人員所理解的,一些步驟可以同時執行,或者以不同於第5A圖所示的順序執行。
在502A中,深度分析器105可以接收一組圖形命令、幀或圖形命令的結果。 深度分析器105可以從圖形應用120和/或圖形引擎115接收命令/幀。
在504A中,GPU負載組件104可以確定當前幀是否是樣本幀。如果當前幀是樣本幀,則方法500進行到506。如果當前幀不是樣本幀(即,是正常幀),則方法500進行到512。
在506A中,在當前幀是樣本幀的情況下,深度分析器105可以讀取幀的深度緩衝區。在實施例中,深度緩衝區可以包括幀中每個像素的深度值,每個像素的深度值在深度範圍(例如,從0.0到1.0)中。在一個實施例中,深度分析器105可以通過向圖形引擎115發送適當的命令來讀取深度緩衝區。在另一個實施例中,深度分析器105可以通過檢查幀來確定幀的深度緩衝區的位置。
在508A中,深度分析器105可以執行深度圖像處理以分析深度特徵。例如,深度分析器105可以參考深度的統計資料,如最小值、最大值、中值等。深度分析器105可以構建深度的長條圖分佈或深度的空間分佈。深度分析器105可以通過諸如核密度估計、K-Means、高斯混合模型等演算法使用深度的聚類或分割。
在510A中,深度分析器105可以基於所確定的特徵來計算深度閾值和步幅。深度分析器105可以計算單個深度閾值或多個深度閾值。深度分析器105可以計算多個深度閾值,其中每個深度範圍對應於一個著色率且由深度閾值劃分。例如,比閾值A遠的深度範圍可以應用2x2著色率,閾值B和閾值A之間的範圍可以應用2x1著色率,並且比閾值B近的範圍可以應用1x1著色率。深度分析器105可以將深度閾值發送到著色率控制器106。可以參考之前的幀來計算步幅。深度分析器105可以通過使用各種合適的分析技術分析深度特徵來確定閾值。這種技術可以考慮深度的統計資料(例如,最小值、最大值、中值等)、深度的長條圖分佈、深度的空間分佈、深度的聚類或分割(例如,使用核密度估計、K-means、高斯混合模型,等)。深度分析器105可以通過當前樣本幀和先前樣本幀的深度閾值的外插來估計步幅。例如,外插法可以是線性的、多項式的、三次多項式的等。如果閾值在變遠,深度分析器105可以設置步幅,使得深度閾值在正常幀期間持續增加。
返回到512A,其中當前幀是正常幀,閾值轉變模組107可以使用先前計算的步幅來更新閾值。對於正常幀,深度分析器105不需要讀取深度緩衝區以節省資源。因此,閾值轉變模組107使用先前計算的步幅更新先前深度閾值,得到當前幀的深度閾值,即閾值A1+=步幅_A1、閾值A2+=步幅_A2等。可以應用一個以上閾值和一個以上步幅,這取決於為先前的樣本幀計算了多少個閾值。
在514A中,著色率控制器106可以插入或修改圖形命令以基於深度閾值將VRS應用於後續幀。在一種方法中,著色率控制器106可以使用基於圖元的VRS。 例如,用於控制著色率的圖形命令可以是著色語言(例如,GLSL)中提供的基於圖元的VRS API。例如,可以使用Vulkan上的 VK_KHR_fragment_shading_rate 擴展來控制後續幀的著色率。在一種方法中,著色率控制器106可以將附加的圖形命令插入到繪圖流水線中以控制著色率。例如,在Vulkan中,著色率控制器 106可以使用PrimitiveShadingRateKHR。在另一個實施例中,著色率控制器106使用基於圖像的VRS。例如,著色率控制器106可以產生查找圖像並提供片段著色率附件並使用VkFragmentShadingRateAttachmentInfoKHR。
在516A中,客戶端設備102可以在顯示器110上渲染得到的幀。根據計算的閾值和隨後修改的命令,幀的某些區域可以應用VRS。
方法500然後可以返回到502以處理下一幀和/或圖形命令。 在這個意義上,方法500是可以重複執行的並且基於計算機圖形隨時間的變化繼續調整VRS。
第5B圖是示出根據一些實施例的通過將場景劃分為正常幀和樣本幀來控制場景中的著色率以減少GPU負載的方法500B的流程圖。方法500B可以由處理邏輯來執行,該處理邏輯可以包括硬體(例如,電路、專用邏輯、可程式設計邏輯、微代碼等)、軟體(例如,在處理設備上執行的指令)或其組合。應當理解,並非所有步驟都需要執行本文提供的公開內容。此外,正如本領域普通技術人員所理解的,一些步驟可以同時執行,或者以不同於第5B圖所示的順序執行。
方法500B提出了執行上述方法500A的替代方法。方法500B示出與方法500A類似的步驟。 方法500B中的步驟502B對應於方法500A中的步驟502A。 步驟504B對應於步驟504A。步驟506B對應於步驟506A。步驟508B對應於步驟508A。步驟510B對應於步驟510A。步驟512B對應於步驟512A。步驟514B對應於步驟514A。步驟516B對應於步驟516A。方法500B另外示出了拆分深度分析器105、著色率控制器106和閾值轉變模組107之間的步驟的實施例。
第6A -6D圖是根據一些實施例的示出使用VRS查找圖像來控制幀中的著色率的示例性屏幕顯示。第6A -6D圖提供的屏幕顯示僅是示例性的,並且相關領域的技術人員將理解根據本發明可以採用多種方法來提供合適的屏幕顯示。第6A -6D圖中的屏幕顯示示出了在計算機圖形的幀中具有多個對象的簡單的說明性例子。
第6A圖示出了在計算機圖形中呈現原始場景(即,在由所公開的技術執行的任何修改之前)的屏幕顯示600A。屏幕顯示600A可以是組合以形成計算機圖形的一系列幀中的單個幀。屏幕顯示600A可以包括對象204A、對象204B和對象204C。在該示例中,對象204A是狗,對象204B是人,對象204C是樹,但這僅僅是說明性的,並且可以在計算機圖形中呈現任意數量的對象。
第6B圖示出了呈現場景的屏幕顯示600B,在該場景中深度分析器105計算了深度閾值,即深度閾值206A和深度閾值206B。深度閾值206A和深度閾值206B可以基於第一幀(諸如屏幕顯示600B)中的資訊來計算。可以在渲染下一幀時應用深度閾值206A和深度閾值206B。
第6C圖示出了屏幕顯示600C,該屏幕顯示600C呈現由著色率控制器106基於計算的閾值創建的VRS查找圖像。該查找圖像可以通過在每個圖塊或每個像素的基礎上指定著色率或使用另一種合適的方法指定著色率,來控制幀中的著色率。在一種方法中,著色率控制器106可以通過將生成的深度閾值與圖塊的區域深度進行比較,來確定查找圖像中每個圖塊的著色率(即,像素/圖塊值)。查找圖像的大小(size)和查找圖像中的圖塊的大小可以基於客戶端設備102使用的硬體而變化。
第6D圖示出了呈現第二幀的屏幕顯示600D,其中基於VRS查找圖像深度閾值和著色率被應用到對象。著色率控制器106可以在渲染路徑上創建和附加著色率查找圖像以強制實施VRS。例如,著色率控制器106可以使用VkFragmentShadingRateAttachmentInfoKHR提供片段著色率附件。基於查找圖像,將不同的著色率分別應用於對象204A、對象204B和對象204C。
例如,可以使用一個或多個眾所周知的計算機系統,例如第7圖中所示的計算機系統700,來實施各種實施例。可以使用一個或多個計算機系統700,例如,實現這裡討論的任何實施例,以及它們的組合和子組合。
計算機系統700可以包括一個或多個處理器(也稱為中央處理單元或CPU),例如處理器704。處理器704可以連接到通信基礎設施或匯流排706。
計算機系統700還可以包括用戶輸入/輸出設備703,例如監視器、鍵盤、定點設備等,其可以通過用戶輸入/輸出介面702與通信基礎設施706通信。
一個或多個處理器704可以是圖形處理單元(GPU)。 在一個實施例中,GPU可以是處理器,其是設計用於處理數學密集型應用的專用電子電路。 GPU可能具有並行結構,可有效地並行處理大塊資料,例如計算機圖形應用程式、圖像、視頻等常見的數學密集型資料。
計算機系統700還可以包括主記憶體或主記憶體708,例如隨機存取記憶體(random access memory,RAM)。主記憶體708可以包括一級或多級快取記憶體(cache)。主記憶體708可以在其中存儲控制邏輯(即,計算機軟體)和/或資料。
計算機系統700還可以包括一個或多個輔助存放裝置或記憶體710。輔記憶體710可以包括例如硬盤驅動器712和/或可移動存放設備或驅動器714。可移動存放驅動器714可以是軟盤(floppy disk)驅動器、磁帶驅動器、光碟驅動器、光存放裝置、磁帶備份設備和/或任何其他存放裝置/驅動器。
可移動存放驅動器714可以與可移動存放單元718交互。可移動存放單元718可以包括其上存儲有計算機軟體(控制邏輯)和/或資料的計算機可用或可讀存放裝置。可移動存放單元718可以是軟碟、磁帶、光碟、DVD、光存儲盤和/任何其他計算機資料存放裝置。可移動存放驅動器714可以從移動存儲單元718讀取和/或寫入到可移動存放單元718。
輔記憶體710可以包括用於允許計算機程式和/或其他指令和/或資料被計算機系統700訪問的其他裝置、設備、組件、工具或其他方法。這些裝置、設備、組件、工具或其他方法可以包括例如可移動存放單元722和介面720。可移動存放單元722和介面720的示例可以包括程式盒和盒介面(例如在視頻遊戲裝置中發現的)、可移動記憶晶片(例如EPROM或PROM)和相關的插槽、記憶棒(memory stick)和USB埠、存儲卡和相關的存儲卡插槽,和/或任何其他可移動存放單元和相關的介面。
計算機系統700可以進一步包括通信或網路介面724。通信介面724可以使計算機系統700能夠與外部設備、外部網路、外部實體等的任何組合進行通信和交互(單獨地和共同地通過標號728表示)。例如,通信介面724可以允許計算機系統700通過通信路徑726與外部或遠端設備728進行通信,通信路徑 726可以是有線和/或無線(或其組合),並且可以包括LAN、WAN、Internet等的任意組合。可以通過通信路徑726將控制邏輯和/或資料傳輸到計算機系統700,和通過通信路徑726從計算機系統700接收控制邏輯和/或資料。
計算機系統700還可以是個人數位助理(personal digital assistant,PDA)、臺式工作站、膝上型計算機或筆記本計算機、上網本、平板計算機、智慧型電話、智慧手錶或其他可穿戴設備、物聯網(Internet-of-Thing)的一部分,和/或嵌入式系統,僅舉幾個非限制性示例,或它們的任何組合。
計算機系統700可以是客戶端或服務器,通過任何交付範例訪問或託管任何應用和/或資料,包括但不限於遠端或分散式雲計算解決方案;本地或本地軟體(基於“本地”雲的解決方案); “即服務”模型(例如,內容即服務(content as a service,CaaS)、數位內容即服務(digital content as a service,DCaaS)、軟體即服務(software as a service,SaaS)、託管軟體即服務(managed software as a service,MSaaS)、平臺即服務(desktop as a service,PaaS)、桌面即服務(desktop as a service,DaaS)、框架即服務(framework as a service,FaaS)、後端即服務(backend as a service,BaaS)、移動後端即服務(mobile backend as a service,MBaaS)、基礎設施即服務(infrastructure as a service,IaaS)等);和/或包括前述示例或其他服務或交付範例的任何組合的混合模型。
計算機系統700中的任何適用的資料結構、檔案格式和模式都可以從標準得到,標準包括但不限於JavaScript對象標記法(JavaScript Object Notation,JSON)、可延伸標記語言(Extensible Markup Language,XML)、又一種標記語言(Yet Another Markup Language,YAML)、可擴展超文字標記語言(Extensible Hypertext Markup Language,XHTML)、無線標記語言(Wireless Markup Language,WML)、MessagePack、XML用戶介面語言(XML User Interface Language,XUL)或任何其他功能上相似的代表的單獨或組合。可替代的,專有資料結構、格式或計畫(schema)可以單獨使用或與已知或開放標準結合使用。
在一些實施例中,包括存儲有控制邏輯(軟體)的有形、非暫態計算機可用或可讀介質的有形非暫態裝置或製品在本文中也可以稱為計算機程式產品或程式存放裝置。這包括但不限於計算機系統700、主記憶體708、輔記憶體710和可移動存放單元718和722,以及體現上述任何組合的有形製品。這樣的控制邏輯在由一個或多個資料處理設備(例如計算機系統700)執行時,可以使這樣的資料處理設備如本文所述那樣操作。
基於包含在本申請中的教導,如何使用不同於第7圖所示出之外的資料處理設備、計算機系統和/或計算機體系結構來製作和使用本申請的實施例對於相關領域的技術人員將是顯而易見的。具體而言,實施例可以使用不同于本文描述的那些的軟體、硬體和/或作業系統實施方式來操作。
應當理解,詳細描述部分而不是任何其他部分旨在用於解釋請求項。其他部分可以闡述如發明人所設想的一個或多個但不是所有示例性實施例,因此不旨在以任何方式限制本發明或所附請求項。
儘管本發明描述了示例性領域和應用的示例性實施例,但是應當理解,本發明不限於此。其他實施例及其修改是可能的,並且在本發明的範圍和精神內。 例如,並且在不限制本段的一般性的情況下,實施例不限於圖中所示和/或在本文描述的軟體、硬體、固件和/或實體。此外,實施例(無論是否在本文中明確描述)對本文描述的示例之外的領域和應用具有重要用途。
已經在功能構建塊的幫助下描述實施例,這些功能構建塊示出了指定功能的實現及其關係。為了描述的方便,本文已經定義了這些功能構建塊的邊界。只要適當地執行指定的功能和關係(或其等價物),就可以定義替代邊界。此外,替代實施例可以執行功能塊、步驟、操作、方法等,使用與本文所述不同的順序。
本文提及“一個實施例”、“實施例”、“示例實施例”或類似短語,表示所描述的實施例可以包括特定的特徵、結構或特性,但每個實施例不是必須包括特定的特徵、結構或特徵。此外,這些用語不一定指相同的實施例。此外,當結合實施例描述特定特徵、結構或特性時,相關領域的技術人員可以將這樣的特徵、結構或特性結合到其他實施例中,無論是否在此明確提及或描述。此外,可以使用表述“耦接”和“連接”連同它們的派生詞來描述一些實施例。這些術語不一定是彼此的同義詞。例如,可以使用術語“連接”和/或“耦接”來描述一些實施例,以指示兩個或更多個組件彼此直接物理接觸或電接觸。然而,術語“耦接”也可以意味著兩個或多個元素彼此不直接物理連接或電連接,而是經由其他設備或者其他連接的間接電連接。
本申請的廣度和範圍不應受到任何上述示例性實施例的限制,而應僅根據所附請求項及其等同物來定義。
102:客戶端設備
104:GPU負載組件
105:深度分析器
106:著色率控制器
107:閾值轉變模組
108:圖形處理單元
110:顯示器
115:圖形引擎
120:圖形應用
200A、200B、200C、200D:屏幕顯示
204A、204B、204C:對象
206A、206B:深度閾值
208A、208B、208C:屏幕區域
300A、300B:方法
302A、304A、306A、308A、310A、312A:步驟
302B、304B、306B、308B、310B、312B:步驟
410A、410B:樣本幀
412A、412B:正常幀
408:閾值範圍
409A、409B:點
406:採樣間隔
402A、402B、402C、402D:閾值
404A、404B:步幅
500A、500B:方法
502A、504A、506A、508A、510A、512A、514A、516A:步驟
502B、504B、506B、508B、510B、512B、514B、516B:步驟
600A、600B、600C、600D:屏幕顯示
700:計算機系統
704:處理器
702:用戶輸入/輸出介面
703:用戶輸入/輸出設備
706:通信基礎設施
708:主記憶體
710:輔記憶體
712:硬盤驅動器
714:可移動存放驅動器
720:介面
718:可移動存放單元
722:可移動存放單元
併入本文並形成說明書一部分的附圖示出了本發明的實施例,並且與描述一起進一步用於解釋本發明的原理並使本領域技術人員能夠製作和使用實施例。
第1圖是根據一些實施例的包括客戶端設備的環境的框圖,該客戶端設備通過將可變速率著色應用于由圖形應用生成的圖形來減少GPU負載。
第2A-2D圖是根據一些實施例的示例屏幕顯示,其示出了對場景中的對象的可變速率著色的應用。
第3A圖是示出根據一些實施例的控制場景中的著色率以減少GPU負載的方法的流程圖。
第3B圖是示出根據一些實施例的控制場景中的著色率以減少GPU負載的替代方法的流程圖。
第4A圖是示出根據一些實施例的步幅(stride)和閾值的示意圖。
第4B圖是示出根據一些實施例的樣本幀和正常幀的示意圖。
第5A圖是示出根據一些實施例的通過將場景劃分為正常幀和樣本幀來控制場景中的著色率以減少GPU負載的方法的流程圖。
第5B圖是示出根據一些實施例的通過將場景劃分為正常幀和樣本幀來控制場景中的著色率以減少GPU負載的替代方法的流程圖。
第6A-6D圖是根據一些實施例的示例屏幕顯示,其示出了使用可變速率著色查找圖像來控制幀中的著色速率。
第7圖是用於實現各種實施例的示例計算機系統。
在附圖中,相同的附圖標記通常表示相同或相似的組件。此外,一般來說,參考編號的最左邊的一個或多個數位識別碼第一次出現參考編號的附圖。
300A:方法
302A、304A、306A、308A、310A、312A:步驟
Claims (20)
- 一種計算機圖形處理方法,包括: 處理至少一個圖形命令以形成計算機圖形的第一幀; 通過處理與所述第一幀相關的深度緩衝區中的資訊來計算出一個或多個深度閾值;以及 通過基於所述一個或多個深度閾值將一個或多個著色率應用於所述計算機圖形的第二幀的一個或多個屏幕區域來控制所述第二幀的著色率。
- 如請求項1所述的方法,其中,控制所述第二幀的著色率包括: 將第一著色率應用於所述一個或多個屏幕區域中的第一屏幕區域;所述第一屏幕區域被確定為低於所述一個或多個深度閾值中的第一閾值; 以及 將第二著色率應用於所述一個或多個屏幕區域中的第二屏幕區域;所述第二屏幕區域被確定為高於所述一個或多個深度閾值中的所述第一閾值。
- 如請求項1所述的方法,其中,控制所述第二幀的著色率包括: 使用所述一個或多個著色率中的第一著色率渲染所述一個或多個屏幕區域中的所述第一屏幕區域中的第一對象;以及 使用所述一個或多個著色率中的第二著色率渲染所述一個或多個屏幕區域中的所述第二屏幕區域中的第二對象。
- 如請求項1所述的方法,其中,計算所述一個或多個深度閾值包括: 執行圖像處理以分析所述深度緩衝區中像素的深度的一個或多個特徵;以及 根據所述深度的一個或多個特徵計算一個或多個深度閾值。
- 如請求項1所述的方法,其中,所述控制所述第二幀的著色率包括: 根據一個或多個著色率構建附加圖形命令;以及 將所述附加圖形命令插入命令緩衝區,其中,所述附加圖形命令用於配置著色器的可變速率著色(VRS)。
- 如請求項1所述的方法,其中,所述控制所述第二幀的著色率包括: 構建包含一個或多個像素值的可變速率著色查找圖像;以及 將參考所述可變速率著色查找圖像的附加圖形命令插入到命令緩衝區中。
- 如請求項1所述的方法,還包括: 將所述計算機圖形劃分為至少一個樣本幀和至少一個正常幀;其中,所述第一幀是所述樣本幀或者所述正常幀; 對於所述至少一個樣本幀: 計算所述一個或多個深度閾值以及對應於所述一個或多個深度閾值的一個或多個步幅; 根據所述一個或多個深度閾值將所述一個或多個著色率應用於所述計算機圖形的第二幀的所述一個或多個屏幕區域; 對於所述至少一個正常幀: 通過將所述一個或多個步幅添加到所述一個或多個先前深度閾值來計算出所述一個或多個更新的深度閾值;其中,所述一個或多個更新的深度閾值是正常幀的深度閾值;所述先前深度閾值是所述正常幀的先前的幀的深度閾值;以及 根據所述一個或多個更新的深度閾值,將一個或多個更新的著色率應用於所述計算機圖形的第二幀的一個或多個屏幕區域。
- 根據請求項7所述的方法,其中,計算所述一個或多個步幅包括: 外插所述至少一個樣本幀的所述一個或多個深度閾值和所述至少一個先前樣本幀的一個或多個先前深度閾值。
- 如請求項1所述的方法,其中,所述方法應用於安裝在所述客戶端設備上的圖形驅動、硬體和驅動之間的固件層、軟體驅動和應用之間的軟體層、或所述客戶端設備上的硬體中。
- 根據請求項1所述的方法,其中,所述至少一個圖形命令調用基於圖元的可變速率著色應用程式設計介面或基於圖像的可變速率著色應用程式設計介面。
- 一種系統,包括: 記憶體; 至少一個處理器,耦接到所述記憶體並被配置為: 在客戶端設備處處理至少一個圖形命令以形成計算機圖形的第一幀; 通過處理與所述第一幀相關聯的深度緩衝區中的資訊來計算一個或多個深度閾值;以及 通過基於所述一個或多個深度閾值將一個或多個著色率應用於所述計算機圖形的第二幀的一個或多個屏幕區域來控制所述第二幀的著色率。
- 如請求項11所述的系統,其中,所述至少一個處理器還被配置為: 將第一著色率應用於所述一個或多個屏幕區域中的第一屏幕區域;所述第一屏幕區域被確定為低於所述一個或多個深度閾值中的第一閾值; 以及 將第二著色率應用於所述一個或多個屏幕區域中的第二屏幕區域;所述第二屏幕區域被確定為高於所述一個或多個深度閾值中的所述第一閾值。
- 如請求項11所述的系統,其中,所述至少一個處理器還被配置為: 使用所述一個或多個著色率中的第一著色率渲染所述一個或多個屏幕區域中的第一屏幕區域中的第一對象;以及 使用所述一個或多個著色率中的第二著色率渲染所述一個或多個屏幕區域中的第二屏幕區域中的第二對象。
- 根據請求項11所述的系統,其中,所述著色率的控制由安裝在所述客戶端設備上的圖形驅動、在硬體和驅動之間的固件層、在軟體驅動和應用之間的軟體層,或者在客戶端設備上的硬體進行。
- 根據請求項11所述的系統,其中,為了控制所述著色率,所述至少一個處理器還被配置為: 根據一個或多個著色率構建附加圖形命令,將附加圖形命令插入命令緩衝區,其中,所述附加圖形命令用於配置著色器的可變速率著色(VRS); 或者, 構建包含一個或多個像素值的可變速率著色查找圖像;將附加圖形命令插入到命令緩衝區中,其中所述附加圖形命令參考所述可變速率著色查找圖像。
- 根據請求項11所述的系統,其中,為了計算一個或多個深度閾值,所述至少一個處理器還被配置為: 執行圖像處理以分析所述深度緩衝區中的深度的一個或多個特徵; 根據所述深度的一個或多個特徵計算一個或多個深度閾值。
- 如請求項11所述的系統,其中,所述至少一個處理器還被配置為: 將計算機圖形劃分為至少一個樣本幀和至少一個正常幀; 對於所述至少一個樣本幀: 計算一個或多個深度閾值和對應於所述一個或多個深度閾值的一個或多個步幅;以及 基於所述一個或多個深度閾值將一個或多個著色率應用於所述一個或多個屏幕區域; 對於所述至少一個正常幀: 通過將所述一個或多個步幅添加到所述一個或多個深度閾值來計算一個或多個更新的深度閾值;以及 基於所述一個或多個更新的深度閾值,將一個或多個更新的著色率應用於一個或多個更新的屏幕區域。
- 根據請求項17所述的系統,其中,為了計算所述一個或多個步幅,所述至少一個處理器還被配置為: 外插至少一個樣本幀的一個或多個深度閾值和至少一個先前樣本幀的一個或多個先前深度閾值。
- 根據請求項17所述的系統,其中,其中所述至少一個圖形命令調用基於基元的可變速率著色應用程式設計介面或基於圖像的可變速率著色應用程式設計介面。
- 一種存儲有指令的非暫時性計算機可讀設備,當由至少一個計算設備執行該指令時,使該至少一個計算設備執行包括以下操作的操作: 在客戶端設備處處理至少一個圖形命令以形成計算機圖形的第一幀; 通過處理與所述第一幀相關聯的深度緩衝區中的資訊來計算一個或多個深度閾值;以及 通過基於所述一個或多個深度閾值將一個或多個著色率應用於所述計算機圖形的第二幀的一個或多個屏幕區域來控制所述第二幀的著色率。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263328760P | 2022-04-08 | 2022-04-08 | |
US63/328,760 | 2022-04-08 | ||
US17/944,415 US20240087207A1 (en) | 2022-04-08 | 2022-09-14 | Depth analyzer and shading rate controller |
US17/944,415 | 2022-09-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202341062A true TW202341062A (zh) | 2023-10-16 |
Family
ID=89856094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112103386A TW202341062A (zh) | 2022-04-08 | 2023-02-01 | 計算機圖形處理方法以及系統 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240087207A1 (zh) |
TW (1) | TW202341062A (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10591971B2 (en) * | 2017-04-01 | 2020-03-17 | Intel Corporation | Adaptive multi-resolution for graphics |
US10649521B2 (en) * | 2017-04-24 | 2020-05-12 | Intel Corporation | Compensating for high head movement in head-mounted displays |
US10930022B2 (en) * | 2018-08-09 | 2021-02-23 | Nvidia Corporation | Motion adaptive rendering using variable rate shading |
CN115379185B (zh) * | 2018-08-09 | 2024-04-02 | 辉达公司 | 使用可变速率着色的运动自适应渲染 |
CN113837919A (zh) * | 2020-06-24 | 2021-12-24 | 英特尔公司 | 用于基于着色速率来编码的方法和装置 |
-
2022
- 2022-09-14 US US17/944,415 patent/US20240087207A1/en active Pending
-
2023
- 2023-02-01 TW TW112103386A patent/TW202341062A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20240087207A1 (en) | 2024-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4198909A1 (en) | Image rendering method and apparatus, and computer device and storage medium | |
CN111340928B (zh) | 一种结合光线跟踪的Web端实时混合渲染方法、装置及计算机设备 | |
US9715750B2 (en) | System and method for layering using tile-based renderers | |
US10649610B2 (en) | Detecting content types and window regions in composited desktop frame buffer | |
JP5436526B2 (ja) | グラフィックスコマンド生成装置、グラフィックスコマンド生成方法、サーバ装置、およびクライアント装置 | |
CN114297206B (zh) | 精细化高效动态瓦片地图服务发布方法、介质及电子设备 | |
US20140045592A1 (en) | Delivery of projections for rendering | |
US11727632B2 (en) | Shader binding management in ray tracing | |
US10249077B2 (en) | Rendering the global illumination of a 3D scene | |
US20180276870A1 (en) | System and method for mass-animating characters in animated sequences | |
CN111080505B (zh) | 一种提高图元装配效率的方法、装置及计算机存储介质 | |
WO2021249358A1 (zh) | 渲染方法、设备以及系统 | |
Lee et al. | Geometry splitting: an acceleration technique of quadtree-based terrain rendering using GPU | |
US11803674B2 (en) | Dual mode post processing | |
JP2017056038A (ja) | プレイヤの意図を予測してレンダリングするためのリソース配分を決定するプログラム、電子装置、システム及び方法 | |
TW202341062A (zh) | 計算機圖形處理方法以及系統 | |
Bernardon et al. | An adaptive framework for visualizing unstructured grids with time-varying scalar fields | |
CN115829824A (zh) | 用于优化机器学习推断的图形处理的系统和方法 | |
US8633932B1 (en) | Animation with adjustable detail level | |
CN116894897A (zh) | 计算机图形处理方法以及系统 | |
WO2016126256A1 (en) | Detecting content types and window regions in composited display frames | |
Mwalongo | Interactive web-based visualization | |
US11551390B2 (en) | Generating deterministic digital image matching patches utilizing a parallel wavefront search approach and hashed random number | |
US20240177352A1 (en) | Data processing method and apparatus, computing device, and system | |
US20230206380A1 (en) | Optimizing partial writes to compressed blocks |