Skip to main content
本文以 XBOX Dev Days 2024 中發表的「PIX 新功能」簡報為基礎。此資訊為 2024 年 5 月時的最新資訊。部分功能自那時起可能已變更或更新。
PIX on XBOX 和 PIX on Windows 都推出了多項新功能和改進,以提升遊戲效能和偵錯功能。本文摘要說明主要更新,以及這些更新如何簡化您的開發流程。

PIX 效能

PIX 效能已有顯著改進,使其成為遊戲開發的重要工具。最新更新著重於縮短開發人員的反覆運算時間,將擷取和分析的時間減少超過 50%。大部分擷取資料現在會保留在主機上,直到需要時才傳輸,加快了反覆運算流程。此外,GPU 擷取檔案也有新的壓縮配置,並可使用快取資料進行二次分析。這些增強功能有助於確保您能夠快速且有效率地偵錯和最佳化遊戲,讓您享有更順暢、更精簡的開發工作流程。

PIX on XBOX 和 PIX on Windows:UX 效能

PIX UX 效能改進著重於提升 PIX on XBOX 和 PIX on Windows UI 的效率和效能。 PIX UI 出現卡頓和遲緩的回報,因而促成了一項調查。調查發現,名為 Windows Presentation Foundation (WPF) 的 UI 架構使用方式並非最佳。這種 WPF 的非最佳使用方式導致主執行緒上產生大量工作,進而造成遲緩。為了解決此問題,相關工作著重於讓 PIX 引擎更加非同步。現在有更多作業 (例如開啟檔案或收集計數器) 會以平行方式執行。

PIX on XBOX GPU 擷取的開發人員反覆運算時間改進

本機存放模式

「本機存放模式」是一項能將反覆運算時間改善 50% 以上的功能。此模式會將大部分擷取的資料保留在主機的 SSD 磁碟機上,以將開啟檔案時傳輸的資料量降至最低。因此,您可以立即進行分析,而不會有通常與資料傳輸相關的延遲。 圖 1. PIX on XBOX GPU 擷取。 PIX on XBOX GPU 擷取 圖 1 顯示 GPU Capture 面板,並已選取 Use Local Storage 選項。 本機存放模式的一大優點是能夠進行多次擷取,再決定要儲存哪些擷取。由於進行和分析擷取的速度很快,因此這個流程得以加速。只有要儲存的擷取才需要花時間複製資料。 或者,您也可以使用擷取上的 [下載] 按鈕,在背景將擷取傳輸到 PC。 圖 2. PIX on XBOX GPU 擷取的 [下載] 按鈕。 PIX on XBOX GPU 擷取下載按鈕 圖 2 以紅色醒目提示 GPU 擷取的下載按鈕。 此功能目前預設為關閉,以便進行進一步測試。不過,我們鼓勵您試用此功能,並向 PIX 客戶意見反應提供意見。

分析效能

GPU 擷取檔案和所有 PIX 網路傳輸都已實作新的壓縮配置,提升了資料儲存和傳輸的效率。現在有更多資料會以平行方式收集,進而簡化分析流程。 2024 年 3 月推出了新的計數器收集策略。先前為了取得平均值,會收集所有層級和階層的所有計數器。現在資料收集會優先處理最上層的 PIX 事件,並先顯示這些事件。分葉節點則會稍後在背景中收集。這種方法可確保重要資料隨時可供存取。平均處理階段已從 2023 年 10 月的 48 次減少到 2024 年 3 月的 19 次。

使用快取資料的二次分析功能

「二次分析」是指您第二次對同一個擷取執行分析。透過將擷取資料快取到主機,並為 Timeline 使用 PC 端資料快取,您可以大幅縮短分析所需的時間。這種方法可讓您平行收集 Timeline 資料。重要資訊隨時可用,而不需要重複擷取資料。使用快取資料,即可快速存取和分析效能計量、找出瓶頸,並做出明智的決策來最佳化遊戲。這個精簡的流程不僅改善了反覆運算時間,還提供了回應更快、更有效率的分析工作流程。

PIX on Windows GPU 擷取的開發人員反覆運算時間改進

PIX on Windows 改善了分析效能,可在分析開始前顯示基本資料,從而簡化流程。您現在可以立即存取繫結的資源和 API 物件等資訊,以及狀態檢視、描述元堆積、著色器表格和資源歷程記錄檢視等檢視。這可節省時間,並提供更直覺的體驗。在某些情況下,啟動時間比舊版 PIX on Windows 快十倍。 其他分析效能功能包括下列各項。
  • 管線索引標籤現在填入資料的速度更快。
  • Shader Access Tracking 現在是選用功能。若要啟用此功能,請選取 Gather Accessed Resources 按鈕。
  • 更新後的 GPU 廠商外掛程式改善了資料收集速度。
我們正積極努力,確保 PIX on Windows 具備與 PIX on XBOX 相同的功能。

PIX on XBOX GPU 偵錯

