Cg 程式設計/Unity/使用 Visual Studio 除錯著色器
外觀
本教程討論如何使用 Microsoft Visual Studio 除錯 Unity 著色器。
- 更新您的軟體
- 下載並安裝 DirectX SDK (2010 年 6 月)。
- 安裝最新的 Windows 更新。
- 安裝 Visual Studio 2015 (或更高版本) 並更新到最新版本。這很重要,因為更新通常會修復與圖形除錯相關的錯誤。
- 安裝適用於 VS2015 的 Visual C++。請注意,在 Visual Studio 2015 中,Visual C++ 預設情況下未安裝。安裝時,請務必選擇自定義安裝,然後選擇所需的 C++ 元件。或者,如果 Visual Studio 已安裝,請選擇檔案 | 新建 | 專案 | C++,系統會提示您安裝必要的元件,或者再次執行安裝程式。更多資訊
http://blogs.msdn.com/b/vcblog/arch...isual-studio-2015-affecting-c-developers.aspx
- 在 Unity 中建立一個新專案。
- 從主選單中選擇建立 > 3D 物件 > 立方體。
- 在專案視窗中,右鍵單擊並選擇建立->著色器->標準表面著色器。將名稱保留為 NewSurfaceShader。
- 開啟 NewSurfaceShader.shader 檔案,並在 "CGPROGRAM" 之後新增此行
#pragma enable_d3d11_debug_symbols
- 在專案檢視中,選擇建立 > 材質。
- 選擇新材質,然後轉到檢查器->著色器->選擇自定義/NewSurfaceShader。
- 將新材質拖放到立方體上。
- 轉到檔案->生成設定->選擇獨立 PC,然後單擊切換平臺(如果尚未切換)。
- 從主選單中選擇編輯 > 專案設定 > 質量。在檢查器檢視中,停用所有質量級別的抗鋸齒。
- 儲存專案。
- 從主選單中選擇檔案 > 生成並執行... 選中 "開發版本" 和 "指令碼除錯" 複選框。
- 從主選單中選擇編輯 > 專案設定 > 播放器。在檢查器檢視中,選擇解析度和演示 > 獨立播放器選項 > 顯示解析度對話方塊 > 停用。
- 選擇播放器設定->檢查器->其他設定。取消選中 "Windows 自動圖形 API" 並檢查 Direct3D11 是否位於列表頂部。還要檢查 Unity 編輯器標題欄是否顯示 "<DX11>"。
- 從主選單中選擇檔案 > 生成並執行,將檔案命名為 test.exe,然後單擊儲存。記下可執行檔案的路徑。
- 在 Visual Studio 2015 中建立一個新專案。
檔案->新建->專案->已安裝->模板->其他語言->Visual C++->空專案。注意:如果 Visual C++ 不可用,請按照上面 "更新軟體" 部分中的說明操作。
- 為專案選擇一個名稱和位置,然後單擊確定。
- 轉到檢視 > 解決方案資源管理器。選擇專案(專案,而不是解決方案)。
- 轉到專案 > 屬性 > 配置屬性 > 除錯。
注意:如果配置屬性中沒有除錯,則您在解決方案資源管理器中選擇瞭解決方案而不是專案,或者您建立的是 C# 專案而不是 C++ 專案。
- 在命令欄位中,將 "$(TargetPath)" 替換為之前構建的 Windows 可執行檔案的路徑。
- 在命令引數欄位中,新增 "-force-d3d11"。
- 單擊確定。
- 選擇生成 > 生成解決方案。
- 轉到除錯 > 圖形 > 啟動診斷。如果彈出一個視窗,請安裝圖形工具。
- 獨立版本應該啟動,並且左上角應該顯示此訊息:"已捕獲的幀:0。使用列印螢幕鍵捕獲幀"。
- 按列印螢幕鍵。
- 使用 Alt-Tab 從獨立版本切換到 Visual Studio。注意:要關閉 Unity 測試應用程式,請選擇 ALT-F4。
- 您應該在 Visual Studio 中看到一個幀捕獲。雙擊您捕獲的幀,將開啟一個新的 Visual Studio 視窗。
- 在新 Visual Studio 視窗中,將十字準星放在感興趣的畫素上,然後左鍵單擊。您可以使用滑鼠滾輪放大和縮小幀。
- 轉到圖形事件列表視窗,選擇 "obj:x DrawIndexed" 的第一次(頂部)出現。
注意:如果您稍後收到 "無可用原始碼" 警告,請嘗試使用相機。渲染樹中的一個條目。
- 轉到圖形畫素歷史記錄視窗 > obj:x DrawIndexed > 三角形 > 頂點著色器 > 單擊它旁邊的綠色箭頭。
- 現在您可以逐句執行您的著色器。
- 如果它顯示訊息 "原始碼不可用",那麼要麼
- 您沒有在著色器中新增此行:
#pragma enable_d3d11_debug_symbols - 您沒有安裝最新的 Visual Studio 更新。
- 您在圖形事件列表視窗中選擇了錯誤的專案。如果 DrawIndexed 專案不起作用,請嘗試使用相機。渲染樹中的一個條目。
- 由於 Visual Studio 中的錯誤,許多變數顯示 NaN 值。只有在程式碼行剛剛執行時,變數才會顯示正確的值。如果您想在著色器的其他地方檢視變數的值,您必須逐步執行它們並手動記下它們。
- 如果在按除錯 > 圖形 > 啟動診斷後遊戲沒有正確顯示,則強制使用整合顯示卡而不是高效能顯示卡。
- 如果 Visual C++ 不可用,請按照上面 "更新軟體" 部分中的說明操作
- 您沒有在著色器中新增此行:
除非另有說明,否則此頁面上的所有示例原始碼均歸屬公共領域。
