從著色器檔案或 PDB 建立新專案
從 PIX 開啟著色器原始程式檔 (.hlsl) 或偵錯資訊檔案 (.pdb),即可建立 Shader Explorer 專案。 開啟著色器原始程式檔會將著色器原始碼匯入專案,但您必須透過 Source 檢視中的 Compiler Options 索引標籤指定編譯引數。 開啟偵錯資訊檔案會匯入著色器原始碼以及原始編譯的編譯引數。這些內容可以透過 Source 檢視中的 Compiler Options 索引標籤進行編輯。 您可以選取 Home > Save 來儲存產生的專案。(鍵盤快速鍵為 Ctrl+S。)從 GPU 擷取建立新專案
從 GPU 擷取的 Pipeline 檢視匯出著色器,即可建立 Shader Explorer 專案。瀏覽至您感興趣的著色器,然後按一下 Pipeline 檢視 Commands 面板中 Shader Explorer 區段底下的 Export to Project 按鈕。匯出需要載入著色器偵錯資訊 (PDB),以提供著色器原始碼。 您可以選取 Home > Save 來儲存產生的專案。(鍵盤快速鍵為 Ctrl+S。)產生效能資料
開啟 Shader Explorer 專案後,下一步是產生效能資料。這需要編譯著色器 (PIX 會自動新增一些額外的旗標) 以產生效能資料。按一下 Source 檢視中的 Compile 按鈕。


暫存器壓力
暫存器壓力是主要的佔用率 (執行中的著色器 Wave 數量) 限制因素之一,因此會直接影響效能。如需執行階段佔用率與暫存器壓力,請參閱 GPU 擷取中的 Wave Occupancy 與 VGPR Occupancy 時間軸。


暫存器存留期
暫存器存留期表示著色器中使用暫存器的部分。當暫存器正在使用中,而指令需要額外的暫存器時,就必須配置更多暫存器,因而增加暫存器壓力,並可能降低佔用率。 Shader Explorer 暫存器存留期視覺效果會顯示每個暫存器在整個著色器中的存留期。將滑鼠游標停留在存留期長條上,即可查看暫存器在指定區塊中的使用方式。存留期長條會依暫存器類型 (SGPR 或 VGPR) 著色,未完全跨越區塊的暫存器則使用不同的色彩。使用公式 (!LiveIn OR !Live Out) AND IsRead 判斷未完全跨越區塊的暫存器,是降低暫存器壓力時可能的目標暫存器。

指令相依性
按一下指令運算元,即可醒目提示該運算元所使用之暫存器的所有使用位置。按一下指令名稱,即可醒目提示該指令所有運算元所使用之暫存器的所有使用位置。
控制流程
區塊 (也稱為基本區塊或控制流程區塊) 用於將控制流程分割成可獨立最佳化的較小區段。 Shader Explorer 反組譯會以區塊區段的形式顯示,每個區段都可以個別摺疊或展開。按一下 [-] 或 [+] 連結可摺疊或展開區塊,或以滑鼠右鍵按一下反組譯以取得摺疊或展開所有區塊的選項。 每個區塊都會連結至其後繼區塊,後繼區塊顯示在區塊名稱之後。將滑鼠游標停留在後繼區塊上可查看控制流程類型,按一下後繼區塊則可瀏覽至該區塊。
指令色彩
根據預設,著色器指令會依其類別 (VALU、SALU 等) 著色。使用 Block Disassembly 檢視 Options 面板中的 Instruction Colors 切換開關設定色彩模式。 Rate 色彩選項可讓您快速識別以不同於預設速率 (XBOX Series X|S 為每個週期 1 個指令) 發出的指令。其中包括封裝數學、F64 VALU 與超越函數 VALU。
超越函數 VALU (XBOX Series X|S)
VALU 單元有兩條內部數學管線:一般與超越函數。一般管線在 1 個時脈內發出指令,超越函數管線則在 4 個時脈內發出 32 位元指令。64 位元指令會使用兩條管線,並在 16 個時脈內發出。硬體每個週期可以向任一管線發出一個 VALU 指令,但不能同時向兩者發出。由於超越函數指令需要多個週期才能發出,一般指令與超越函數指令的執行可能會重疊。在指令與原始碼之間瀏覽
啟用內嵌原始碼時 (透過 Block Disassembly 檢視中的 Options panel),反組譯中會插入顯示對應原始碼位置的註解。


著色器統計資料
Block Disassembly 檢視的 Details 面板提供已編譯著色器的統計資料。 Shader Details:著色器的高階統計資料。 Block Details:所選區塊的暫存器使用量統計資料。按一下 Block Disassembly 檢視中的指令,即可選取包含該指令的區塊。 Compiler Stats:來自 DXCompiler 的 DxcXboxShaderStatisticsV2 完整輸出。
變數與暫存器
Block Disassembly 檢視中的 Variables 面板會顯示所選指令的變數與暫存器對應。按一下 Block Disassembly 檢視中的指令即可選取它。

資料查詢
Block Disassembly 檢視中的 Query 面板可讓您針對專案中包含的資料撰寫查詢。提供範例查詢供參考。自訂查詢可以儲存,並在多個 Shader Explorer 專案中使用。
修訂版本
Source 檢視中的 Revisions 面板可讓您反覆修改著色器的多個版本。按一下 Create New 按鈕,即可建立目前所選修訂版本的複本。

執行階段指令成本
藉由納入執行階段指令成本資料,可以擴充 Shader Explorer 的功能。此資料是由 GPU 擷取中的 Shader Trace 所產生。Shader Trace
在 GPU 擷取中,找出您感興趣的繪製或分派,並在 Events 檢視中選取它。開啟 Shader Trace 檢視,確定分析正在執行,然後按一下 Generate Trace 按鈕。


指令層級效能
有可用的執行階段指令成本資料時,指令成本會顯示在每個指令旁。


原始碼層級效能
有可用的執行階段指令成本資料時,指令成本會彙總至原始程式碼。將滑鼠游標停留在原始碼行的成本上,即可檢視促成成本之指令的詳細分析。


指令成本資料可用但不相符
若要使用執行階段指令成本資料,成本資料來源之著色器的雜湊,必須與為產生 Shader Explorer 資料而編譯之著色器的雜湊相符。如果雜湊不相符,您會看到下列訊息。
指令成本資料可用但原始碼已修改
若要使用原始碼層級的執行階段指令成本資料,原始程式檔必須與原始編譯相符。修改原始程式檔後,原始碼層級的效能視覺效果會隱藏,且您會看到下列訊息。
將著色器匯入回 GPU 擷取
Shader Explorer 專案修訂版本可以從 GPU 擷取中的 Pipeline 檢視匯入 GPU 擷取。瀏覽至您感興趣的著色器,然後按一下 Pipeline 檢視 Commands 面板中 Shader Explorer 區段底下的 Import from Project 按鈕。


操作說明
找出最大暫存器壓力
使用 Block Disassembly 檢視 Options 面板中的 Go to Max 按鈕,前往最大壓力的單一位置。
找出降低速率的指令
使用 Block Disassembly 檢視 Options 面板中的 Instruction Colors 切換開關設定色彩模式。如需詳細資訊,請參閱指令色彩。找出可作為降低壓力目標的暫存器
使用暫存器存留期視覺效果了解暫存器配置與存留期。使用公式 (!LiveIn OR !Live Out) AND IsRead 判斷未完全跨越區塊的暫存器,是降低暫存器壓力時可能的目標暫存器。這些暫存器會以不同的色彩顯示,以便快速識別。
隱藏視覺效果以節省螢幕空間
使用 Block Disassembly 檢視 Options 面板中的 Visualization Placement 切換開關,移動或隱藏視覺效果。
