コンテンツにスキップ

High Level Shading Language

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。Yelm (会話 | 投稿記録) による 2009年3月21日 (土) 04:04個人設定で未設定ならUTC)時点の版 (リンク先修正 Cg)であり、現在の版とは大きく異なる場合があります。

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.