メインメニューを開く

差分

HLSL (High Level Shader Language)

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