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++ 不可用,请按照上面 "更新软件" 部分中的说明操作
- 您没有在着色器中添加此行:
除非另有说明,否则此页面上的所有示例源代码均归属公共领域。