高水準シェーダ言語

複数の異なる2D HLSLシェーダーを含むシーン。彫像の歪みは純粋に物理的な方法で実現され、その横にある長方形のフレームのテクスチャは色の強度に基づいています。背景の正方形は変形および回転されています。前景の水の部分的な透明化反射は、最終的にシーン全体に適用されたシェーダーによって追加されています。

レベルシェーダー言語[1]または高レベルシェーディング言語[2] ( HLSL ) は、MicrosoftDirect3D 9 API用にシェーダーアセンブリ言語を拡張するために開発した独自のシェーディング言語であり、Direct3D 10 以降の統合シェーダーモデルに必要なシェーディング言語になりました。

HLSLは、 OpenGL標準で使用されているGLSLシェーディング言語に類似しています。Nvidia Cgシェーディング言語と並行して開発されたため、非常に類似しています。初期のバージョンでは、マーケティング方法が異なっていたものの、同一の言語と考えられていました。[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パイプラインをターゲットにしています。

ピクセルシェーダーの比較

ピクセルシェーダーバージョン1.01.11.2

1.3 [6]

1.4 [6]2.0 [6] [7]2.0a [6] [7] [8]2.0b [6] [7] [9]3.0 [6] [10]4.0 [11] 4.1 [12]

5.0 [13]

依存テクスチャ制限44468無制限8無制限無制限
テクスチャ命令の制限4446 * 232無制限無制限無制限無制限
演算命令の制限8888 * 264無制限無制限無制限無制限
ポジションレジスタいいえいいえいいえいいえいいえいいえいいえはいはい
命令スロット88 + 48 + 4(8 + 6)* 264 + 32512512≥ 512≥ 65536
実行された命令88 + 48 + 4(8 + 6)* 264 + 3251251265536無制限
テクスチャの間接指定44444無制限4無制限無制限
補間レジスタ2 + 42 + 42 + 42 + 62 + 82 + 82 + 81032
命令述語いいえいいえいいえいいえいいえはいいいえはいいいえ
インデックス入力レジスタいいえいいえいいえいいえいいえいいえいいえはいはい
温度レジスタ22 + 43 + 4612から322232324096
定数レジスタ888832323222416×4096
任意のスウィズリングいいえいいえいいえいいえいいえはいいいえはいはい
グラデーションの指示いいえいいえいいえいいえいいえはいいいえはいはい
ループカウントレジスタいいえいいえいいえいいえいいえいいえいいえはいはい
顔認識(両面照明)いいえいいえいいえいいえいいえいいえはいはいはい
動的フロー制御いいえいいえいいえいいえいいえいいえいいえはい (24)はい (64)
ビット演算子いいえいいえいいえいいえいいえいいえいいえいいえはい
ネイティブ整数いいえいいえいいえいいえいいえいいえいいえいいえはい
  • PS 1.0 — 未リリース3dfx Rampage、DirectX 8
  • PS 1.1GeForce 3、DirectX 8
  • PS 1.23Dlabs Wildcat VP、DirectX 8.1
  • PS 1.3GeForce 4 Ti、DirectX 8.1
  • PS 1.4Radeon 8500~9250Matrox Parhelia、DirectX 8.1
  • シェーダーモデル 2.0Radeon 9500~9800/X300~X600、DirectX 9
  • シェーダーモデル 2.0aGeForce FX/PCX最適化モデル、DirectX 9.0a
  • シェーダーモデル 2.0bRadeon X700~X850シェーダーモデル、DirectX 9.0b
  • シェーダーモデル 3.0Radeon X1000およびGeForce 6、DirectX 9.0c
  • シェーダーモデル 4.0Radeon HD 2000およびGeForce 8、DirectX 10
  • シェーダーモデル 4.1Radeon HD 3000およびGeForce 200、DirectX 10.1
  • シェーダーモデル 5.0Radeon HD 5000およびGeForce 400、DirectX 11
  • シェーダーモデル 5.1GCN 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.1 / 3.2、Agility SDK 付き


実行命令の「32 + 64」は、「32 個のテクスチャ命令と 64 個の算術命令」を意味します。

頂点シェーダーの比較

頂点シェーダバージョン1.01.1 [14]2.0 [7] [14] [8]2.0a [7] [14] [8]3.0 [10] [14]4.0 [11]
4.1 [12]
5.0 [13]
命令スロット数128128256256≥ 512≥ 65536
実行される命令の最大数12812810246553665536無制限
命令述語いいえいいえいいえはいはいはい
温度レジスタ12121216324096
# 定数レジスタ≥ 96≥ 96≥ 256256≥ 25616×4096
アドレスレジスタいいえはいはいはいはいはい
静的フロー制御いいえいいえはいはいはいはい
動的フロー制御いいえいいえいいえはいはいはい
動的フロー制御の深さ242464
頂点テクスチャフェッチいいえいいえいいえいいえはいはい
テクスチャサンプラーの数4128
ジオメトリインスタンス化のサポートいいえいいえいいえいいえはいはい
ビット演算子いいえいいえいいえいいえいいえはい
ネイティブ整数いいえいいえいいえいいえいいえはい

参照

脚注

  1. ^ 「Direct3D 9 での HLSL シェーダーの作成」Microsoft Docs . 2021年2月22日閲覧
  2. ^ 「高レベルシェーダー言語(HLSL)」。Microsoft Docs . 2021年2月22日閲覧
  3. ^ “Fusion Industries :: Cg and HLSL FAQ ::”. 2012年8月24日. オリジナルより2012年8月24日時点のアーカイブ。
  4. ^ 「シェーダーモデル5.1オブジェクト」。Microsoft Docs . 2021年2月22日閲覧
  5. ^ 「HLSL シェーダーモデル 6.0」。Microsoft Docs . 2021年2月22日閲覧
  6. ^ abcdef 「ピクセルシェーダーの違い」。Microsoft Docs . 2020年8月19日. 2021年2月22日閲覧
  7. ^ abcde Peeper, Craig; Mitchell, Jason L. (2003年7月). 「DirectX 9 高レベルシェーダー言語入門」. Microsoft Docs . 2021年2月22日閲覧。
  8. ^ abc Shimpi, Anand Lal . 「NVIDIA、GeForce FX (NV30)を発表」AnandTech . 2013年6月10日時点のオリジナルよりアーカイブ。 2021年2月22日閲覧
  9. ^ Wilson, Derek. 「ATI Radeon X800 Pro and XT Platinum Edition: R420 Arrives」. AnandTech . 2012年9月28日時点のオリジナルよりアーカイブ。 2021年2月22日閲覧
  10. ^ ab Shader Model 3.0、Ashu Rege、NVIDIA Developer Technology Group、2004 年。
  11. ^ ab The Direct3D 10 System、David Blythe、Microsoft Corporation、2006 年。
  12. ^ ab “レジスタ - ps_4_1”. Microsoft Docs . 2019年8月23日. 2021年2月22日閲覧
  13. ^ ab “レジスタ - ps_5_0”. Microsoft Docs . 2019年8月23日. 2021年2月22日閲覧
  14. ^ 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)仕様
「https://en.wikipedia.org/w/index.php?title=High-Level_Shader_Language&oldid=1304462243」より取得