高レベルシェーダー言語[1]または高レベルシェーディング言語[2](HLSL)は、シェーダーアセンブリ言語を補強するためにMicrosoftがDirect3D 9 API用に開発した独自のシェーディング言語であり、Direct3D 10以降の統合シェーダーモデルに必要なシェーディング言語になりました。
HLSL は、 OpenGL標準で使用されるGLSLシェーディング言語に類似しています。Nvidia Cgシェーディング言語と非常によく似ており、同時に開発されました。2 つの言語の初期バージョンは、マーケティング方法が異なっていただけで、同一であると考えられていました。[3] HLSL シェーダーは、 2D と 3D の両方のコンピューター グラフィックスで、速度と詳細度を大幅に向上させ、多くの特殊効果を実現できます。[要出典]
HLSL プログラムには、ピクセル シェーダー(GLSL ではフラグメント)、頂点シェーダー、ジオメトリ シェーダー、コンピュート シェーダー、テッセレーション シェーダー(ハル シェーダーとドメイン シェーダー)、レイ トレーシング シェーダー(レイ生成シェーダー、交差シェーダー、任意のヒット/最も近いヒット/ミス シェーダー) の 6 つの形式があります。頂点シェーダーは、アプリケーションによって送信された各頂点に対して実行され、主に頂点をオブジェクト空間からビュー空間に変換し、テクスチャ座標を生成し、頂点の法線、接線、従接ベクトルなどの照明係数を計算する役割を担っています。頂点のグループ (通常は 3 つで三角形を形成) が頂点シェーダーを通過すると、その出力位置が補間されてその領域内のピクセルが形成されます。このプロセスはラスタライズと呼ばれます。
オプションとして、Direct3D 10/11/12 インターフェイスと Direct3D 10/11/12 ハードウェアを使用するアプリケーションでは、ジオメトリ シェーダーを指定することもできます。このシェーダーは、プリミティブ (三角形/線/点) の頂点を入力として受け取り、このデータを使用して追加のプリミティブを生成/縮退 (またはテッセレーション) するか、プリミティブのタイプを変更します。その後、プリミティブはそれぞれラスタライザーに送信されます。
D3D11.3とD3D12ではシェーダーモデル5.1 [4]とそれ以降の6.0 [5]が導入されました。
シェーダーモデルの比較
リストされている GPU は、特定の仕様を最初にサポートしたハードウェアです。メーカーは一般に、ドライバーを通じてすべての下位シェーダー モデルをサポートしています。ゲームでは特定の DirectX バージョンが必要であると主張される場合がありますが、そのバージョンの完全な仕様に準拠した GPU は必ずしも必要ではありません。開発者は上位の DirectX API バージョンを使用して、下位の Direct3D 仕様のハードウェアをターゲットにすることができます。たとえば、DirectX 9 は、DirectX7 では提供されなかった DirectX7 レベルのハードウェアの機能を公開し、固定機能の T&L パイプラインをターゲットにしています。
ピクセルシェーダーの比較
- PS 1.0 — 未リリース3dfx Rampage、DirectX 8
- PS 1.1 — GeForce 3、DirectX 8
- PS 1.2 — 3Dlabs Wildcat VP、DirectX 8.1
- PS 1.3 — GeForce 4 Ti、DirectX 8.1
- PS 1.4 — Radeon 8500~9250、Matrox Parhelia、DirectX 8.1
- シェーダーモデル 2.0 — Radeon 9500–9800/X300–X600、DirectX 9
- シェーダー モデル 2.0a — GeForce FX/PCX最適化モデル、DirectX 9.0a
- シェーダー モデル 2.0b — Radeon X700–X850シェーダー モデル、DirectX 9.0b
- シェーダー モデル 3.0 — Radeon X1000およびGeForce 6、DirectX 9.0c
- シェーダーモデル 4.0 — Radeon HD 2000およびGeForce 8、DirectX 10
- シェーダー モデル 4.1 — Radeon HD 3000およびGeForce 200、DirectX 10.1
- シェーダー モデル 5.0 — Radeon HD 5000およびGeForce 400、DirectX 11
- シェーダー モデル 5.1 — GCN 1+、Fermi+、DirectX 12 (11_0+)、WDDM 2.0 付き
- シェーダー モデル 6.0 — GCN 1+、Kepler+、DirectX 12 (11_0+)、WDDM 2.1 付き
- シェーダー モデル 6.1 — GCN 1+、Kepler+、DirectX 12 (11_0+)、WDDM 2.3
- シェーダー モデル 6.2 — GCN 1+、Kepler+、DirectX 12 (11_0+)、WDDM 2.4
- シェーダー モデル 6.3 — GCN 1+、Kepler+、DirectX 12 (11_0+)、WDDM 2.5
- シェーダー モデル 6.4 — GCN 1+、Kepler+、Skylake+、DirectX 12 (11_0+)、WDDM 2.6 付き
- シェーダー モデル 6.5 — GCN 1+、Kepler+、Skylake+、DirectX 12 (11_0+)、WDDM 2.7
- シェーダー モデル 6.6 — GCN 4+、Maxwell+、DirectX 12 (11_0+)、WDDM 3.0 付き
- シェーダー モデル 6.7 — GCN 4+、Maxwell+、DirectX 12 (12_0+)、WDDM 3.1 付き
- シェーダー モデル 6.8 — RDNA 1+、Maxwell 2+、DirectX 12 (12_0+)、WDDM 3.2
実行命令
の「32 + 64」は、「32 個のテクスチャ命令と 64 個の算術命令」を意味します。
頂点シェーダーの比較
参照
脚注
- ^ 「Direct3D 9 での HLSL シェーダーの記述」。Microsoft Docs。2021年2 月 22 日閲覧。
- ^ 「高レベルシェーダー言語 (HLSL)」。Microsoft Docs。2021年2 月 22 日閲覧。
- ^ 「Fusion Industries :: Cg and HLSL FAQ ::」。2012年8月24日。2012年8月24日時点のオリジナルよりアーカイブ。
- ^ 「シェーダー モデル 5.1 オブジェクト」。Microsoft Docs。2021年2 月 22 日閲覧。
- ^ 「HLSL シェーダー モデル 6.0」 。Microsoft Docs。2021年2 月 22 日閲覧。
- ^ abcdef 「ピクセル シェーダーの違い」。Microsoft Docs。2020年 8 月 19 日。2021 年2 月 22 日閲覧。
- ^ abcde Peeper, Craig; Mitchell, Jason L. (2003 年 7 月)。「DirectX 9 高レベル シェーダー言語の概要」。Microsoft Docs。2021年2 月 22 日閲覧。
- ^ abc Shimpi、Anand Lal。「NVIDIAがGeForce FX(NV30)を発表」。AnandTech 。 2021年2月22日閲覧。
- ^ ウィルソン、デレク。 「ATI Radeon X800 Pro および XT Platinum Edition: R420 が登場」。アナンドテック。2021 年2 月 22 日に取得。
- ^ ab Shader Model 3.0、Ashu Rege、NVIDIA Developer Technology Group、2004 年。
- ^ ab Direct3D 10 システム、David Blythe、Microsoft Corporation、2006 年。
- ^ ab 「レジスタ - ps_4_1」。Microsoft Docs 2019年8月23日。 2021年2月22日閲覧。
- ^ ab "レジスタ - ps_5_0". Microsoft Docs 2019年8月23日. 2021年2月22日閲覧。
- ^ abcd 「頂点シェーダーの違い」。Microsoft Docs 2020 年 8 月 19 日。2021年2 月 22 日閲覧。
外部リンク
- Microsoft Docsの HLSL プログラミング ガイド
- DirectX 9 高レベル シェーディング言語の紹介 (ATI) AMD 開発者センター
- Riemer の HLSL 入門とチュートリアル (サンプル コードを含む) 2008 年 11 月 19 日にWayback Machineにアーカイブされました
- HLSL の紹介
- DirectX中間言語(DXIL)仕様
