「HLSL (High Level Shader Language)」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
 
'''High Level Shading Language'''(読み:はいれべるしぇーでぃんぐらんげーじ、通称: [[HLSL]])とは、[[マイクロソフト]]によって[[Direct3D]] ([[DirectX]])向けに[[開発]]された[[プログラマブルシェーダー]]のための[[シェーディング言語]]である。
 
'''High Level Shading Language'''(読み:はいれべるしぇーでぃんぐらんげーじ、通称: [[HLSL]])とは、[[マイクロソフト]]によって[[Direct3D]] ([[DirectX]])向けに[[開発]]された[[プログラマブルシェーダー]]のための[[シェーディング言語]]である。
  
==概要==
+
== 概要 ==
HLSLは[[シェーダー]]特化型の汎用的な[[プログラミング言語]]である。
+
HLSLは大雑把にいえば[[シェーダー]]特化型の汎用的な[[プログラミング言語]]である。[[アセンブラ]]みたいな[[言語]]とGPUメーカー独自の機種依存の激しい言語しかない状況の中で颯爽と登場した[[高級言語]]である。
  
HLSLは[[NVIDIA Cg]](以下[[Cg言語]])の方言であり、Cg言語から安定した仕様のみを採用したサブセットである。
+
HLSLは環境依存が非常に低い言語であるため、そのサブセットが多数存在する。たとえば[[MonoGame]][[PlayStation]]([[サブセット]]の[[PSSL]])などが採用ある。[[Unity]]に至っては[[OpenGL]]向けの実装であっても[[GLSL]]ではなくHLSLの利用が推奨されている。
  
かつてシェーディング言語は、古い技術で固めた「汎用性の[[GLSL]]」と、最新鋭の技術を次々取り込む「突撃仕様の[[Cg言語]]」の二択であった。そして[[ネット]]に溢れかえる情報は「最新技術動向」が中心であるためCg言語が圧倒的な勢力となっていった。
+
== シェーダーとエフェクト ==
 
 
しかしならがCg言語は[[NVIDIA]]製でありNVIDIA製品でしか使えない。そこで「[[NVIDIA]]製の[[Cg言語]]」を「[[マイクロソフト]]製のHLSL」とすることで[[AMD]]や[[Intel]]などの他社も[[宗教上の理由]]を回避して利用できるようにした。
 
 
 
その後も「最新仕様のCg言語」と「安定仕様のHLSL」というベータ版とリリース版のような体制が続けられたが、2012年にCg言語が更新終了し、以降はHLSLに一本化された。
 
 
 
== サブセット ==
 
HLSLは環境依存の非常に低い言語であるため、そのサブセットが多数存在する。たとえば[[MonoGame]]や[[PlayStation]]([[サブセット]]の[[PSSL]])などが採用ある。[[Unity]]に至っては[[OpenGL]]向けの実装であっても[[GLSL]]ではなくHLSLの利用が推奨されている。また、OpenGL後続となる[[Vulkan]]でもGLSLに加えHLSLのサポートが追加された。
 
 
 
==シェーダーとエフェクト==
 
 
HLSLで書かれた[[プログラム]]の[[ソースコード]]は「エフェクトファイル(拡張子:[[.fxファイル]])」と呼ばれる。[[MonoGame]]なんかだとfxファイルを[[コンパイル]]して出来上がったものはEffectクラスで保持される。
 
HLSLで書かれた[[プログラム]]の[[ソースコード]]は「エフェクトファイル(拡張子:[[.fxファイル]])」と呼ばれる。[[MonoGame]]なんかだとfxファイルを[[コンパイル]]して出来上がったものはEffectクラスで保持される。
  
22行目: 13行目:
 
つまり、これが原因で「シェーダー」を指して「エフェクト」と呼ばれることが多々あるのである。非常に紛らわしいがどっちもほぼ同じ意味である。[[ゲーム]]界隈で「エフェクト」と言われたらシェーダーの事かもしれないので注意しよう。
 
つまり、これが原因で「シェーダー」を指して「エフェクト」と呼ばれることが多々あるのである。非常に紛らわしいがどっちもほぼ同じ意味である。[[ゲーム]]界隈で「エフェクト」と言われたらシェーダーの事かもしれないので注意しよう。
  
==扱えるパイプラインステージ==
+
== 扱えるパイプラインステージ ==
 
HLSLで扱える機能(パイプラインステージ)は環境により異なる。どの機能が使えるかという制限は大雑把に「[[シェーダーモデル]](英語:Shader Model、通称:SM)」という言葉で表される。2018年時点では「[[PC]]から[[スマホ]]までカバーするSM3.0」と、[[ハイエンドPC]]を想定した「それ以上」の2種類に大分類されると考えておけばよい。
 
HLSLで扱える機能(パイプラインステージ)は環境により異なる。どの機能が使えるかという制限は大雑把に「[[シェーダーモデル]](英語:Shader Model、通称:SM)」という言葉で表される。2018年時点では「[[PC]]から[[スマホ]]までカバーするSM3.0」と、[[ハイエンドPC]]を想定した「それ以上」の2種類に大分類されると考えておけばよい。
  
 
なお、実行環境によりさらに細かな制限がある場合もある。
 
なお、実行環境によりさらに細かな制限がある場合もある。
  
===SM 1.x〜3.0 (Direct3D 9)===
+
=== SM 1.x〜3.0 (Direct3D 9) ===
 
+
* [[バーテックスシェーダー]]
*[[バーテックスシェーダー]]
+
* [[ピクセルシェーダー]]
*[[ピクセルシェーダー]]
 
  
 
[[MonoGame]]などのサブセットではほぼこれである。
 
[[MonoGame]]などのサブセットではほぼこれである。
 
[[iOS]]や[[Android]]で幅広い機種をサポートするためには致し方ない感じである。また、[[OpenGL ES]]系では[[バーテックスシェーダー]]の書き戻しができないなどの制限もあり、それらは実行時にはじめてエラーになる。気をつけよう。
 
[[iOS]]や[[Android]]で幅広い機種をサポートするためには致し方ない感じである。また、[[OpenGL ES]]系では[[バーテックスシェーダー]]の書き戻しができないなどの制限もあり、それらは実行時にはじめてエラーになる。気をつけよう。
  
===SM 4.x (Direct3D 10)===
+
=== SM 4.x (Direct3D 10) ===
 
+
* [[ジオメトリシェーダー]]
*[[ジオメトリシェーダー]]
 
 
 
===SM 5.x (Direct3D 11/12)===
 
  
*[[ハルシェーダー]]
+
=== SM 5.x (Direct3D 11/12) ===
*[[ドメインシェーダー]]
+
* [[ハルシェーダー]]
*[[コンピュートシェーダー]]
+
* [[ドメインシェーダー]]
 +
* [[コンピュートシェーダー]]
  
==関連項目==
+
== 関連項目 ==
* [[HLSLの組み込み関数]]
 
  
 +
== 参考文献 ==
 +
{{reflist}}
  
[[category: コンピューター・グラフィックス]]
+
{{stub}}
[[category: 3DCG]]
 
[[category: シェーディング言語]]
 
[[category: HLSL]]
 

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)