修改DirectX 9/10/ 11 帧的着色器代码
您可以创建或修改 Graphics Frame Analyzer 中的着色器,看看该变化是否导致减少渲染时间并具有整个场景可接受的质量水平。
使用以下方法之一来修改 / 取代的部分代码 :
要计算的着色器性能 , 单击
Profile
按钮。Graphics Frame Analyzer 计算分析着色器总的执行时间 , 每个着色器指令的单个时间 , 以及在测量期间发生的时钟周期数。注
配置仅在英特尔微架构 , 代号 Ivy Bridge 或更高版本上受支持。对于
HLSL
, 配置信息是只在您对 为适用版本的 Microsoft DirectX* 以 D3D 调试标志编译分析的着色器时才可用。否则,配置信息仅对IL Assembly
可用,而面向 HLSL
的Profile
按钮被禁用。指定一个新的源
要以先前存在的着色器取代该着色器,执行以下操作 :
- 转到着色器选项卡。
- 在着色器列中选择顶点 / 像素 / 几何体 /hull/Domain/ 计算着色器代码。
- 从下拉表中选择IL Assembly或HLSL从下拉列表以分别编辑装配体或代码。注
- HLSL选项仅在您在使用 Microsoft DirectX*API 编译以运行时编译应用程序着色器的选项才可用。如果您使用在构建时编译的应用程序,则仅有IL Assembly对这些着色器可用。
- 您不能更改 Microsoft DirectX*10 或 Microsoft DirectX*11 帧的装配体着色器代码。
- 单击Replace File....
- 在Open窗口中 , 选择要从中装载新的着色器的文件。
- 单击Settings ...以在Shader Settings对话框中指定编译器选项 :
- Include Path字段中指定的路径指向着色器的标题的编译器使用的文件。如果已编辑的着色器已从文件中加载 , 默认情况下是文件的路径 , 否则没有默认设置。
- 对 HLSL, 在Entry Point字段中指定哪些函数编译器必须用作着色器的主体。此选项对应于pfunctionname参数在D3DXCompileShaderMicrosoft DirectX*9 、在D3DX10CompilefrommemoryMicrosoft DirectX*10 、或在D3DX11CompilefrommemoryMicrosoft DirectX*11 。如果在着色器文件中存在多个入口点 , 在编辑框中提供 “主”着色器数的名称功能。
- 在Defines字段中 , 指定宏 , 相对应 :
- pdefines参数在D3DXCompile着色器Microsoft DirectX*9
- pdefines参数中D3DX10CompilerfrommemoryMicrosoft DirectX*10
- pdefines参数中D3DX11CompilerfrommemoryMicrosoft DirectX*11。
- Defines 字段的格式是 SYMBOL号 = 值 ; 由分号分隔多个条目。
- 单击确定。
- 在Shaders选项卡中 , 单击Apply, 随时将这些设置应用于所需的着色器 , 无需 每次打开Shader Settings对话框。
- 拒绝在编辑文件所作的更改时 , 单击Undo Edits。 要将着色器恢复到原始状态 , 请单击Revert。
编辑现有的着色器代码
您一次只能编辑一个着色器。
注
如果您应用
Simple Pixel Shader
或 Disable Erg
实验一个特定的尔格或一组尔格, Graphics Frame Analyzer (DirectX9,10,11) 禁用对被覆盖的着色器的编辑,并在 Shaders
tab 选项卡中显示相应的警告。
要编辑文本缓冲区中的着色器 , 请执行以下操作 :
- 在Visualization或 中选择。
- 转到着色器选项卡。
- 在Shader列中选择顶点 / 像素 / 几何体 /hull/Domain/ 计算着色器代码。
- 从下拉表中选择IL Assembly或HLSL从下拉列表以分别编辑装配体或代码。注您不能修改 Microsoft DirectX*10 或 Microsoft DirectX*11 帧部件着色器代码 。
- 根据需要编辑代码中的“代码”字段。要清除尚未有用的编辑,单击Undo Edits。
- 一旦您完成更改 ,单击“Settings...以在Shader Settings窗口中指定编译器选项 。
- 单击Apply以应用新的着色器到选定的尔格。
- 拒绝在编辑文件所作的更改时 , 单击Undo Edits。 要将着色器恢复到原始状态 , 请单击Revert。
所有编译错误出现在
Errors View
中,而 Shader Replacer
窗口则保持打开。