基於功耗預算的實時繪製

2021-09-21 19:06:45 字數 3570 閱讀 3736

今天給大家介紹的是一篇以畫面質量與裝置耗電量為引導的渲染技術**,該**發表於2023年著名的siggraph圖形學大會。一般來說,影象渲染質量的提公升往往意味著每個畫素都要進行更多的資料計算,從而造成裝置耗電量的增加。對於對耗電量非常敏感的移動裝置來說,我們往往需要在畫面質量與裝置耗電量間進行權衡。如何使用盡可能少的耗能來渲染出高質量的畫面,這幾乎是每個遊戲團隊都在思考的問題。因此,我們推薦這篇**,希望文章中作者對於該問題的思考和提出的解決方法可以對你的專案有所幫助和啟發。

上圖左側部分是同一場景在不同渲染引數下得到的不同質量的三幅影象,分別為最低質量的渲染影象、本文使用根據耗電量優化後的引數渲染出的影象、最高質量的渲染影象;

中間部分是三幅影象的細節比較,可以看出在影象質量方面(高光、陰影、反射等細節),本文方法得到的渲染效果與最高質量的效果相差不大,並且遠好於最低質量的渲染效果;

右側圖表則是各個方法在耗能和渲染質量上的數值比較。下方的圖表表示不同方法渲染質量的差距,可以看到本文方法的畫質(橙色)與最高清(綠色)相差不大,但遠高於最低畫質(藍色)。而上方圖表表示三種方法的耗電量統計,在畫質相差不大的情況下,本文方法進行渲染的耗電量(橙色)遠低於最高清的耗電量(綠色),比最低畫質的耗電量(藍色)也高出並不多。

綜上所述,本**方法可以在基本保持渲染質量的情況下,讓裝置的耗電量大幅降低。根據**中描述,其具體可以減少30%~50%的電量消耗。

渲染的關鍵是確定合適的渲染引數,文章將引數s的確定轉化為乙個優化求解過程。由於相機不同位置c和渲染引數s所構成的引數空間是非常巨大的,並且需要優化求解的是乙個多目標方程(降低電池消耗和提公升渲染質量),因而本文作者嘗試採用一定預處理技術來完成這一目標。概括來說,要使本文演算法達到實時,關鍵部分有兩個:

如何有效地預處理場景中不同相機位置和不同渲染引數所產生的電量消耗以及渲染質量;

如何實時地採用這些資訊。

演算法框架如下圖:

在實時渲染階段,只需根據當前相機位置查詢所有附近八叉樹節點的帕累託曲線,並根據使用者給定能量預算或者渲染質量差預算,在各個帕累託曲線上快速找出對應的渲染引數並進行差值,從而得當最優的渲染引數。接下來將對引數優化求解過程進行略微詳細的介紹。

定義渲染函式為f(c,s),即給定相機引數c以及渲染引數s,輸出渲染影象f。其中f包括所有前向渲染和延遲渲染的最終結果。假設我們有乙個最優畫質設定sbest,那我們就可以定義乙個與最優質量影象的畫質差:

其中pbgt和ebgt分別為給定的電量消耗閾值(預算)以及畫質差閾值(預算)。以上公式的意義分別是,在給定的電量預算中,找出畫質最優的渲染引數,以及在給定畫面質量預算時,計算出最節省能耗的渲染設定。文章的渲染關鍵就是在使用者給定預算(電量或者畫質)時,找出最優的渲染引數。

由於該問題涉及兩個目標,畫面渲染質量和電量消耗,為了更有效地解決這個優化問題,文章提出了乙個偏量排序策略(partial order),即將乙個渲染設定優於另乙個的定義為:要麼有更好的渲染效果並至少保持一樣的能耗;要麼更節省能耗並保持至少一樣好的畫質。基於此,文章使用帕累託優化(pareto-optimal),引入帕累託曲線(pareto frontiers)縮小了整個優化空間,即在帕累託曲線(pareto frontiers)上的渲染設定肯定比其他引數空間上的點更優,這樣就能快速的求出給定預算下的最優渲染設定了。如下圖所示,只需找到離預算線最近的點就是最優的結果。

