跳轉到內容

Cg 程式設計/Unity/使用 Visual Studio 除錯著色器

來自華夏公益教科書,開放的書籍,為開放的世界
TODO
待辦事項

編輯注
我還沒有自己測試過,我不知道它是否適用於 Unity 5.x。--Martin Kraus (討論貢獻) 17:50, 2015 年 8 月 30 日 (UTC)

本教程討論如何使用 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++ 不可用,請按照上面 "更新軟體" 部分中的說明操作

進一步閱讀

[編輯 | 編輯原始碼]

< Cg 程式設計/Unity

除非另有說明,否則此頁面上的所有示例原始碼均歸屬公共領域。
華夏公益教科書