コンテンツにスキップ

「High Level Shading Language」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
FlaBot (会話 | 投稿記録)
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.

外部リンク

脚注

  1. ^ a b Shader Model 3.0, Ashu Rege, NVIDIA Deve\ loper Technology Group, 2004.
  2. ^ a b The Direct3D 10 System, David Blythe, \ Microsoft Corporation, 2006.