>>969
上の方でGLSLにトランスレートしてるとか書いてる人がいるから
CgからGLSLに変換してるんじゃなかろーか

GLSL や Cg の予約語と、同じ名前の変数や関数は使用できません。
一部の予約語は case-insensitive であり注意が必要です (Texture, Matrix, Vector など)。
vertex shader の出力と fragment shader の入力には、セマンティクスの指定が必要です。
vertex shader の出力と fragment shader の入力は、名前とセマンティクスの両方が一致する必要があります。
fragment shader の出力には、COLOR セマンティクスの指定が必要です。
一つのシェーダー内で、重複する TEXUNIT セマンティクスは使用できません。
一部のセマンティクスでは、変数の型が制限されます (NORMAL, PSIZE, FOG など)
ループの反復回数の最大値は、定数である必要があります。
ループの反復回数を制御する場合は、break 文でループを中断してください。
attribute, varying, sampler 変数の配列は使用できません。
uniform float2/3/4 の xyzw への、uniform int による配列アクセスは使用できません。
uniform float4x4 の columns への、uniform int による配列アクセスは使用できません。
スカラー変数に対する swizzle は使用できません (f.xxxx など)。
  PSIZE がない場合、varying 変数は 8 packed vectors まで使用可能です (POSITION を除く)。
PSIZE がある場合、varying 変数は 8 vectors まで使用可能です (POSITION, PSIZE を除く)。

マニュアルには構造体は使えないとか書いてないけど