先前,GPU 偵錯是 PIX 的次要案例。由於 GPU 技術的進步,它現在已成為最重要的案例之一。PIX on XBOX GPU 偵錯的最新更新推出了多項強大的功能,旨在強化偵錯流程並提升效率。新功能包括下列各項:
  • 即時偵錯中的著色器例外狀況
  • GPU 擷取中的著色器例外狀況
  • 即時偵錯的 Invocations 視窗
  • Watch 檢視中的執行緒監視
  • 著色器符號檢視
  • 支援 DirectX Raytracing (DXR) 著色器偵錯

即時偵錯中的著色器例外狀況

您現在可以在即時偵錯中處理著色器例外狀況。您可以:
  • 偵測在 GPU 上執行之著色器程式中的錯誤。
  • 找出數值計算中的問題。
  • 攔截記憶體存取違規。
當發生上述任何例外狀況時,偵錯工具會在錯誤點暫停遊戲的執行。您可以檢查遊戲的狀態,包括變數、記憶體和呼叫堆疊。這些資訊會顯示發生了什麼問題以及原因。 圖 3. PIX on XBOX 即時著色器偵錯。 PIX on XBOX 即時著色器偵錯 圖 3 顯示 PIX on XBOX 的即時著色器偵錯對話方塊。

GPU 擷取中的著色器例外狀況

現在可以在 GPU 擷取上檢視著色器例外狀況。著色器例外狀況檢視會提供整個畫面中所發生例外狀況的詳細資訊。此檢視位於 Tools 中,在 Dr. PIX、Shader Trace 和 Memory Timeline 旁邊。 此檢視會顯示擲回例外狀況的圖形識別碼 (GID) 清單。針對每個 GID,此檢視會顯示發生例外狀況的著色器清單,並以其雜湊值識別。展開這些項目即可查看該著色器內擲回的所有例外狀況。針對每個例外狀況,您會取得函式名稱、原始程式碼行、程式計數器值、例外狀況命中次數和例外狀況類型。您也可以立即前往偵錯工具來測試每個著色器。 結果可以進一步篩選。例如,您可以選取 GID 範圍、例外狀況類型的子集,並查看受影響的著色器。 PIX on XBOX 中的記憶體例外狀況仍在開發中,但數值例外狀況已可完全正常運作。 圖 4. Shader Exceptions 檢視。 Shader Exceptions 檢視 圖 4 顯示 Shader Exceptions 檢視。

即時偵錯的 Invocations 視窗

即時偵錯中的著色器例外狀況現在會顯示在 Invocations 和 Watch 視窗中。您可以查看擲回例外狀況的原始程式碼位置、執行緒是否仍在運作、wave 類型 (64 與 32),以及程式計數器行。 圖 5. 即時偵錯的 Invocations 視窗。 即時偵錯的 Invocations 視窗 圖 5 顯示即時偵錯的 Invocations 視窗。

Watch 檢視中的執行緒

新的 Watch 檢視功能會在 Watch 檢視中顯示所有 wave 通道。這可讓您在單一檢視中查看整個 wave。先前,您必須變更所檢視的叫用才能查看各個通道。 有多個設定選項可用來篩選結果。您可以監看所有通道、特定範圍、僅作用中/非作用中的通道,或屬於某個 quad 的通道。 圖 6. PIX Watch 檢視。 PIX Watch 檢視 圖 6 顯示 PIX Watch 檢視。 圖 7. 通道設定選項。 通道設定選項 圖 7 顯示通道設定選項。

Shader Symbols 檢視

Shader Symbols 檢視取代了過去開啟擷取時會出現的快顯對話方塊。現在會先出現警告,接著顯示專用的檢視。它會顯示已載入和已卸載的符號。先前只會顯示無法運作的項目。現在則有現有項目的完整檢視。如有需要,您也可以新增和移除符號路徑,並重新掃描程式資料庫 (PDB) 路徑。 圖 8. Shader Symbols 檢視。 Shader Symbols 檢視 圖 8 顯示含有 39 個未解析著色器 PDB 的 Shader Symbols 檢視。

支援 DXR 著色器偵錯

PIX on XBOX 上的 DXR 著色器現在已與其他偵錯類型並駕齊驅,可產生 PDB、在 PIX 中探索這些 PDB、載入它們,並偵錯著色器的任何部分。 DXR 著色器符號與一般建議的做法略有不同。對於其他著色器階段,建議使用精簡 PDB。使用不同的旗標組合進行編譯以取得精簡 PDB,之後 PIX 即可從中重新產生偵錯資訊。這很方便,因為完整 PDB 很大且使用成本高。 對於 DXR,我們建議使用內嵌 PDB。使用目前的工具時,內嵌 PDB 的效果較佳。與其他著色器相比,DXR 著色器的排列組合較少。 逐步執行 TraceRays() 時,偵錯工具會從驅動程式的 TraceRay 實作開始。您可以從該處繼續逐步執行,或在高階著色器語言 (HLSL) 著色器中設定中斷點,以直接前往您要調查的位置。 對於 PIX on Windows,現在支援偵錯下列著色器類型。
  • RayGen 著色器
  • ClosestHit 著色器
  • AnyHit 著色器
  • Miss 著色器

