Compile HLSL with fxc
Environments:
- Windows 10
- DirectX 12
HLSL的編譯主要可以通過
- fxc.exe
- Visual Studio
- 動態編譯
這篇文章介紹如何用fxc.exe編譯HLSL。
fxc.exe的環境變數
在Windows 8開始,DirectX SDK已經整合到Windows SDk中。
在Windows 10中,fxc.exe可以在以下路徑找到。
1 | C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86 |
將路徑加入到環境變數中的Path後,在cmd中就可以使用。
開始編譯
在cmd中,輸入
1 | // Debug Mode |
| 參數 | 作用 |
|---|---|
| /Od | 禁用優化 |
| /Zi | 開啟調試信息 |
| /T | Shader Model |
| /E | Shader的入口點(Entry Point) |
| /Fo | 編譯後的文件名,一般以.cso作為後綴 |
| /Fc | Shader的匯編文檔 |
匯編文檔的輸出可以省略。其它參數可以在官方文檔找到。
DX中的讀取
最後在DX程序中,讀取編譯好的.cso文檔,並轉換成ID3DBlob便可。
主なHLSLのコンパイルの方法は、以下のようにする。
- fxc.exe
- Visual Studioに提供されたコンパイル
- dynamic compile (runtime)
ここでは、fxc.exeでコンパイルの方法を紹介する。
fxc.exeの環境変数の設定
Windows 8から、DirectX SDKが既にWindows SDKに含まれていた。
Windows 10では、fxc.exeが以下のパスで見つけることができる。
1 | C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86 |
このパスを環境変数のPathに導入し、cmdで使用できるようになる。
コンパイルスタート
cmdで、以下のコードをインプットする。
1 | // Debug Mode |
| パラメータ | 作用 |
|---|---|
| /Od | 最適化無効 |
| /Zi | デバッグモード |
| /T | Shader Model |
| /E | ShaderのEntry Point |
| /Fo | コンパイルしたファイル名。拡張子は普通.csoにする |
| /Fc | Shaderのアセンブリ |
アセンブリのアウトプットは必要ではない。ほかのパラメータは公式サイトで調べてください。
DXでの読み込み
コンパイルした後、DXアプリケーションで.csoを読み込んで、ID3DBlobを作ることです。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.






