幀調(diào)試器(Frame Debugger)
幀調(diào)試器 (Frame Debugger)可將正在運(yùn)行的游戲的狀態(tài)凍結(jié)到特定幀來自由回放,并查看用于渲染該幀的各個(gè)_繪制調(diào)用_。除了列出繪制調(diào)用,調(diào)試器還可逐個(gè)單步執(zhí)行這些調(diào)用,以便您詳細(xì)查看場景是如何從場景的圖形元素構(gòu)建的。

使用幀調(diào)試器
Frame Debugger 窗口(菜單:__Window > Frame Debugger__)會(huì)顯示繪制調(diào)用信息,并允許您控制正在構(gòu)建的幀的“回放”。
主列表以層級(jí)視圖形式顯示繪制調(diào)用(以及其他事件,例如幀緩沖區(qū)清除)的序列,并在其中標(biāo)識(shí)繪制調(diào)用的來源。列表右側(cè)面板提供有關(guān)繪制調(diào)用的更多信息,例如幾何體細(xì)節(jié)和用于渲染的著色器。
單擊列表中的某項(xiàng)將顯示該場景(在 Game 視圖中)截止到并包括該繪制調(diào)用的情況。工具欄中的左右箭頭按鈕用于在列表中向前和向后移動(dòng)一步,您也可以使用箭頭鍵來實(shí)現(xiàn)相同效果。此外,窗口頂部的滑動(dòng)條可讓您在繪制調(diào)用中快速拖動(dòng)來迅速定位要關(guān)注的事項(xiàng)。如果繪制調(diào)用對(duì)應(yīng)于游戲?qū)ο蟮膸缀误w,則會(huì)在主 Hierarchy 面板中突出顯示該對(duì)象以便于識(shí)別。

如果在選定的繪制調(diào)用中,RenderTexture 發(fā)生渲染,那么該 RenderTexture 的內(nèi)容將顯示在?Game 視圖中。這可用于檢查各種屏幕外渲染目標(biāo)是如何構(gòu)建的,例如延遲著色中的漫射 G 緩沖區(qū):
或者查看陰影貼圖的渲染方式:

遠(yuǎn)程幀調(diào)試器

要遠(yuǎn)程使用幀調(diào)試器,播放器必須支持多線程渲染(例如,WebGL,iOS 不支持這種渲染方式,因此無法運(yùn)行幀調(diào)試器),大多數(shù) Unity 平臺(tái)都支持多線程渲染,其次在構(gòu)建時(shí)必須選中“Development Build”。
桌面平臺(tái)的注意事項(xiàng):確保在構(gòu)建之前選中“Run In Background”選項(xiàng)。否則,將幀調(diào)試器連接到播放器時(shí),它將不會(huì)反映任何渲染變化,直至其獲得焦點(diǎn)為止。假設(shè)在同一臺(tái)機(jī)器上運(yùn)行 Editor 和播放器,您在 Editor 中控制幀調(diào)試器時(shí),將從播放器獲取焦點(diǎn)。
快速啟動(dòng):
從 Editor 中針對(duì)目標(biāo)平臺(tái)構(gòu)建項(xiàng)目(選擇 Development Player)
運(yùn)行播放器
返回到 Editor
打開 Frame Debugger 窗口
單擊?Active Profiler,然后選擇播放器
單擊?Enable,幀調(diào)試器應(yīng)該會(huì)在播放器上啟用
渲染目標(biāo)顯示選項(xiàng)
信息面板的頂部是一個(gè)工具欄,可讓您為 Game 視圖的當(dāng)前狀態(tài)隔離紅色、綠色、藍(lán)色和 Alpha 通道。同樣,您可以使用這些通道按鈕右側(cè)的?Levels?滑動(dòng)條,根據(jù)亮度級(jí)別來隔離視圖區(qū)域。這些功能僅在渲染到 RenderTexture 時(shí)才會(huì)啟用。
一次渲染到多個(gè)渲染目標(biāo)時(shí),您可以在 Game 視圖中選擇顯示哪個(gè)渲染目標(biāo)。下面分別顯示在 5.0版本中的延遲著色模式下的漫射、鏡面反射、法線和發(fā)光/間接光照緩沖區(qū):




此外,可通過從下拉選單中選擇“Depth”來查看深度緩沖區(qū)內(nèi)容:

通過隔離渲染紋理的 Alpha 通道,可以看到延遲 G 緩沖區(qū)的遮擋(存儲(chǔ)在 RT0 Alpha 中)和平滑度(存儲(chǔ)在 RT1 Alpha 中):


此場景中的發(fā)光和環(huán)境/間接光照非常暗;我們可以通過更改 Levels 滑動(dòng)條使其更明顯:

查看著色器屬性值
對(duì)于繪制調(diào)用,幀調(diào)試器還可以顯示所用的著色器屬性 值。單擊“Shader Properties”選項(xiàng)卡即可顯示屬性:

對(duì)于每個(gè)屬性,將顯示該屬性的值,以及在哪些著色器階段 (頂點(diǎn)、片元、幾何體、外殼、域)中使用了它。請(qǐng)注意,在使用 OpenGL 時(shí)(例如在 Mac 上),由于 GLSL 著色器的工作原理,所有著色器屬性都被視為頂點(diǎn)著色器階段的一部分。
在 Editor 中,還會(huì)顯示紋理的縮略圖,單擊它們 會(huì)在項(xiàng)目窗口中突出顯示紋理。
備用幀調(diào)試技術(shù)
您還可以使用外部工具來調(diào)試渲染。通過現(xiàn)有的 Editor 集成可輕松啟動(dòng)?RenderDoc?以檢查 Editor 中的 Scene 或 Game 視圖。
此外還可構(gòu)建獨(dú)立平臺(tái)播放器并通過以下任何方式使其運(yùn)行:
Visual Studio 圖形調(diào)試器
Intel GPA
RenderDoc
NVIDIA NSight
AMD GPU PerfStudio
Xcode GPU Frame Capture
GPU Driver Instruments