GPU 停止回應分析

GPU 停止回應分析對於維持遊戲圖形的效能和可靠性至關重要。它涉及偵測和解決導致 GPU 停止回應的問題。這些問題可能會嚴重影響遊戲體驗。透過分析 GPU 停止回應,您可以找出瓶頸、最佳化效能,並確保遊戲在各種硬體設定上順暢執行。

開發期間的 PIX on XBOX GPU 停止回應分析

GPU 停止回應分析可能是遊戲圖形開發中最具挑戰性的部分。2024 年 3 月 GDK 推出了新的 GPU 停止回應螢幕擷取畫面功能。如果在本機開發套件上發生 GPU 停止回應,此功能會擷取遊戲的螢幕擷取畫面。基於隱私權考量,零售環境目前不支援此功能。對於本機開發人員模式擷取,請使用 Add_Blob_to_GPU_Hang_DumpX API 將 blob 新增至 .hix 檔案。在您的處理常式中呼叫此 API,即可將自訂中繼資料新增至報告。 blob 檔案的優點在於工作室或發行商通常有自己的追蹤和內部遙測。它們能更深入地了解發生 GPU 停止回應時玩家在遊戲中的位置,讓他們可以為停止回應調查加入上下文。 開發用的 PIX 事件和標記如下。
  • PIXBeginEvent
  • PIXEndEvent
  • PixSetMarker

零售環境中的 GPU 停止回應分析

在零售環境中,停止回應傾印 (.hix 檔案) 可在 Partner Center 中取得。這些檔案會擷取硬體和遊戲資訊、自動分析停止回應傾印,然後指出停止回應的根本原因。PIX 中這種離線和即時偵錯的統一方法,提升了 GPU 偵錯的效率。
請聯絡您的開發人員合作夥伴經理 (DPM) 以取得 .hix 檔案的存取權。
Retail PIX 事件和標記如下。
  • PixBeginRetailEvent
  • PixEndRetailEvent
  • PIXSetRetailMarker
在偵錯和檢測裝置上,Retail API 的運作方式與其非零售版本相同。使用 PIX Retail 標記會造成效能影響,與標準 PIX 標記類似。

GPU 效能分析

使用 PIX 進行 GPU 效能分析涉及一些關鍵要素,可協助您最佳化和偵錯遊戲,以獲得更好的效能和穩定性。主要元件如下。
  • GPU 擷取:記錄遊戲所進行的所有 Direct3D 12 API 呼叫,包括其參數資料。這可為您提供各種偵錯和分析功能。
  • Timing 擷取:將 CPU 和 GPU 分析資料合併到單一擷取中,以進行深入的遊戲分析。這些資料是在遊戲執行時收集的,且額外負荷極低。
  • Shader Explorer:協助改善和反覆調整著色器效能及暫存器使用量。您可以從 GPU 擷取、HLSL 著色器原始碼或著色器 .pdb 檔案使用它。
  • 瓶頸識別:提供 GPU Trace 等工具,用於佔用率測量和瓶頸識別。
  • 記憶體和資源管理:提供更快速的 API Objects Summary 檢視,以及 Texture MIP Statistics 檢視等新功能。
  • 光線追蹤:包括新功能,例如在 Acceleration Structure Viewer 中依表面積啟發式成本著色,以及每個執行個體的熱度圖,以進行詳細分析。

PIX on XBOX 效能分析:GPU Trace

GPU Trace 工具提供一種快速且全面的方式,可取得佔用率測量和瓶頸計數器收集的高階概觀。這不需要進行和重新執行 GPU 擷取。此工具的主要功能之一,是效能測量和時間軸來自執行中遊戲的實際執行。GPU Trace 會記錄實際執行中遊戲所執行的效能,為複雜的重疊工作負載提供更精確的資料。這與 GPU 擷取不同,GPU 擷取會重新執行 GPU 工作,可能會遺漏 CPU-GPU 互動和同步處理所產生的效能細節。如需 GPU Trace 的詳細資訊,請參閱使用 GPU Trace 快速調查效能。 圖 9. GPU Trace 工具。 GPU Trace 工具 圖 9 顯示 PIX on XBOX GPU Trace 工具的範例。 擷取 GPU 資料時,請先檢查 GPU 命令佇列的執行通道。這會顯示擷取期間在每個作用中佇列上執行的各種事件。 圖 10. GPU Trace 執行通道。 GPU Trace 執行通道 圖 10 顯示 Graphics 佇列、三個 Compute 佇列,以及 GPU 內容視覺化工具。 圖 11. GPU Trace 佔用率通道。 GPU Trace 佔用率通道 圖 11 顯示佔用率檢視。它不僅會顯示著色器引擎 0 的佔用率 (如同一般 GPU 擷取),還會以更精細的層級顯示,例如每個著色器陣列、每個工作群組處理器,甚至每個單一指令多重資料 (SIMD)。 佔用率資料可以根據 API 階段以色彩標示。例如,黃色代表 compute wave,綠色代表 vertex wave。這是預設的色彩配置,但可以變更為不同的視覺效果模式。例如,Wave Mode 會以一種色彩顯示 Wave32,並以另一種色彩顯示 Wave64。Active Threads 則會根據 wave 內作用中執行緒的百分比為 wave 著色。 您也可以展開每個 SIMD,以檢視整個事件中的 wave 分佈。這可協助您找出通常難以發現的問題,例如 SIMD 之間的 wave 不平衡。 圖 12. GPU Trace wave 佔用率。 GPU Trace wave 佔用率 圖 12 顯示 GPU Trace wave 佔用率檢視。 硬體和軟體計數器可以在時間軸中以圖表顯示。若要擷取這些計數器,請在開始 GPU 追蹤之前選取它們。這可讓您快速且精確地識別瓶頸,例如參數快取停滯過高或快取命中效率下降。 圖 13. GPU Trace 硬體計數器。 GPU Trace 硬體計數器 圖 13 顯示 GPU Trace 硬體計數器。

