/**/
Jitter は、XMLをベースとするシェーダ記述ファイル(JXS)によって、シェーダのパラメータとプログラムをカプセル化する手段を提供します。この JXS ファイルは、パッチャーに関連した操作を加えることなく、特定の効果を得るために必要とされる OpenGL の任意のステートをセットアップする簡単な方法を提供してくれます。
JXS ファイルには、パラメータとテクスチャのリスト、それに続いて、シェーダの頂点プログラムとフラグメントプログラムのための、言語に依存した実装のセットを含めることができます。
個々の言語の実装では、頂点プログラム、およびフラグメントプログラムの両方を指定しなければなりません。これらのプログラムは外部ファイルを参照しても、あるいは、CDATA セクションもしくはXMLコメントにインラインで格納しても構いません。個々の言語実装のためのプログラムはロードされ、JXSファイルでリストされている順に結合されます。特定の言語実装でコンパイルエラーが生じた場合、成功する候補が見つかるまで、その次の実装が使用されていきます。
言語実装の宣言の内部では、明示的に指定された全てのシェーダパラメータは、そのパラメータ値をどのプログラムが受け取らなければならないかを示すbing タグと一体になっていなければなりません。
次に、一般的な JXS ファイルのフォーマットの概要を示します。
<jittershader name=”myshader”> <!-- optional description --> <description>This is my shader</description> <!-- optional list of texture objects to bind --> <texture file=”mytexture.jpg” /> <!-- optional list of shader parameters --> <param=”myparam” type=”vec3” default=”3.0 4.0 5.0”> <description>This is my parameter</description> </param> <!-- list of language implementations --> <language type=”glsl” version=”1.0”> <!-- list of binding targets for shader parameters --> <bind param=”myparam” program=”vp” /> <!-- vertex and fragment programs --> <program name="vp" type="vertex" source="sh.passthru.xform.vp.glsl" /> <program name="fp" type="fragment"> <![CDATA[ // entry point void main() { gl_FragColor = vec4(0.5, 0.5, 0.5, 1.0); } ]]> </program> </language> </jittershader>
XML ドキュメントでは、開始タグと終了タグの対応が厳格に守られなければならない点に注意して下さい。
JXS タグ
JXS ドキュメントの内部では、次に示す任意のタグを使用することができます。
jittershader | シェーダオブジェクトの定義。有効なアトリビュートは次の通りです | ||
symbol | name | シェーダ名 | |
text | description | オプションの記述テキスト | |
texture | 使用するテクスチャオブジェクトの定義。任意の jit.gl テクスチャアトリビュートが指定できます(完全なリストは、jit.gl.texture の html リファレンスを参照してください)。 | ||
param | シェーダパラメータの定義。有効なアトリビュートは次の通りです。 | ||
symbol | name | ||
text | description | ||
symbol | type | ||
list | default | ||
symbol | transform | ||
symbol | state | 自動的に参照されるGL ステートの型。動作に結びつけられる有効な型は次の通りです。 EMISSION CAMERA_POSITION CAMERA_DIRECTION LIGHT0-7_POSITION LIGHT0-7_DIRECTION LIGHT0-7_AMBIENT LIGHT0-7 MODELVIEW_MATRIX PROJECTION_MATRIX MODELVIEW_PROJECTION_MATRIX NORMAL_MATRIX TEXTURE_MATRIX TEXTURE0-7_MATRIX POSITION NORMAL TANGENT BITANGENT EDGEFLAG AMBIENT DIFFUSE SPECULAR _DIFFUSE LIGHT0-7_SPECULAR LIGHT0-7_CUTOFF LIGHT0-7_EXPONENT TEXDIM0-7 |
|
language | 言語実装の定義。頂点プログラムとフラグメントプログラムの両方、およびそれまでに指定されたすべてのシェーダパラメータのためのバインドターゲットを含まなければなりません。 | ||
symbol | name | シェーディング言語名 | |
float | version | オプション。シェーディング言語のバージョン識別子。 | |
bind | パラメータを特定のシェーダプログラムと関連づけるための、言語実装内のバインドターゲットの定義。 | ||
symbol | param | 関連づけられるパラメータ名 | |
symbol | program | 関連づけられるプログラム名 | |
symbol | target | バインディングターゲットの名前 (register). アセンブリプログラムの場合にのみ必要。有効なターゲットは、env[0-256], local[0-256] です。 | |
program | 言語実装内のシェーダプログラムの定義 | ||
symbol | name | シェーダプログラム名 | |
symbol | source | シェーダプログラムのソースコードに含まれる外部ファイル名。プログラムがCDATA セクション、または XML コメント内で定義されていない場合にのみ必要。 |