这些 D3DCOMPILE 常量是什么意思?
What does those D3DCOMPILE constants mean?
在 D3DCompiler 库中有这些标志称为 "D3DCompile Constants",但是 Microsoft 给我们的关于它们的描述非常简短,很难正确理解它们的作用。我希望有人能够至少解释这三个是什么意思:
D3DCOMPILE_PARTIAL_PRECISION, D3DCOMPILE_NO_PRESHADER, D3DCOMPILE_ALL_RESOURCES_BOUND
那个文档页面很差。它只是放入 Markdown 页面的 D3DCompiler.h
条评论的内容。我将考虑提交一些编辑以至少对它有所帮助。这些标志中的大多数都是旧 D3DX 常量的别名,如 Microsoft Docs 中所列,目前它们在其中有更好的记录。
更新: Microsoft Docs 页面已更新。
D3DCOMPILE_PARTIAL_PRECISION
标志相当于FXC的/Gpp
开关,是D3DXSHADER_PARTIALPRECISION
的别名。在某些情况下,它基本上将 float32
值视为 float16
并允许使用某些近似函数。
D3DCOMPILE_NO_PRESHADER
标志相当于FXC的/Op
开关,是D3DXSHADER_PARTIALPRECISION
的别名。此功能已弃用,仅适用于旧版 Direct3D 9 时代的“效果”(FX)。请参阅 this Microsoft Docs page 了解这是关于什么的。
D3DCOMPILE_RESOURCES_MAY_ALIAS
、D3DCOMPILE_ENABLE_UNBOUNDED_DESCRIPTOR_TABLES
和 D3DCOMPILE_ALL_RESOURCES_BOUND
标志是 HLSL 选项,用于在对 DirectX 12 着色器模型 5.1 执行优化时通知 HLSL 编译器一些假设。
DirectX 12 的注意事项、D3DCompile 和 FXC.EXE 是旧版,仅支持 Shader Model 5.1。对于 DirectX12,您应该通过 DXIL 编译器和 DXC.EXE command-line 工具使用 Shader Model 6。参见 GitHub。
在 D3DCompiler 库中有这些标志称为 "D3DCompile Constants",但是 Microsoft 给我们的关于它们的描述非常简短,很难正确理解它们的作用。我希望有人能够至少解释这三个是什么意思:
D3DCOMPILE_PARTIAL_PRECISION, D3DCOMPILE_NO_PRESHADER, D3DCOMPILE_ALL_RESOURCES_BOUND
那个文档页面很差。它只是放入 Markdown 页面的 D3DCompiler.h
条评论的内容。我将考虑提交一些编辑以至少对它有所帮助。这些标志中的大多数都是旧 D3DX 常量的别名,如 Microsoft Docs 中所列,目前它们在其中有更好的记录。
更新: Microsoft Docs 页面已更新。
D3DCOMPILE_PARTIAL_PRECISION
标志相当于FXC的/Gpp
开关,是D3DXSHADER_PARTIALPRECISION
的别名。在某些情况下,它基本上将 float32
值视为 float16
并允许使用某些近似函数。
D3DCOMPILE_NO_PRESHADER
标志相当于FXC的/Op
开关,是D3DXSHADER_PARTIALPRECISION
的别名。此功能已弃用,仅适用于旧版 Direct3D 9 时代的“效果”(FX)。请参阅 this Microsoft Docs page 了解这是关于什么的。
D3DCOMPILE_RESOURCES_MAY_ALIAS
、D3DCOMPILE_ENABLE_UNBOUNDED_DESCRIPTOR_TABLES
和 D3DCOMPILE_ALL_RESOURCES_BOUND
标志是 HLSL 选项,用于在对 DirectX 12 着色器模型 5.1 执行优化时通知 HLSL 编译器一些假设。
DirectX 12 的注意事项、D3DCompile 和 FXC.EXE 是旧版,仅支持 Shader Model 5.1。对于 DirectX12,您应该通过 DXIL 编译器和 DXC.EXE command-line 工具使用 Shader Model 6。参见 GitHub。