Shader Explorer

Shader Explorer 功能已在 2023 年 10 月 GDK 中公開推出。使用此功能可查看影響著色器效能的因素,例如暫存器壓力和存留期、變數與暫存器的對應、指令執行成本、發出速率等。Shader Explorer 專為著色器的快速反覆調整而設計,因此您可以嘗試不同的方法,看看哪一種效果最好。您可以從 GPU 擷取、HLSL 著色器原始碼或著色器 .pdb 檔案開始使用 Shader Explorer。 使用 GPU 擷取在工具中進行各種變更,然後將變更傳回擷取,即可立即在畫面中看到效果。 如需 Shader Explorer 的詳細資訊,請參閱使用 PIX 的 Shader Explorer 最佳化著色器效能。

瓶頸識別

2024 年 3 月 GDK 推出了參數快取瓶頸功能,可協助將參數快取可能承受壓力的區域視覺化。當快取填滿時,系統可能會變慢,這可能會影響 wave 匯出的速度和效率。如果系統無法配置必要的資源,可能會導致匯出時間變長,甚至失敗。瓶頸識別對於恢復遊戲效能至關重要。 如需詳細資訊和瓶頸範例,請參閱 GPU 效能秘訣與技巧。

光線追蹤

PIX on XBOX DXR:Acceleration Structure 檢視器

PIX on XBOX 中的 Acceleration Structure 檢視器已獲得改進。新功能包括:
  • 以色彩反映表面積啟發式 (SAH) 成本或分支。
  • 每個執行個體的熱度圖檢視,可輕鬆找到最佳化的機會。
  • 可編輯的最上層加速結構 (TLAS) 區段,用於修改 TLAS 輸入,並查看產生的週框體積階層 (BVH) 及其對計時的影響。
圖 14. PIX on XBOX Acceleration Structure 檢視器。 PIX on XBOX Acceleration Structure 檢視器 圖 14 顯示 PIX on XBOX Acceleration Structure 檢視器。 如需此檢視和 XBOX 上 DXR 的詳細資訊,請參閱 XBOX 光線追蹤:效能與最佳化。

PIX on Windows DXR:Acceleration Structure 檢視器

PIX on Windows Acceleration Structure 檢視器現在具有光線視覺化檢視,可查看光線如何投射到幾何上並加以追蹤。每條追蹤的光線都是由事件清單中對 DispatchRays() 的特定呼叫所叫用。這代表主要光線和次要光線。不過,與 PIX on XBOX 不同,由於對 BVH 的深入資訊有限,這裡無法實作光線色彩和熱度圖功能。此外,PC 上的 HLSL 中沒有時間戳記。 現在也提供新的階層樹狀檢視。它會顯示構成 TLAS 和最下層加速結構 (BLAS) 的執行個體和幾何。此檢視包含每個執行個體或幾何的資訊,包括其大小、旗標、轉換和其他屬性。您也可以在檢視器中顯示或隱藏每個個別的執行個體或幾何,並依大小排序 TLAS 內的 BLAS。 圖 15. PIX on Windows Acceleration Structure 檢視器。 PIX on Windows Acceleration Structure 檢視器 圖 15 顯示 PIX on Windows Acceleration Structure 檢視器。 PIX on Windows 也具有 Invocations 檢視功能。使用此檢視可查看特定 DispatchRays() 事件的所有 ClosestHit、AnyHit、Miss 或 Callable 著色器叫用。此檢視也會提供光線原點、分派索引、著色器類型和方向的相關資訊。 圖 16. PIX on Windows Invocations 檢視。 PIX on Windows Invocations 檢視 圖 16 顯示 PIX on Windows Invocations 檢視。

記憶體和資源