帕累託曲線的計算是相對耗時的,為了可以實時計算出最佳解決方案,文章採取了預處理的方法來實現,並提出了乙個合理假設,即:在一定的相機引數範圍內,優化的帕累託曲線會比較相似。基於此,文章採用了八叉樹來對整個場景相機位置進行劃分,並給出了乙個自適應分割空間方法如下圖:

如上左圖,每個小方格都是乙個相機位置/朝向取樣,其中o表示位置,v表示方向。為方便說明,這裡使用2d表示並有4個方向。通過遺傳演算法先計算場景四周位置每個方向的帕累託曲線後(圖中o0-o3),比較他們同一方向的帕累託曲線的差異(如圖中紅色部分),如果大於一定閾值,就分出乙個子樹(圖中藍色部分),迴圈往復,直到所有數節點間差異都小於閾值。而小於閾值部分,便繼承父節點的帕累託曲線,如圖中的虛線部分。而在執行時,首先根據執行相機的位置找到八叉樹中的對應葉子節點,然後根據相機方向對應的投影面積最大的預算方向,如右圖中,對應位置是o7以及v3。從而得到該執行時相機的近似帕累託曲線。在具體實現中,會對引數的結果進行插值,以避免畫質的突然變化。

在實驗部分,文章主要測試了4個場景:valley, hall, elven ruins以及sun temple。如上圖所示,和最節省模式相比,該方法的畫質差是很小的,而和最佳畫質的能量消耗相比,該方法的能量消耗和最低畫質在乙個等級上。

在該演算法的統計資料上,如上圖,我們可以看出,在乙個667.9k個三角形512mb大小的場景下,最終的預處理資料僅為18.1kb,這表明該方法在實際應用中是較為可行的。然而,31.7k三角形,就需要35.3個小時(能量消耗測試需要具有統計意義,每次取樣文章使用10秒鐘時間進行)的預處理,如果進一步降低預處理的時間,文章作者將其列為了將來進一步完善的工作。下圖為valley,hall以及elvenruins場景示意圖以及統計圖,可以看出該方法的畫質幾乎和最優化質在乙個水平上,而能量消耗卻很少。

能夠在渲染質量與能量消耗方面做出乙個最優的權衡;

使用者可以指定需要滿足的畫面質量目標或者能量消耗目標;

通過少量的預處理資料,即可在實時渲染中得到應用。

關於**通訊作者

王銳,浙江大學教授,博導。2023年浙江大學數學系博士畢業,2023年起在浙江大學電腦科學與技術學院cad&cg國家重點實驗室任教。長期從事計算機圖形學繪製、虛擬實境方面的研究工作,在快速/實時全域性光照明繪製、光場傳輸取樣的理論與方法、繪製流水線設計與優化等方面取得了具有國際先進水平的研究成果。在計算機圖形學的頂級期刊/會議acm transaction on graphic及siggraph,siggraph asia發表多篇**,在ieee tvcg, cgf,c&g,tvcj,eg,pg等國際知名期刊和會議共發表**三十餘篇。現為國際知名期刊cgf的編委。

實時繪製基於LOD的地形相關技術

lod levels of etails細節層次 是解決大規模地形實時渲染的一項關鍵技術。在地形中實現lod技術後大大加速了地形的渲染。其基本思想是 對地形生成具有不同層次 不同解析度 的多個版本,在繪製地形時依據視點來選擇合適的層次細節進行繪製。本文用基於四叉樹構建的地形來實現相關lod演算法,有...

基於視窗的實時統計

實時資料是無邊界的,即不斷地有資料輸入,但我們的統計一般是有時間範圍的,離線統計以年月日為統計週期,最小能到小時週期,如果是分鐘甚至秒級別計算,則可認為是實時計算,我們把實時資料流按時間段分割成乙個個視窗,則可基於視窗進行資料統計。我司開源pike支援三種視窗,結合各種udaf,通過sql就能能實現...

基於gst launch的實時轉碼

目標是實現乙個實時轉碼,可用於iptv提供節目源。相關工作在ubuntu作業系統下進行。需要對源 進行修改的時候,直接採用apt get source命令獲取源 根據需要進行修改,然後安裝,這樣能最大限度的保證相容性和穩定性。命令列示例 gstreamer是通過不同功能的element構成pipel...