FX ファイル形式とは?
.fx ファイルは、Microsoft DirectX パッケージに含まれる Direct3D ライブラリに関連付けられています。これらは HLSL (High-Level Shading Language) で記述されています。HLSL は、3D エフェクトのレンダリング方法を記述するために Microsoft が開発した、C言語に似た GPU プログラミング言語です。
.fx ファイルは通常、次の 3 つのセクションに分かれています。
- 変数セクション - グローバル宣言:定数バッファ (
cbuffer)、テクスチャ、サンプラステート、およびシェーダーの入力/出力構造体 - 関数セクション - 頂点変換、ライティング計算、テクスチャサンプリングなどのシェーディングロジックを実装する HLSL 関数
- テクニックセクション - 関数の使用方法を定義し、頂点シェーダーとピクセルシェーダーをレンダリングパイプラインの状態にバインドする、名前付きの
techniqueおよびpassブロックにグループ化します
.fx ファイルには、特定の 3D エフェクトがどのように見えるべきかに関する情報(テクスチャ、シェーディング、ライティング設定、レンダリング状態の構成)が含まれています。3D モデルは保存されません。ジオメトリは .x (DirectX メッシュ形式) などの別のファイルに保持されます。
2002 年に D3DX ユーティリティライブラリの一部として DirectX 9.0 で導入されましたが、エフェクトフレームワークはその後非推奨となりました。現代の DirectX 11/12 ワークフローでは、fxc.exe または dxc を使用して HLSL を個別にバイナリバイトコード (.cso) にコンパイルします。しかし、.fx ファイルはレガシーなゲームアセット、ゲームのモッディングコミュニティ、および Autodesk 3ds Max の DirectX シェーダーマテリアルワークフローで依然として広く使用されています。DirectX SDK にはエフェクトを検査するためのビューアツールが含まれていましたが、現在は Visual Studio の HLSL ツールが推奨されます。
セキュリティと安全性
リスク: LOW.fx ファイルはプレーンテキストであり、OS によって実行されることはありません。そのため、単独で実行されたりマルウェアを運んだりすることはありません。ただし、信頼できない .fx をゲームエンジンや 3D ツールに読み込むと、GPU ドライバがそれをコンパイルします。病的に構成されたシェーダーは(理論上)、脆弱な古いドライバでドライバのクラッシュやハングを引き起こす可能性があります。実際には、一般的な使用においてリスクは無視できるほど小さいです。
形式の詳細
概要- FastLynx オンラインガイドファイル - FastLynx (1990年代のファイル転送アプリケーション) の廃止されたヘルプ/ガイドファイル。シェーダーとは無関係です。
- ReactOS シェル拡張リソース - ReactOS オペレーティングシステムで使用される内部リソースファイル。エンドユーザー向けではありません。
- Cal3D モーフアニメーションファイル - オープンソースゲームエンジン用の Cal3D 3D キャラクターアニメーションライブラリで使用されるモーフターゲットアニメーションデータ。
FX ファイルを開くプログラム
技術的詳細
詳細仕様| エンコーディング | テキスト、ASCII または UTF-8 |
| コンテナ | プレーンテキスト |
| 一般的なサイズ | 1 KB - 500 KB (複雑なマルチテクニックエフェクトライブラリはそれ以上になる場合があります) |
| 構造 | グローバル宣言 (cbuffers, textures, samplers)、次に HLSL 関数定義、最後に頂点およびピクセルシェーダーをバインドするテクニック/パスブロック |
| シェーダーモデルのサポート | SM1.1-SM5.1 (DirectX 9 から DirectX 12 まで)。パスの VertexShaderVersion/PixelShaderVersion または HLSLcc ターゲット pragma を介して宣言 |
| 関連 OS | Windows (Direct3D は Windows 専用) |
| コンパイル | fxc.exe (レガシー) を使用して DXBC バイトコードにコンパイル、または dxc (現代の DirectX 12 ワークフロー) を使用して DXIL にコンパイル |
| 非推奨 | D3DX9/D3DX11 エフェクトフレームワークは非推奨。現代のワークフローでは DirectX 12 のパイプライン状態オブジェクト (PSOs) を使用 |
| 一般的な用途 | レガシーなゲームアセット、ゲームのモッディング、Autodesk 3ds Max DirectX シェーダーマテリアル、シェーダーの開発とプロトタイピング |
| ジオメトリとの区別 | シェーディングロジックのみを含みます。3D モデルは .x (DirectX メッシュ形式) などの別のファイルに保存されます |
| リリース日 | DirectX 9.0 (2002) with the D3DX Effects framework |
| 最新バージョン | DirectX 12 HLSL; legacy D3DX9/D3DX11 effect framework deprecated; modern HLSL now compiled to DXBC/DXIL bytecode |
| 仕様書 | learn.microsoft.com |
FX の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。FX ファイルについて最初の質問をしてみましょう。
よくある質問
.fx ファイルとは何ですか?
.fx ファイルを開くにはどうすればよいですか?
.fx と .hlsl の違いは何ですか?
.fx は HLSL をエフェクトフレームワークでラップし、テクニック/パスブロックやレンダリング状態の宣言 (D3DX Effects) を含みます。.fx 構文はレガシーなレイヤーであり、.hlsl が現代の慣習です。.fx ファイルを編集してゲームのグラフィックを変更できますか?
.fx シェーダーファイルを編集することで機能します。コードエディタで開き、計算式や数値を変更してから、ゲームをホットリロードするか fxc で再コンパイルします。なぜ DirectX .fx は非推奨になったのですか?
.fx ファイルをコンパイルするにはどうすればよいですか?
fxc /T fx_5_0 /Fo shader.fxo shader.fx。生成された .fxo (または .cso) がエンジンに読み込まれるバイナリです。