PIX 提供多項強大的功能,協助您了解和最佳化記憶體使用量。這對於記憶體有限的平台 (例如 XBOX Series S) 特別重要。2024 年 3 月 GDK 更新為這些主機額外提供了 500 MB 的記憶體,讓資源管理更具彈性。

PIX on XBOX API Objects Summary 檢視

PIX on XBOX 中的 API Objects Summary 檢視會顯示擷取中的所有 Direct3D API 物件。先前,由於物件數量眾多,此檢視有效能問題且難以瀏覽。API 檢視現在會從摘要檢視開始,其填入資料的速度比詳細檢視更快。您仍可在 UI 中切換這兩個檢視。 圖 17. PIX on XBOX API Objects Summary 檢視。 PIX on XBOX API Objects Summary 檢視 圖 17 顯示 PIX on XBOX API Objects Summary 檢視。 摘要檢視中也新增了樞紐。使用它們可快速找到您需要的資訊。它們讓您更容易識別哪些元素 (例如資源類型的物件) 耗用最多記憶體。 例如,使用下列步驟找出哪些資源佔用最多記憶體。
  1. 前往 API Object Summary 檢視。
  2. 篩選為僅顯示資源。
  3. 找到 Size 資料行。
  4. 選取大小資料行的標頭,依大小排序元素。
圖 18. 依大小篩選的 PIX on XBOX API Objects Summary 檢視。 依大小篩選的 PIX on XBOX API Objects Summary 檢視 圖 18 顯示醒目提示 Size 資料行的 API Objects Summary 檢視。

Pipeline State Object 檢視

Pipeline State Object 檢視自 2023 年 6 月 GDK 起即已提供。此檢視的效能和精確度持續獲得改善。其中一項主要功能是篩選按鈕。它會篩選掉擷取中所有未使用的管線狀態物件 (PSO),只顯示正在使用的物件。這讓此檢視在進行 GPU 擷取時更加實用。 歷程記錄索引標籤現在會顯示哪些 GID 使用所選的 PSO。您也可以從下拉式功能表選取著色器階段,中間區段會顯示繫結至此 PSO 的著色器。此檢視也包含在 PIX 中對著色器原始碼所做的編輯。 圖 19. PIX on XBOX Pipeline State Object 檢視。 PIX on XBOX Pipeline State Object 檢視 圖 19 顯示 Pipeline State Object 檢視,其中著色器階段下拉式功能表和 Filter 按鈕以紅色框出。

PIX on XBOX Texture MIP Statistics 檢視

Texture MIP Statistics 檢視可深入了解每個資源收到多少紋理擷取要求。對於 GPU 擷取,此檢視會顯示播放期間對該資源發出的所有 MIP 要求,並指出所要求的最高 MIP 層級。 此檢視對於效能調查很有用。它有助於識別資源是否不必要地建立了從未被要求的 MIP,或是否有某個紋理只有 MIP 0 被要求。這些深入資訊可作為最佳化資源使用量的起點。 圖 20. Texture MIP Statistics 檢視。 PIX on XBOX Texture MIP Statistics 檢視 圖 20 顯示 Texture MIP Statistics 檢視。

PIX on XBOX Edits 檢視

Edits 檢視是追蹤變更的全方位工具。使用它可存取所有目前的編輯、還原這些編輯,並檢視受這些變更影響的所有 GID 清單。此檢視特別適合用於進行變更,而不必在之後費心尋找它們。 以滑鼠右鍵按一下任何編輯,即可將其與原始來源比較。這會提供原始著色器與編輯版本之間的差異。您可以使用偏好的檔案比較工具,例如 WinDiff 或 Beyond Compare。在一般設定中進行設定後,PIX 會使用您的工具作為比較編輯的預設工具。 圖 21. Edits 檢視。 PIX on XBOX Edits 檢視 圖 21 顯示 Edits 檢視,其中 Compare with original source 以紅色框出。

記憶體和資源即時檢視

新增了用於管理記憶體和資源的即時檢視。先前,PIX 中的 System Monitor 會顯示計數器、Remote View 和連線狀態。GPU 擷取中的檢視已整合到即時檢視模式中。

PIX on XBOX 即時 GPU 檢視

圖 22. PIX on XBOX 即時 GPU 檢視。 PIX on XBOX 即時 GPU 檢視 圖 22 顯示 PIX on XBOX 上的即時 GPU 檢視。播放/暫停按鈕 (以紅色框出) 位於狀態指示器旁邊。它顯示開發套件已連線。 若要檢視 Live Tools 檢視的內容,請暫停遊戲。Live Tools 位於 System Monitor 旁邊的索引標籤中。

即時記憶體配置圖表

記憶體配置圖表會顯示遊戲記憶體使用量的詳細資訊。這包括遊戲與系統之間的記憶體配置,以及其用於紋理、轉譯目標和緩衝區的記憶體使用量。此功能旨在改善 XBOX Series S 主機上的記憶體節省。 圖 23. 即時記憶體配置圖表。 PIX on XBOX 即時記憶體配置圖表 圖 23 顯示 PIX on XBOX 上的即時記憶體配置圖表。

