最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Unity-使用 Visual Studio 來調(diào)試 DirectX 11/12 著色器

2021-04-17 13:50 作者:unity_某某師_高錦錦  | 我要投稿

使用 Microsoft Visual Studio(2012 版或更高版本)中的圖形調(diào)試器從 Unity Editor、Windows 獨(dú)立平臺(tái)或通用 Windows 平臺(tái)等平臺(tái)捕獲應(yīng)用程序的各個(gè)幀以進(jìn)行調(diào)試。

要安裝 Visual Studio 中的圖形調(diào)試器,請(qǐng)執(zhí)行以下操作:

1.選擇?Tools?>?Get Tools and Features

2.在?Individual components?選項(xiàng)卡上,滾動(dòng)到?Games and Graphics__,并選中?Graphics debugger and GPU profiler for DirectX__ 的復(fù)選框

3.單擊?Modify

4.等待安裝,然后按照說明重新啟動(dòng)計(jì)算機(jī)

使用 Visual Studio 來捕獲 DirectX 著色器

應(yīng)使用已構(gòu)建的 Unity 應(yīng)用程序版本來捕獲幀,而不是使用 Unity Editor 中運(yùn)行的版本。這是因?yàn)?Editor 可能同時(shí)打開多個(gè)子窗口,而圖形調(diào)試器可能會(huì)從非預(yù)期窗口捕獲幀。

從 Unity Editor 或 Windows 獨(dú)立平臺(tái)中捕獲幀的步驟

要在這兩個(gè)平臺(tái)中的任何一個(gè)平臺(tái)上使用圖形調(diào)試器,您需要?jiǎng)?chuàng)建一個(gè)虛擬的 Visual Studio 項(xiàng)目:

1.啟動(dòng) Visual Studio 2017

2.選擇?File?>?New?>?Project?>?Visual C++?>?Empty Project

3.選擇?Project?>?Properties?>?Configuration Properties?>?Debugging

4.在?Command?字段中,將 $(TargetPath) 替換為 Unity Editor 或 Windows 獨(dú)立平臺(tái)的路徑(例如?C:\MyApp\MyApp.exe)

5.如果要強(qiáng)制 Windows 獨(dú)立平臺(tái)或 Unity Editor 在 DirectX 11 下運(yùn)行,請(qǐng)選擇?Command Arguments?并輸入?-force-d3d11

6.選擇?Debug?>?Graphics?>?Start Graphics?Debugging

7.如果全部配置都正確無誤,Unity 會(huì)在應(yīng)用程序的左上角顯示以下文本:

8.要捕獲幀,請(qǐng)使用鍵盤上的 Print Screen 鍵,或單擊 Visual Studio 界面左側(cè)的?Capture Frame?框

使用 Visual Studio 來調(diào)試 DirectX 著色器

要調(diào)試著色器,必須使用調(diào)試符號(hào)進(jìn)行編譯。為此,需要插入?#pragma enable_d3d11_debug_symbols。

著色器應(yīng)如下所示:

Shader "Custom/NewShader" { ? 
 ?Properties { ? ? ? 
 ? ?_MainTex ("Base (RGB)", 2D) = "white" {} ? 
 ?} ? ?
 ?SubShader { ? 
 ? ?Tags { "RenderType"="Opaque" } ?
 ? ?LOD 200 ? ? ? ?
 ? ?CGPROGRAM ? ? 
 ? ?#pragma surface surf Lambert ? ?
 ? ?#pragma enable_d3d11_debug_symbols 
 ? ?sampler2D _MainTex; ? ? ?
 ? ?struct Input { ? ? 
 ? ? ?float2 uv_MainTex; ? ?
 ? ?}; ? ? ? 
 ? ?void surf (Input IN, inout SurfaceOutput o) 
 ? ?{ ? ? ? ? ?
 ? ? ?half4 c = tex2D (_MainTex, IN.uv_MainTex); ? 
 ? ? ?o.Albedo = c.rgb; ? ? 
 ? ? ?o.Alpha = c.a; ? ? ? 
 ? ?} ? ? 
 ? ?ENDCG ?
 ?} ? ?
 ?FallBack "Diffuse" 
}

示例工作流程

讓我們創(chuàng)建一個(gè)基本示例來展示整個(gè)過程:

