VS2017下用Graphics Debugger调试UnityShader
2017-11-01 02:47
232 查看
第一步,为shader加特殊代码
为需要断点的Shader加上 “#pragma enable_d3d11_debug_symbols”,如下所示:Shader "Unlit/NewUnlitShader" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #pragma multi_compile_fog #pragma enable_d3d11_debug_symbols //需要断点调试的Shader加上的 #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; UNITY_FOG_COORDS(1) float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target { // sample the texture fixed4 col = tex2D(_MainTex, i.uv); // apply fog UNITY_APPLY_FOG(i.fogCoord, col); return col; } ENDCG } } }
第二步,打包程序到PC平台,变为 exe 执行文件
第三步,打开VS2017,新建一个C++空项目,然后点击: 文件->打开->项目/解决方案,直接打开刚才打包出来的 test.exe 文件,得到的如下所示:
第四步,点击VS2017的开始调试图形功能,也就是: 调试->图形->启动图形调试(Alt+F5),得到下面的
然后点击开始的按钮,等进入游戏后,进行截屏,可以直接用截屏按钮或者点击捕获帧数,得到如下所示:
双击 10:35:47 的那帧画面,进入 debug 界面,如下所示:
在“呈现目标”面板选中一个像素,然后点击“”像素历史记录“”的面板的小绿色三角形按钮,可以进入VertexShader或者PixelShader 来断点查看具体的参数,如下所示:
最后还需要强调的问题
(1)注意打包的 exe 执行程序是在PC平台上的,因为PC平台上运行的是Directx11,而VS的Graphics Debugger就是为 Directx 的调试专用的。(2)注意在需要断点调试的Shader加上 “‘#pragma enable_d3d11_debug_symbols”,不加的话,会在查看VertexShader或者PixelShader的具体参数时跳出下面这个异常:
这跟我的另外一篇博客其实是一个样(VS2015环境下)用Visual Studio Graphics Debugger调试Shader。
以后可能会很少写博客了,因为太浪费时间了。
相关文章推荐
- (VS2015环境下)用Visual Studio Graphics Debugger调试Shader
- Unity3D Shader之路 VS2015下Graphics Debugger调试Shader
- Unity3D Shader之路 VS2015下Graphics Debugger调试Shader
- VS Code - Debugger for Chrome调试JavaScript的两种方式
- 调试Javascript代码(浏览器F12及VS中debugger关键字)
- 自定义可视化调试工具(Microsoft.VisualStudio.DebuggerVisualizers)vs.net开发工具
- Script Debugger + VS.Net调试javascript
- 调试Javascript代码(浏览器F12及VS中debugger关键字)
- vs2017用F5调试时js,css文件不能加载导致的问题解决
- 【VS2017新特性】在VS中调试javascript脚本
- 利用vs 2017 编写 C++程序常用调试工具快捷键
- .NET应用程序调试总结系列视频(二):VS Debugger Basics
- 【VS2017新特性】在VS中调试javascript脚本
- VS远程调试之Remote Debugger
- Windows VS2017 下 使用 x265 第二回 x265编译调试续
- VS.Net 2003调试您是服务器上“Debugger Users”组的成员的解决
- vs2017 15.5.x dll调试不成功问题
- 调试Javascript代码(浏览器F12及VS中debugger关键字)
- VS2017 Asp.net MVC SqliteEF6 调试错误列表
- Windows VS2017 下 使用 x265 第一回 x265编译调试的初体验