Live API Objects 檢視

Live API Objects 檢視已整合到 Live 工具區段中。藉由暫停遊戲並依大小排序,您可以快速識別大型元素,並查看哪些已載入、哪些未載入。直接從 Live 檢視執行這些檢查,就不需要進行 GPU 擷取。 圖 24. PIX on XBOX Live API Objects 檢視。 PIX on XBOX Live API Objects 檢視 圖 24 顯示 PIX on XBOX 上的 Live API Objects 檢視。 2023 年 10 月 GDK 中推出的功能,現在由 Live 檢視中的 Texture Viewer 加以強化。它已在 2024 年 3 月 GDK 中發行。這項新功能會在您選取 API 物件時,於 Texture Viewer 中顯示影像。您可以使用長條圖區段評估像素內容、大小、格式和色彩分佈。 此檢視的目標是協助您快速識別問題,例如可能誤留的大型單色紋理。此流程是在 GPU 擷取之外執行的,可讓您快速調查並改善反覆運算時間。 圖 25. PIX on XBOX 即時 Texture 檢視器。 PIX on XBOX 即時 Texture 檢視器 圖 25 顯示 PIX on XBOX 上的 Texture 檢視器。

PIX on XBOX Mesh 和 Texture Viewer 擴充性

Mesh 和 Texture Viewer 擴充性是 2024 年 8 月在 PIX on XBOX 中推出的新功能。PIX 有多種方式可將繪製或分派中的紋理視覺化。例如,Mesh 和 Texture Viewer 擴充性可以在線框模式中檢視轉譯目標、查看每個像素的過度繪製,或判斷目前事件中哪些像素已繪製、哪些未繪製。 這項新功能可使用計算著色器為緩衝區和紋理提供自訂視覺效果。每當您在 PIX 管線檢視中選取紋理或緩衝區資源時,都可以從視覺效果下拉式功能表中提供的自訂選項清單中選擇,以切換視覺效果。 圖 26. 視覺效果下拉式功能表。 視覺效果下拉式功能表 圖 26 顯示視覺效果下拉式功能表和選項。 如何進行自訂視覺效果的範例包含在 GDK 的 GDK 二進位檔目錄內的 Extensibility 資料夾中。這些範例可作為學習用的範例,您可以視需要加以編輯,然後在 PIX 中查看結果。

啟用 Mesh 和 Texture Viewer 視覺效果

Mesh 和 Texture Viewer 視覺效果功能預設為關閉。您可以在 PIX 設定中重新啟用它。若要找到您的自訂著色器,請將其位置新增至 Extensibility 路徑。 如果您想要將專案標頭檔公開給計算著色器 (例如,參考您在專案中定義的常數緩衝區),則需要提供相關的標頭檔。 圖 27. 啟用 Mesh 和 Texture Viewer 視覺效果。 啟用 Mesh 和 Texture Viewer 擴充性 圖 27 顯示 Enable Custom Mesh and Texture Viewer Visualization 核取方塊,以及擴充性和搜尋路徑。

擴充性程式設計模型

PIX 會編譯著色器,讓您可以存取透過呼叫繫結的所有資源。特殊暫存器可存取所選繪製或分派可用的所有資源。範例包括下列各項:
  • PixExt_SelectedResourceRegister:存取目前在管線檢視中選取的資源
  • PixExt_RenderTargetRegister0:RTV0
  • PixExt_IndexBufferRegister:索引緩衝區
  • PixExt_VertexBufferRegister0:頂點緩衝區 0
  • PixExt_IndirectArgs:間接引數緩衝區
產生的資料會使用特殊函式傳回 Texture 和 Mesh Viewer。範例包括下列各項:
  • void PixExt_StorePixel_Int(uint2 offset, int4 pixel)
  • void PixExt_StoreVertex(uint offset, float4 vertex)

擴充性函式宣告

視覺效果是在您提供的計算著色器中定義的。PIX 會重新解譯輸入資料,並產生網格或影像。PixExt_ComputeInput 結構是選用的輔助 struct,可提供給計算著色器的進入點。進入點必須命名為 main。此 struct 封裝了典型的計算著色器系統值,如下列範例所示。

Texture Viewer 擴充性範例

以下是 2024 年 3 月 GDK 中所包含的範例計算著色器。它會檢查 NaN 值,並使用洋紅色為找到的任何像素著色。
PixExt_SelectedResourceRegister API 呼叫會參考管線檢視中所選的資源。這樣就不需要從計算著色器手動指向此資源。在下列範例中,會使用分派執行緒 ID 作為紋理座標,載入輸入紋理中的值。
在下一個範例中,PixExt_StorePixel_Float API 呼叫會寫入輸出資源。對於紋理視覺化工具,輸出資源是紋理。對於網格視覺化工具,輸出則是 PIX 用來轉譯輸出網格的索引和頂點緩衝區組。