1.創(chuàng)建新的 Unity 項(xiàng)目(請(qǐng)參閱準(zhǔn)備開始文檔)。

2.在頂部菜單中,選擇?Assets?>?Create?>?Shader?>?Standard Surface Shader。此時(shí)將在?Project?文件夾中創(chuàng)建一個(gè)新的著色器文件。

3.選擇著色器文件,然后在 Inspector 窗口中單擊?Open。此時(shí)將在腳本編輯器中打開著色器文件。將?#pragma enable_d3d11_debug_symbols?插入到著色器代碼中的其他?#pragma?行下面。

4.創(chuàng)建新的材質(zhì)(菜單:__Assets__ >?Create?> __Material__)。

5.在 Material Inspector 窗口中,選擇?Shader?下拉選單,選擇 __Custom__,然后選擇剛創(chuàng)建的著色器。

6.創(chuàng)建 3D 立方體游戲?qū)ο螅ú藛危篲_GameObject__ >?3D Object?> __Cube__)。

7.將新材質(zhì)分配給新的游戲?qū)ο?。要?zhí)行此操作,請(qǐng)將材質(zhì)從?Project?窗口拖到 3D 立方體上。

8.構(gòu)建適用于 Windows 獨(dú)立平臺(tái)的項(xiàng)目。請(qǐng)注意,實(shí)際項(xiàng)目可能非常大,以至于每次要調(diào)試著色器時(shí)構(gòu)建它們都會(huì)很低效;在這種情況下,請(qǐng)?jiān)?Editor 中進(jìn)行調(diào)試,但要確保您的捕獲已分析正確的窗口。

9.按照前面__使用 Visual Studio 來捕獲 DirectX 著色器__部分描述的步驟捕獲幀。

10.捕獲的幀出現(xiàn)在 Visual Studio 中。右鍵單擊該幀,然后選擇?Pixel。


![捕獲的幀,__History__,選擇已分配自定義著色器的對(duì)象的__像素__。](../uploads/Main/ShaderDebuggingCapturedFrame.png)

11.單擊 Vertex Shader 旁邊的 Play 按鈕(以上截屏中圈出)。此時(shí)將打開頂點(diǎn)著色器文件:

在使用 DirectX 12 時(shí)存在一個(gè)已知問題導(dǎo)致 Play 按鈕不可用,并顯示以下錯(cuò)誤:此繪制調(diào)用使用干擾像素歷史記錄計(jì)算的系統(tǒng)值語義 (This draw call uses system-value semantics that interfere with pixel history computation)。如果遇到此問題,請(qǐng)使用?PIX?來調(diào)試著色器。

通用 Windows 平臺(tái)

在進(jìn)行通用 Windows 平臺(tái)的調(diào)試時(shí),不需要?jiǎng)?chuàng)建虛擬 Visual Studio 項(xiàng)目,因?yàn)?Unity 會(huì)創(chuàng)建該項(xiàng)目。

捕獲幀和開始進(jìn)行著色器調(diào)試的步驟與 Unity Editor 或 Windows 獨(dú)立平臺(tái)的步驟相同。

備用著色器調(diào)試技術(shù)

還可以使用?RenderDoc?來調(diào)試著色器。在 RenderDoc 中,從 Editor 中捕獲__場(chǎng)景__,然后使用獨(dú)立平臺(tái)工具進(jìn)行調(diào)試。

PIX?的工作方式與 Visual Studio 的圖形調(diào)試器相似。請(qǐng)使用 PIX 而不是圖形調(diào)試器來調(diào)試 DirectX 12 項(xiàng)目。


Unity-使用 Visual Studio 來調(diào)試 DirectX 11/12 著色器的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
晋中市| 洱源县| 格尔木市| 安宁市| 纳雍县| 江津市| 扶绥县| 四会市| 武城县| 通化县| 天祝| 藁城市| 万载县| 淳安县| 定结县| 芦山县| 青州市| 大宁县| 唐河县| 武邑县| 宜兴市| 伊吾县| 将乐县| 页游| 灵丘县| 太谷县| 湾仔区| 莱阳市| 宽甸| 凯里市| 陇川县| 延长县| 南陵县| 雷波县| 大港区| 喜德县| 环江| 丹棱县| 精河县| 沧源| 林西县|