Variable Rate Shading (VRS) 是一種圖形渲染技術,它允許在渲染過程中對不同區域使用不同的著色率,從而提高圖形處理效率和性能。VRS 技術使得不同區域的像素著色可以在不同的細節層次上進行處理,允許開發者根據場景的需要動態調整計算量,以達到在保證畫面質量的同時提高渲染效率的效果。
為了在保證視覺效果及質量的基礎上,降低 GPU 的消耗,進一步壓榨移動設備的性能,Tuanjie 1.4.1 版本開始,全平臺支持Tuanjie Variable Rate Shading (VRS)。歡迎廣大開發者下載體驗!
Tuanjie VRS
Tuanjie Variable Rate Shading (VRS),用于動態調整圖像中每個像素的渲染細節或“著色”速率,通過降低采樣點數目,將一定數量的采樣點作為一個 Unit 進行渲染,以此控制 Shading Rates。開啟后,可以在保證視覺表現的情況下,減少 GPU 的工作負擔,從而提高渲染效率,特別是在資源有限的情況下。
在 Tuanjie Editor 中,可以通過對不同 Mesh Renderer 設置不同的 Shading Rate,從而實現屏幕的不同位置有不同的渲染速率,以達到降低 GPU 開銷的?標。
同時,除了支持自定義設置 Shading Rate外,團結引擎提供了?種Camera-Relative Shading 算法,開啟后可以為未手動設置 Shading Rate 的 Mesh Renderer ?動計算近似 Shading Rate 值,以降低逐一手動修改 Renderer 的開發成本。
Tuanjie VRS 當前支持平臺及圖形 API
Tuanjie VRS 目前已支持所有打包平臺,包括但不限于車機平臺(HMI Android、QNX、Embedded Linux)、OpenHarmony、Android等。
但由于各平臺的硬件/芯片及操作系統對圖形 API 的支持均不相同,Tuanjie VRS 對目標平臺系統的圖形 API 及其版本有一定要求,請確保目標設備/平臺對于圖形 API 充分支持。具體要求可參考下表:
Tuanjie VRS 技術原理
基本原理
在 Tuanjie 引擎中引入了基于 Mesh Renderer 的 Per-Draw Variable Rate Shading (VRS) 渲染技術,為開發者提供了更高效、更靈活的渲染控制能力。
在 Tuanjie 的實現中:
1.基于 Mesh Renderer 層級:每個 Mesh Renderer 都可以獨立設置 Shading Rate,這允許開發者精細控制每個物體的渲染質量。
2.腳本和 Inspector 支持:開發者既可以通過腳本動態調整 Shading Rate,也可以直接在 Tuanjie Inspector 面板中方便地配置,滿足不同場景需求。
3.實時渲染優化:結合實際場景需求,根據物體投影于屏幕的占比動態調整 Shading Rate,顯著提升性能。
Camera-Relative Shading 算法實現原理
Tuanjie 全新推出的 Camera-Relative Shading 功能,為開發者提供了一種更加智能化的渲染優化方式。該功能能夠動態計算未設置 Shading Rate 的對象渲染比例,根據場景實時調整,確保關鍵畫面質量的同時提升性能。
Camera-Relative Shading Rate 的核心是利用攝像機參數和場景中的物體信息,動態計算每個物體的 Shading Rate。主要涉及到以下幾個因素:
1. 攝像機與屏幕的關系
根據攝像機的視角 (Field of View, FOV) 和屏幕的尺寸,計算攝像機到屏幕的距離比例。這一比例決定了畫面中對象的空間投影大小。
2. 對象與攝像機的距離
系統自動測量攝像機與每個渲染對象之間的距離。距離越遠,對象的屏幕投影面積越小,Shading Rate 可以適當降低以節約資源。
3. 屏幕投影面積
使用攝像機與對象的距離計算出對象在屏幕上的投影面積。如果投影面積較大,表示對象對畫面質量的影響更大,其 Shading Rate 會自動調整為更高的水平;反之則降低 Shading Rate。
4. 用戶設定的控制范圍
開發者可以在渲染設置中定義 最大 (Max Screen Area Ratio) 和 最小 (Min Screen Area Ratio) 投影比例,確保 Shading Rate 的調整在合理范圍內。此外,還提供多檔模式(如“中等”、“高”等)以滿足不同項目需求。
5. 平滑映射與分級調整
通過一個平滑的公式,將計算結果映射為離散的 Shading Rate 級別(如 1x1、2x2、4x4)。該調整是連續的,避免了畫面突變或跳動。
Graphics API 適配策略
為了在不同硬件和渲染 API 環境中保持高效的渲染性能和視覺效果,Tuanjie 擁有一套統一的適配策略。這套策略確保在不支持某些 Shading Rate 配置的情況下,系統能夠自動調整到兼容的設置,從而平衡性能與畫質。
適配策略一:當 API 本身不支持特定 Shading Rate
如果某個 API 明確不支持某些 Shading Rate 組合,Tuanjie 會將這些不支持的配置統一回退為 2x2。例如:
?D3D12 上的 4x2、4x4 配置在不支持的情況下將被設置為 2x2。
?GLES (QCOM) 的 2x4 和 4x4 配置直接回退為 2x2。
適配策略二:當 API 支持但硬件受限
在某些情況下,API 理論上支持特定 Shading Rate,但受限于硬件能力。為此,Tuanjie 提供如下回退機制:
?如果硬件支持 2x2,則優先設置為 2x2。
?如果硬件不支持 2x2,則退回到更基礎的 1x1。
這些策略確保即使在有限的 API 和硬件環境中,也能通過調整 Shading Rate 達到可用的性能。
使用手冊:如何使用 Tuanjie VRS ?
請確保已下載和安裝Tuanjie 1.4.1 及以上版本。
Tuanjie VRS Editor 中核心操作
打開Editor,通過頂部菜單欄Edit >> Project Settings >> Graphics >> Shading Settings,開啟 VRS。當前版本提供了兩個選項:Custom Shading和Camera-Relative Shading。
選擇 Custom Shading
如果選擇 Custom Shading,選擇后可以開啟并使用 VRS 功能,在任一需要使用 VRS 的 Renderer 的 Inspector 面板中設置 Shading Rate 值,自定義每個 Renderer 的 Shading Rate。設置后,Render 會按照指定的 Shading Rate 進行渲染。
? 選中需要修改的 Renderer,在 Inspector 面板中,找到Additional Settings,選擇 Shading Rate 值。
? 共 9 個可選項:Size 1x1(表示每個采樣點作為一個 Unit 進行渲染,渲染結果畫面不變,與不啟用 VRS 的表現相同)、Size 1x2、Size 2x1、Size 2x2、Size 1x4、Size 4x1、Size 2x4、Size 4x2、Size 4x4(表示每 4x4 的采樣點作為一個 Unit 進行渲染,渲染結果畫面最模糊)。
? 若不修改,默認 Size 1x1。
選擇 Camera-Relative Shading
如果選擇 Camera-Relative Shading,默認使用系統提供的 Camera-Relative Shading 算法,為未手動設置 Shading Rate 的 Renderer自動計算近似 Shading Rate 值。
? Relative Rate Shading Level:
- 參數值(可選項):Low、Normal、High
- 指定最終渲染質量,該值越高,渲染質量越高,渲染畫面越清晰。
? Max Screen Area Ratio & Min Screen Area Ratio:
- 限制物體投影到屏幕上的最大有效覆蓋值,超出范圍的值將會自動設置為 Max Screen Area Ratio 和 Min Screen Area Ratio。
- 表示指定物體投影到屏幕上的有效覆蓋值范圍。它是一個相對值,并不直接對應于屏幕上的物理像素尺寸。
注意:若選擇了 Camera-Relative Shading,同時又手動指定了部分 Renderer 的 Shading Rate,則實際渲染效果優先使用手動設置的值,Camera-Relative Shading 算法僅對未手動設置 Shading Rate 的 Renderer 生效。
設置完成后,可正常 Build 或 Export。實機運行即可查看 VRS 效果。
Tuanjie VRS Debug Tool
為了便于更直觀地看到場景中每個 Renderer 的 Shading Rate 設置,并便于調試,1.4.1 版本的 Editor 中,為 VRS 新增了 Debug Tool,可以通過頂部菜單欄Window >> Analysis >> Rendering Debugger >> Rendering開啟,Map Overlays 選擇“Shading Rate Value Map”。
開啟后,Scene 窗口中將通過顏色實時展示當前每個 Renderer 使用的 Shading Rate 值。Play Mode 同樣適用。
? Map Sizes:調試工具在 Scene 窗口中的占比,拖動以調整 Scene 窗口中調試工具大小。
? Show Shading Rate Map:勾選后,打開 Shading Rate 顏色圖例。
Tuanjie VRS 推薦場景及用法
VRS 可針對場景中任一 Renderer 進行自定義設置并生效。目標是降低 GPU 的Fragment Instructions和Fragments Shaded。
Shading Rate 越高,則渲染結果畫面越模糊,因此推薦在渲染內容較重的場景中,對于非視覺重心的 Renderer,設置較高(如 4x4)的 Shading Rate;對于視覺重心的 Renderer,設置較低的 Shading Rate(如 1x1),以保證視覺質量。
Tuanjie VRS 在移動設備實際運行效果對比
因公眾號平臺圖片/視頻壓縮,建議下載安裝 Tuanjie 1.4.1 實際體驗!
左圖為原始畫質(Shading Rate 1x1):畫質清晰,運行卡頓
右圖為場景內物體全部開啟 VRS,并設置最高程度(Shading Rate 4x4):背景建筑/樹木模糊,運行流暢
原始畫質
開啟 VRS 4×4
在移動設備(安卓平臺)上實機運行對比視頻:
Tuanjie VRS 在移動設備實際運行性能指標及對比結果
在安卓移動設備上,全場景開啟 VRS 4x4 和全場景開啟 VRS 1x1 的 GPU 性能對比如下:
VRS 的目標是通過降低片段著色的分辨率和計算精度,減少片段著色器的復雜度和指令數,從而優化渲染性能。以下是幾個相關測量指標:
? ALU / Fragment:平均每個片段所執行的算術邏輯單元(ALU)操作的數量。
? EFU / Fragment:平均每個片段執行的特殊功能單元(EFU)操作的數量。
? Fragment ALU Instructions (Full):GPU 執行的完整(Full)片段 ALU 指令的總數。
? Fragment ALU Instructions (Half):GPU 執行的半精度(Half)片段 ALU 指令的總數。
? Fragment EFU Instructions:GPU 執行的片段 EFU 指令的總數。
? Fragment Instructions:GPU 執行的所有片段指令的總數。
? Fragments Shaded:GPU 實際著色的片段數量。
對比數據可以看出,場景中開啟了 VRS 4x4 后,GPU 的Fragment Instructions和Fragments Shaded明顯降低。
以上就是此次團結引擎 1.4.1 版本中“可變速率著色渲染”的更新。 團結引擎將傾聽國內開發者的聲音,為大家帶來更多大家想要的功能,并且始終保持引擎的高性能、高畫質,以及穩定性。非常期待得到你的反饋,與我們一起共建中國版的實時 3D 引擎。
[1] 團結引擎官網:
https://unity.cn/tuanjie/tuanjieyinqing
[2] 團結引擎問答專區:
https://developer.unity.cn/plate/tuanjie-engine?tab=ask
[3] 團結引擎用戶手冊:
https://docs.unity.cn/cn/tuanjiemanual/Manual/UnityManual.html
Unity 官方微信
第一時間了解Unity引擎動向,學習進階開發技能
每一個“點贊”、“在看”,都是我們前進的動力
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.