Direct3D 功能支援

PIX on XBOX 和 PIX on Windows 已新增 Direct3D 功能支援,如下表所示。 自 2023 年 3 月 GDK 起,增強型屏障即已成為 PIX on XBOX 中 Direct3D 功能支援的一部分。2024 年 3 月 GDK 推出了點陣化順序檢視 (ROV) 的支援。此功能會顯示著色器中何時使用 ROV。繫結的資源會顯示為 ROV,而不是標準的無序存取檢視 (UAV)。PIX on XBOX 支援 DirectML。如需詳細資訊,請連絡您的 Microsoft 客戶經理。 PIX on Windows 支援增強型屏障、ROV 和 DirectML。此外也新增了工作圖形、GPU 上傳堆積、非正規化取樣,以及遊戲中多個 Direct3D 裝置的支援。

PIX Timing 擷取效能

透過加速符號載入和全面翻新 PIX 事件以降低 CPU 額外負荷,Timing 擷取效能已獲得改善。

Timing 擷取功能

除了效能改進之外,Timing 擷取也新增了新功能。其中包括下列各項。
  • Summary 檢視
  • Checklist
  • 循環 Timing 擷取
  • Memory 檢視
  • Metrics 檢視 Consolidated Events Editor
  • 取樣函式火焰圖

Summary 檢視

Summary 檢視已獲得強化,可提供比以往更多的資訊。 圖 28. Summary 檢視。 Summary 檢視 在圖 28 中,左上角會顯示檔案詳細資料,包括檔案位置、復原和 GDK 版本、圖形驅動程式類型,以及 GPU 和 CPU 的記憶體集區大小。右上角會顯示 CPU 記憶體使用量和可用值。左下角會顯示命中次數最高的五個 PIX 事件。右下角則以圖表顯示每個核心的 CPU 使用率百分比。 圖 29. GPU 擷取的 Summary 檢視。 GPU 擷取的 Summary 檢視 在 GPU 擷取中,不會顯示任何標記。圖 29 顯示最長的最上層 PIX 事件、最長的畫面,以及擷取內事件的連結,分別位於左上、右上和下方檢視中。 圖 30. 已配置之最大 API 物件的 Summary 檢視。 已配置之最大 API 物件的 Summary 檢視 在圖 30 中,Summary 檢視會顯示擷取期間配置的最大 API 物件,並提供 CPU 執行緒/核心使用量的概觀。這會顯示不同執行緒的核心使用率。執行緒名稱列在最左側的資料行中。 與一般 CPU 核心使用量相比,Summary 檢視也提供更詳細的 CPU 執行緒或核心使用量檢視,如圖 31 所示。 圖 31. CPU 執行緒/核心使用量的 Summary 檢視。 CPU 執行緒/核心使用量的 Summary 檢視

Checklist

PIX Checklist 功能是使用 GPU 擷取產生的。自 2023 年 10 月 GDK 起,它也已延伸至 CPU Timing 擷取。偵測規則正在陸續新增中。您將能夠新增自己的自訂規則。 圖 32. Checklist 檢視。 Checklist 檢視 圖 32 顯示 Checklist 及其規則的範例。

循環 Timing 擷取

循環 Timing 擷取模式已在 2023 年 10 月 GDK 中推出。此模式先前稱為連續 Timing 擷取。使用此模式可開始擷取並讓它持續執行。在您停止擷取後,它只會儲存擷取的最後幾秒鐘。此模式特別適合用於擷取難以發現的長時間執行問題,例如長時間遊玩後隨機發生、似乎有錯誤的間歇性行為。 以程式設計方式支援此模式的 API 已在 2024 年 3 月版本中發行。您可以將此模式整合到自動化案例中。不過,此模式不支援 GPU 時間戳記資料。目前沒有納入此功能的計畫。如果此功能對您有幫助,請連絡 PIX 小組。 圖 33. 循環 Timing 擷取。 循環 Timing 擷取 圖 33 顯示啟用循環 Timing 擷取的對話方塊。

Memory 檢視

自 2024 年 3 月 GDK 起,Timing 擷取中提供新的 Memory 檢視。這為分析遊戲開發專案中的記憶體使用量提供了強大的工具。它可讓您記錄記憶體配置的詳細資訊,並找出潛在的記憶體流失。若要啟用此功能,請啟用至少一種配置類型或分頁錯誤事件。 啟用必要的設定後,照常執行 Timing 擷取。擷取完成後,會出現 Sample Memory Access 檢視。它會顯示遊戲在擷取期間執行的配置。此檢視可讓您深入了解配置隨著時間發生的位置,以及配置類型 (CPU、GPU 或工具)。 請注意,這是以取樣為基礎的方法,因此可能無法擷取 100% 的配置。 圖 34. 啟用 Memory 檢視設定。 啟用 Memory 檢視 圖 34 顯示啟用 Memory 檢視的設定。 圖 35. Sample Memory Access 檢視。 Sample Memory Access 檢視 圖 35 在右上角顯示所分析的配置類型和所選的時間範圍。一系列紫色矩形代表記憶體對應。藍色代表 CPU 配置,紫色代表 GPU,灰色代表工具。對應中的每個方塊代表特定位址的記憶體配置。每個方塊的大小與配置大小成比例。將滑鼠停留在方塊上時,會顯示區塊的文字描述。 您可以針對顯示的配置,依下列屬性進行篩選。
  • 時間範圍
  • 記憶體分頁大小 (例如,僅顯示 64 KB 配置)
  • 指定用途 (CPU、GPU 或工具)

