シェーディング言語
[Wikipedia|▼Menu]
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事には複数の問題があります。改善やノートページでの議論にご協力ください。

出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2015年2月)


大言壮語的な記述になっています。(2015年2月)


言葉を濁した曖昧な記述になっています。(2015年2月)
出典検索?: "シェーディング言語" ? ニュース ・ 書籍 ・ スカラー ・ CiNii ・ J-STAGE ・ NDL ・ dlib.jp ・ ジャパンサーチ ・ TWL

.mw-parser-output .pathnavbox{clear:both;border:1px outset #eef;padding:0.3em 0.6em;margin:0 0 0.5em 0;background-color:#eef;font-size:90%}.mw-parser-output .pathnavbox ul{list-style:none none;margin-top:0;margin-bottom:0}.mw-parser-output .pathnavbox>ul{margin:0}.mw-parser-output .pathnavbox ul li{margin:0}シェーダー > プログラマブルシェーダー > シェーディング言語

シェーディング言語(: shading language)は、プログラマブルシェーダー向けのプログラミング言語のこと。この種の言語は色や法線のような特別なデータ型を持っている。C言語Javaのような汎用言語とは異なり、標準入出力機能を持たないなど、特定領域に特化したドメイン固有言語の一種である。3次元コンピュータグラフィックスの様々な市場に対応するため、複数の異なる言語が開発されている。以下にその概略を述べる。
プロダクションでのレンダリング

この種のシェーディング言語は最高画質を目指して開発されている。材質特性は全体的に抽象的で、プログラミングスキルはほとんど要らないし、ハードウェアの知識は全く必要ない。この種のシェーダーは、アーティスト達がテクスチャマッピングやライティング、その他の作業を行って見たそのままに得られるように開発されている。

この種のシェーダーの処理は、たいてい時間がかかる。シェーダーが行う処理に必要な計算能力は、写実的な結果を得るためにより高価になり得る。大部分は巨大なコンピュータクラスター上で実行される(グリッド・コンピューティング分散コンピューティング)。例えばShadeではShadeGridと呼ばれるネットワークレンダリングシステムを備えている[1]
RenderMan Shading Language詳細は「RenderMan Shading Language」を参照

RenderManシェーディング言語 (しばしばRSLないしSLと省略される) は、RenderManインタフェース仕様で定義されており、プロダクションレンダリングを行うのに最もよく使われているシェーディング言語である。また、この言語は最初に実装されたシェーディング言語でもある。

この言語は6つの主要なシェーダーのタイプを定義している。

Light source shaders 光源上の点から照射面上の点への光の色を計算する。

Surface shaders 照射されるオブジェクトの光学的特性モデル。入射光と物体の物理的特性を考慮することにより、照射点における最終的な色と位置を計算する。

Displacement shaders は表面の図形をその地点の色に独立して操作する。

Deformation shaders 全体の空間をある定義された図形に変換する。唯一RenderManにのみ実装されているAIR rendererは実際にこのタイプのシェーダーを実装している。

Volume shaders ボリュームを通して際の光の色を操作する。これらはフォグのような効果を生み出す。

Imager shaders 色を最終画素値に変形する。これはイメージフィルタのようなものであるが、imager shaderは量子化前のデータを操作するので、出力デバイスに表示するよりもより広いダイナミックレンジを持つ。

Houdini VEX Shading Language

Houdini VEX (Vector Expressions) シェーディング言語 (略してVEXと呼ばれる) は、RenderManシェーディング言語に非常に似たものとして作られている。この言語は完全な3Dグラフィックスのパッケージ製品とに統合されているけれども、シェーダー開発者は、普通はレンダリング処理上不可能なシェーダ内部の情報へアクセスすることができる。RSLとVEXの間の言語の違いは主に構文の違いである。2、3のシェーダー命令の名前が異なっている。
Gelato Shading Language

Gelatoのシェーディング言語はHoudiniVEXのように、RenderManシェーディング言語に非常に似たものに作られている。Gelatoシェーディング言語とRSLの違いは主に構文の違いである。Gelatoは関数定義中の引数を区切る方法としてカンマの代わりにセミコロンを使用している。また2、3のシェーダー命令の名前とパラメータが異なっている。
リアルタイムレンダリング

@media screen{.mw-parser-output .fix-domain{border-bottom:dashed 1px}}近年[いつ?]まで、開発者は複数のビデオカードグラフィックスパイプラインからの出力を同じレイヤで制御することができていなかったが、今やリアルタイムレンダリングにシェーディング言語を用いる方法が広く使われている。このことにより、以前のハードコードされた変形方式やシェーディング方程式を用いた方法と比較して、ハードウェアの抽象度を高めつつより柔軟なプログラミングモデルを取ることができるようになった。この結果、プログラマはレンダリング処理全体をより詳細に制御することができるようになり、小さなオーバーヘッドでより高品質なコンテンツを開発することができるようになった。

驚くべきことに、これらのシェーダーは最高のパフォーマンスを得るために、パイプライン上の適切な時点においてGPU上で直接実行されるように設計されており、またそのストリームプログラミングモデルのため、汎用処理(GPGPUなど)においても成功を収めている。

この種のシェーディング言語は通常グラフィックスAPI向けであるが、いくつかのアプリケーションでは機能制限付きではあるもののエンドユーザー向けの組み込みシェーディング言語として提供されている。
ARB 低レベルアセンブリ言語

OpenGL Architecture Review Boardは2002年にグラフィックスプロセッサ向けの標準低レベル命令セットとしてARBを策定した。

ローディングと実行を行うために、高レベルOpenGLシェーディング言語はARBにコンパイルされる。高レベルシェーディング言語とは違い、ARBアセンブリはフロー制御や分岐をサポートしていない。しかしながらその移植性の高さから様々なGPUで使われ続けている。
OpenGL シェーディング言語詳細は「GLSL」を参照

GLSL、glslangとしても知られている。言語文法はC言語がベースとなっている。これはOpenGL API用の高レベルシェーディング言語として、まずバージョン1.5の拡張機能として導入された[2]のち、バージョン2.0にて標準化された。本家OpenGLの他、OpenGL ESWebGLといったサブセットや派生規格でもサポートされている。この言語は単一命令セットで頂点処理とフラグメント処理を統合し、条件ループと(より一般的な)分岐をサポートしている。歴史的に、GLSLの機能は ⇒ARB_vertex_programや ⇒ARB_fragment_programのような様々なOpenGL拡張によって先行して開発されてきた。これらの拡張には制限があったり、低レベルであったり、アセンブリのような言語であって、それらの使い勝手は今やよくない。これらの拡張自身も今や新しいバージョンには生き残っていない他の拡張提案によって先行開発されてきた。
DirectX アセンブリ言語

Direct3D 8で初めて搭載された。アセンブリ言語とはいえ、ハードウェア非依存の中間バイトコードにアセンブルされるため、Direct3D対応であれば実行ハードウェアを問わない。Direct3D 9でもこのアセンブリ言語は使用可能だが、Direct3D 10以降は使用できない[3]
DirectX 高レベルシェーディング言語詳細は「High Level Shading Language」を参照

正式名称はHigh Level Shading Languageだが、HLSLの略称で呼ばれる。Direct3D 9で初めて搭載された。言語文法はC言語およびC++がベースとなっている。これはおそらく今日で最も成功した言語である[要出典]。主にマイクロソフトからの多大なサポートによる所もあるが、それと同時にリアルタイムレンダリング用途として最初のCスタイルシェーディング言語でもある。HLSLは以前は主にGLSLの競合としてリリースされた[要出典]が、その機能はGLSLの機能と合わせるために異なるリビジョンが後にリリースされた。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:27 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef