/**/

補遺 C:
JXS ファイルフォーマット

Jitterシェーダ記述ファイル

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 コメント内で定義されていない場合にのみ必要。