「HLSL (High Level Shader Language)」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
'''High Level Shading Language'''(読み:はいれべるしぇーでぃんぐらんげーじ、通称: [[HLSL]])とは、[[マイクロソフト]]によって[[Direct3D]] ([[DirectX]])向けに[[開発]]された[[プログラマブルシェーダー]]のための[[シェーディング言語]]である。 | '''High Level Shading Language'''(読み:はいれべるしぇーでぃんぐらんげーじ、通称: [[HLSL]])とは、[[マイクロソフト]]によって[[Direct3D]] ([[DirectX]])向けに[[開発]]された[[プログラマブルシェーダー]]のための[[シェーディング言語]]である。 | ||
− | ==概要== | + | == 概要 == |
− | + | HLSLは大雑把にいえば[[シェーダー]]特化型の汎用的な[[プログラミング言語]]である。[[アセンブラ]]みたいな[[言語]]とGPUメーカー独自の機種依存の激しい言語しかない状況の中で颯爽と登場した[[高級言語]]である。 | |
− | + | HLSLは環境依存が非常に低い言語であるため、そのサブセットが多数存在する。たとえば[[MonoGame]]や[[PlayStation]]([[サブセット]]の[[PSSL]])などが採用ある。[[Unity]]に至っては[[OpenGL]]向けの実装であっても[[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) === |
− | *[[ドメインシェーダー]] | + | * [[ハルシェーダー]] |
− | *[[コンピュートシェーダー]] | + | * [[ドメインシェーダー]] |
+ | * [[コンピュートシェーダー]] | ||
− | ==関連項目== | + | == 関連項目 == |
− | |||
+ | == 参考文献 == | ||
+ | {{reflist}} | ||
− | + | {{stub}} | |
− | |||
− | |||
− |