Consolidated Events Editor

Metrics 檢視 Consolidated Events Editor 功能會使用指定的分組模式,自動將多個畫面中的事件摺疊在一起。編輯規則運算式以符合您的命名配置。 例如,您可能使用循序編號模式來命名事件 (frame1 中的 update1、frame2 中的 update2,以及 frame3 中的 update3)。您可以使用 regex 輕鬆將它們分組。使用它們將這組事件作為一個群組進行分析。這有助於識別在查看單一事件時可能看不到的極端值或其他模式。 圖 36. Metrics 檢視 Consolidated Events Editor。 Metrics 檢視 Consolidated Events Editor 圖 36 顯示 Consolidated Events Editor 的範例。

取樣函式火焰圖

取樣函式火焰圖是 PIX 中的新功能。這些圖表會使用直接出現在事件名稱下方的圖表,顯示事件期間呼叫了哪些函式。圖表是使用樣本產生的,因此取樣率越高,精確度就越高。 火焰圖對於將所呼叫函式的整個樹狀結構及其在時間軸內的大致持續時間視覺化非常有價值。 圖 37. 取樣函式火焰圖。 取樣函式火焰圖 圖 37 顯示火焰圖的範例。

PIX 版面配置

PIX 版面配置可以自訂。圖 38 顯示 PIX 中檢視的版面配置,並醒目提示可自訂的項目。 檢視由一個位置標頭和一或多個位置組成。您可以將檢視移至任何位置標頭,並選取它們以顯示在相關聯的位置中。如果特定畫面區域中沒有其他位置分組在一起,則位置可以在沒有位置標頭的情況下顯示。 圖 38. PIX 版面配置。 PIX 版面配置

可摺疊的位置

圖 39 顯示如何選取位置標頭中的減號按鈕來摺疊檢視。再次選取此按鈕即可還原位置。 圖 39. 可摺疊的位置 可摺疊的位置

啟用版面配置設計模式

圖 40 顯示用於重新排列檢視的圖示。選取已連線開發套件名稱和 IP 位址旁邊的 Design Mode 圖示即可開始此流程。 圖 40. 啟用版面配置設計模式。 啟用版面配置設計模式

設計模式

圖 41 顯示啟用設計模式時出現的對話方塊。請注意以綠色醒目提示的 New Window 和 New Tab 按鈕。如需版面配置設計模式的詳細資訊,請參閱設定 PIX UI。 已新增儲存您最愛版面配置的選項。新的 GDK 版本偶爾會將 PIX 重設為預設版面配置,以顯示相關變更。如果您安裝了新的 GDK,並偏好自訂檢視而非預設檢視,您可以從功能表中選取,輕鬆還原為已儲存的版面配置。 圖 41. 設計模式。 設計模式

替代版面配置對話方塊

圖 42 顯示用於還原替代版面配置的對話方塊。 圖 42. 替代版面配置對話方塊。 替代版面配置對話方塊

後續步驟

如果您想要檢閱與此概觀相關的簡報資料,請從 XBOX Developer Download Secure Data Storage (SDS) 下載下列檔案。
  • 投影片:Dev Days 2024 US Graphics Track Presentations (en-US) (May 2024) (DevDays2024USGraphicsTrackPresentations-en-US-May2024.ZIP) 中的 G03.EN_Whats_New_In_PIX.XboxDevDays2024.pptx
  • 影片簡報:DevDays2024-enGraphicsTrackVideos-DD.EN.2024.05.ZIP 中的 G03US.EN_WhatsNewInPIX.XDD2024.mp4

下載 Microsoft PowerPoint 簡報和影片

  1. 前往 Game Development Kit (GDK) 下載。
  2. 在 Select file type 下,選取 Conference Materials,然後選取 Confirm。
  3. 在 Select build/version number 下,選擇下列圖形簡報。
    • Dev Days 2024 US Graphics Track Presentations (en-US) (May 2024)
    • Dev Days 2024 (en) Graphics Track Videos (DD.EN.2024.05)
  4. 選取 Download Now,然後等候 .zip 檔案下載完成。
  5. 前往您的本機 Downloads 資料夾,然後從壓縮資料夾中解壓縮 (擷取) 檔案。

另請參閱

PIX 新 PIX Checklist 導覽 PIX for XBOX 的改進
Last modified on October 6, 2026