「High Level Shading Language」の版間の差分
m ロボットによる 追加: it:High Level Shader Language |
m リンク先修正 Cg |
||
1行目: | 1行目: | ||
'''High Level Shader Language'''ないしは'''High Level Shading Language'''(ハイレベル シェーダ ランゲージ、- シェーディング - 、略称: '''HLSL''')は[[マイクロソフト]]によって開発された[[Direct3D]]APIで使われる[[プロプライエタリ・ソフトウェア|プロプライエタリ]]な[[シェーディング言語]]である。日本語では'''高級シェーダ言語'''(こうきゅうシェーダげんご)と呼称される。 |
'''High Level Shader Language'''ないしは'''High Level Shading Language'''(ハイレベル シェーダ ランゲージ、- シェーディング - 、略称: '''HLSL''')は[[マイクロソフト]]によって開発された[[Direct3D]]APIで使われる[[プロプライエタリ・ソフトウェア|プロプライエタリ]]な[[シェーディング言語]]である。日本語では'''高級シェーダ言語'''(こうきゅうシェーダげんご)と呼称される。 |
||
HLSLは[[OpenGL]]標準で使われるシェーディング言語である[[GLSL]]と類似の物である。また、[[NVIDIA]]と協力して開発されたことから、[[Cg]]に非常によく似ている。 |
HLSLは[[OpenGL]]標準で使われるシェーディング言語である[[GLSL]]と類似の物である。また、[[NVIDIA]]と協力して開発されたことから、[[Cg (プログラミング言語)|Cg]]に非常によく似ている。 |
||
HLSLのプログラム形式には3つある。[[バーテックスシェーダ]]、[[ジオメトリシェーダ]]、そして[[ピクセルシェーダ]]([[フラグメントシェーダ]])である。バーテックスシェーダはアプリケーションによって提供される頂点それぞれについて実行され、主に以下の処理を担当する。オブジェクト空間から視空間への頂点変換やテクスチャ座標の生成、また頂点の接線や従法線や法線ベクトルのような光線の係数の計算などである。バーテックスシェーダを通して頂点のグループ(三角形であれば通常は3個)が入力された時、出力座標はその領域内でピクセルを決めるために補間される。この処理は[[ラスタライゼーション]]として知られている。これらのピクセルそれぞれがピクセルシェーダを通ることで、結果としてスクリーン上の色が計算される。 |
HLSLのプログラム形式には3つある。[[バーテックスシェーダ]]、[[ジオメトリシェーダ]]、そして[[ピクセルシェーダ]]([[フラグメントシェーダ]])である。バーテックスシェーダはアプリケーションによって提供される頂点それぞれについて実行され、主に以下の処理を担当する。オブジェクト空間から視空間への頂点変換やテクスチャ座標の生成、また頂点の接線や従法線や法線ベクトルのような光線の係数の計算などである。バーテックスシェーダを通して頂点のグループ(三角形であれば通常は3個)が入力された時、出力座標はその領域内でピクセルを決めるために補間される。この処理は[[ラスタライゼーション]]として知られている。これらのピクセルそれぞれがピクセルシェーダを通ることで、結果としてスクリーン上の色が計算される。 |
2009年3月21日 (土) 04:04時点における版
High Level Shader LanguageないしはHigh Level Shading Language(ハイレベル シェーダ ランゲージ、- シェーディング - 、略称: HLSL)はマイクロソフトによって開発されたDirect3DAPIで使われるプロプライエタリなシェーディング言語である。日本語では高級シェーダ言語(こうきゅうシェーダげんご)と呼称される。
HLSLはOpenGL標準で使われるシェーディング言語であるGLSLと類似の物である。また、NVIDIAと協力して開発されたことから、Cgに非常によく似ている。
HLSLのプログラム形式には3つある。バーテックスシェーダ、ジオメトリシェーダ、そしてピクセルシェーダ(フラグメントシェーダ)である。バーテックスシェーダはアプリケーションによって提供される頂点それぞれについて実行され、主に以下の処理を担当する。オブジェクト空間から視空間への頂点変換やテクスチャ座標の生成、また頂点の接線や従法線や法線ベクトルのような光線の係数の計算などである。バーテックスシェーダを通して頂点のグループ(三角形であれば通常は3個)が入力された時、出力座標はその領域内でピクセルを決めるために補間される。この処理はラスタライゼーションとして知られている。これらのピクセルそれぞれがピクセルシェーダを通ることで、結果としてスクリーン上の色が計算される。
また、Direct3D 10インタフェースやDirect3D 10ハードウェアを使うアプリケーションはジオメトリシェーダを指定することもできる。このシェーダは三角形の三頂点を入力に取り、それから追加の三角形を生成し(隙間なく埋める)、ラスタライザに送り込む。
シェーダモデル比較
ピクセルシェーダの比較
PS_2_0 | PS_2_a | PS_2_b | PS_3_0[1] | PS_4_0[2] | |
---|---|---|---|---|---|
依存テクスチャ制限 | 4 | 制限なし | 4 | 制限なし | 制限なし |
テクスチャ命令制限 | 32 | 無制限 | 無制限 | 無制限 | 無制限 |
Position register | No | No | No | Yes | Yes |
命令スロット数 | 32 + 64 | 512 | 512 | ≥ 512 | ≥ 65536 |
実行命令数 | 32 + 64 | 512 | 512 | 65536 | 無制限 |
テクスチャの間接数 | 4 | 制限なし | 4 | 制限なし | 制限なし |
Interpolated registers | 2 + 8 | 2 + 8 | 2 + 8 | 10 | 32 |
命令予測 | No | Yes | No | Yes | No |
Index input registers | No | No | No | Yes | Yes |
Temp registers | 12 | 22 | 32 | 32 | 4096 |
Constant registers | 32 | 32 | 32 | 224 | 16x4096 |
Arbitrary swizzling | No | Yes | No | Yes | Yes |
Gradient instructions | No | Yes | No | Yes | Yes |
Loop count register | No | No | No | Yes | Yes |
Face register (2-sided lighting) | No | No | No | Yes | Yes |
動的フロー制御 | No | No | No | 24 | Yes |
ビット演算 | No | No | No | No | Yes |
整数演算 | No | No | No | No | Yes |
- PS_2_0 = DirectX 9.0のオリジナルのShader Model 2の仕様である.
- PS_2_a = NVIDIA GeForce FXに最適化されたモデル。
- PS_2_b = ATI Radeon X700, X800, X850のシェーダモデル, DirectX 9.0b.
- PS_3_0 = Shader Model 3.
- PS_4_0 = Shader Model 4.
実行命令数において"32 + 64"というのは"32のテクスチャ命令と64の算術命令"を意味する。
バーテックスシェーダの比較
Vertex shader comparison
VS_2_0 | VS_2_a | VS_3_0[1] | VS_4_0[2] | |
---|---|---|---|---|
命令スロット数 | 256 | 256 | ≥ 512 | 4096 |
最大命令実行数 | 65536 | 65536 | 65536 | 65536 |
命令予測 | No | Yes | Yes | Yes |
一時レジスタ(Temp Registers) | 12 | 13 | 32 | 4096 |
定数レジスタ(constant registers) | ≥ 256 | ≥ 256 | ≥ 256 | 16x4096 |
静的フロー制御 | Yes | Yes | Yes | Yes |
動的フロー制御 | No | Yes | Yes | Yes |
動的フロー制御の深度 | No | 24 | 24 | Yes |
Vertex Texture Fetch | No | No | Yes | Yes |
テクスチャサンプラーの数 | N/A | N/A | 4 | 128 |
Geometry instancing support | No | No | Yes | Yes |
ビット演算 | No | No | No | Yes |
整数演算 | No | No | No | Yes |
- VS_2_0 = DirectX 9.0のオリジナルのShader Model 2の仕様である.
- VS_2_a = NVIDIA GeForce FXに最適化されたモデル。
- VS_3_0 = Shader Model 3.
- VS_4_0 = Shader Model 4.