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.