差分

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

シェーディング言語

4,257 バイト追加, 2013年4月1日 (月) 04:51
ページの作成:「'''シェーディング言語'''(英語:shading language)とは、コンピューターグラフィックスにおけるシェーダーを簡単に扱う...」
'''シェーディング言語'''(英語:shading language)とは、[[コンピューターグラフィックス]]における[[シェーダー]]を簡単に扱うことに特化した[[プログラミング言語]]の総称である。

== 概要 ==
シェーディング言語は大きくわけて、映画やテレビなどの放送用に用いられれる[[プロダクションレンダリング]]向けと、[[ゲーム]]などに用いられる[[リアルタイムレンダリング]]向けの分類される。

=== プロダクションレンダリング ===
[[プロダクションレンダリング]]向けのシェーディング言語の多くは芸術家、いわゆるアーティストが[[プログラミング]]や[[ハードウェア]]に関する深い知識がなくても扱え、かつ非常に高品質であることを第一としている物が多い。よってレンダリング速度は二の次であり、そこは想像を絶するほど巨大な[[レンダーファーム]]のパワーを持ってしてでゴリ押しするのが一般的である。

=== リアルタイムレンダリング ===
[[リアルタイムレンダリング]]向けのシェーディング言語は、[[GPU]]で実行される[[プログラマブルシェーダー]]を簡単に書けるようにしたものであり、いわゆる[[プログラマー]]が''GPU''を直叩きに近い感覚で、かつ[[ハードウェア]]の差異を抽象化して扱えるようにしているものが多い。そのため[[アセンブラ言語]]のようなものから[[C言語]]のようなも、さらには[[C Sharp|C#]]で出来ているものまで存在している。

* [[ARBアセンブリ言語]]
*: 主に[[OpenGL]]で使われる非常に低レベルな[[アセンブリ言語]]である。[[フロー制御]]や[[分岐]]をサポートしないなど本当に低レベルである。
* [[GLSL (OpenGL Shading Language)]]
*: 主に[[OpenGL]]で使われる[[C言語]]をベースとした高レベルなシェーディング言語である。[[プログラミング言語]]は大きく高低で2種類に分類されるという関係で高レベル扱いだが、後発品と比べると中レベルと言った感じである。内部的には[[ARBアセンブリ言語]]に[[コンパイル]]され利用される。
* [[Cg]]
*: [[NVIDIA]]が開発した[[C言語]]と[[C++]]の中間をとったような不思議な[[文法]]を持つ高レベルなシェーディング言語である。主に[[OpenGL]]や[[DirectX]]の仕様追加を待っていられない未来を目指す突撃系の実験プロジェクトで多用されており、[[Cg]]で成果を挙げたものが後述の[[HLSL]]に取り込まれるというのが定型パターンとなっている。
* [[HLSL (High Level Shader Language)]]
*: [[Cg]]をベースに[[NVIDIA]]以外の[[GPU]]も扱えるように汎用化した高レベルなシェーディング言語である。「[[Microsoft]]が[[DirectX]]向けに作ったもの」という宗教上の理由で敬遠する人も多いが、現存するシェーディング言語の中でも圧倒的に[[抽象度]]が高く、環境を選ばないほど[[汎用性]]も高い。
* [[AGAL (Adobe Graphics Assembly Language)]]
*: [[Adobe Flash]]で用いられるシェーディング言語である。[[ARBアセンブリ言語]]をベースとしている。
* [[Adobe Pixel Bender]]
*: [[Adobe Flash]]で用いられるシェーディング言語である。[[GLSL]]をベースとしている。
* [[PSSL (PlayStation Sharder Language)]]
*: [[HLSL]]をベースに[[PlayStation 4]]に徹底最適化したものであるとされる。
* [[SL Sharp|SL#]]
*: [[C Sharp|C#]]ベースのシェーディング言語である。主に[[Mono]]を用いて[[DirectX]]([[Windows]])と[[OpenGL]]([[Linux]]や[[Mac OS X]]など)に両対応した[[プログラム]]を一発で書きたい場面が想定されており、実行時に動的に[[GLSL]]および[[HLSL]]へ変換するという、他とは一線を画すほど非常に高レベルなシェーディング言語である。

== 関連項目 ==
* [[コンピューターグラフィックス]]

== 参考文献 ==
{{reflist}}

{{stub}}
匿名利用者

案内メニュー