--- /dev/null
+/// ============================================================================
+/*
+Copyright (C) 2004 Robert Beckebans <trebor_7@users.sourceforge.net>
+Please see the file "AUTHORS" for a list of contributors
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+/// ============================================================================
+
+#include "utils.cg"
+
+struct cg_vertex2fragment
+{
+ float4 position : TEXCOORD0;
+ float4 tex_diffuse_bump : TEXCOORD1;
+ float4 tex_specular : TEXCOORD2;
+ float4 tex_atten_xy_z : TEXCOORD3;
+
+ float3 tangent : TEXCOORD4;
+ float3 binormal : TEXCOORD5;
+ float3 normal : TEXCOORD6;
+};
+
+struct cg_fragment2final
+{
+ float4 color : COLOR;
+};
+
+
+cg_fragment2final main(cg_vertex2fragment IN,
+ uniform sampler2D diffusemap,
+ uniform sampler2D bumpmap,
+ uniform sampler2D specularmap,
+ uniform sampler2D attenuationmap_xy,
+ uniform sampler2D attenuationmap_z,
+ uniform float3 view_origin,
+ uniform float3 light_origin,
+ uniform float3 light_color,
+ uniform float bump_scale,
+ uniform float specular_exponent)
+{
+ cg_fragment2final OUT;
+
+ // construct object-space-to-tangent-space 3x3 matrix
+ float3x3 rotation = float3x3(IN.tangent, IN.binormal, IN.normal);
+
+ // compute view direction in tangent space
+ float3 V = normalize(mul(rotation, view_origin - IN.position.xyz));
+
+ // compute light direction in tangent space
+ float3 L = normalize(mul(rotation, (light_origin - IN.position.xyz)));
+
+ // compute half angle in tangent space
+ float3 H = normalize(L + V);
+
+ // compute normal in tangent space from bumpmap
+ float3 T = CG_Expand(tex2D(bumpmap, IN.tex_diffuse_bump.zw).xyz);
+ T.z *= bump_scale;
+ float3 N = normalize(T);
+
+ // compute the diffuse term
+ float4 diffuse = tex2D(diffusemap, IN.tex_diffuse_bump.xy);
+ diffuse.rgb *= light_color * saturate(dot(N, L));
+
+ // compute the specular term
+ float3 specular = tex2D(specularmap, IN.tex_specular.xy).rgb * light_color * pow(saturate(dot(N, H)), specular_exponent);
+
+ // compute attenuation
+ float3 attenuation_xy = tex2Dproj(attenuationmap_xy, float3(IN.tex_atten_xy_z.x, IN.tex_atten_xy_z.y, IN.tex_atten_xy_z.w)).rgb;
+ float3 attenuation_z = tex2D(attenuationmap_z, float2(IN.tex_atten_xy_z.z, 0)).rgb;
+
+ // compute final color
+ OUT.color.rgba = diffuse;
+ OUT.color.rgb += specular;
+ OUT.color.rgb *= attenuation_xy;
+ OUT.color.rgb *= attenuation_z;
+
+ return OUT;
+}
--- /dev/null
+/// ============================================================================
+/*
+Copyright (C) 2004 Robert Beckebans <trebor_7@users.sourceforge.net>
+Please see the file "AUTHORS" for a list of contributors
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+/// ============================================================================
+
+
+struct cg_app2vertex
+{
+ float4 position : POSITION;
+ float4 tex0 : ATTR8;
+
+ float3 tangent : ATTR9;
+ float3 binormal : ATTR10;
+ float3 normal : ATTR11;
+};
+
+struct cg_vertex2fragment
+{
+ float4 hposition : POSITION;
+
+ float4 position : TEXCOORD0;
+ float4 tex_diffuse_bump : TEXCOORD1;
+ float4 tex_specular : TEXCOORD2;
+ float4 tex_atten_xy_z : TEXCOORD3;
+
+ float3 tangent : TEXCOORD4;
+ float3 binormal : TEXCOORD5;
+ float3 normal : TEXCOORD6;
+};
+
+
+
+cg_vertex2fragment main(cg_app2vertex IN)
+{
+ cg_vertex2fragment OUT;
+
+ // transform vertex position into homogenous clip-space
+ OUT.hposition = mul(glstate.matrix.mvp, IN.position);
+
+ // assign position in object space
+ OUT.position = IN.position;
+
+ // transform texcoords
+ OUT.tex_diffuse_bump.xy = mul(glstate.matrix.texture[0], IN.tex0).xy;
+
+ // transform texcoords
+ OUT.tex_diffuse_bump.zw = mul(glstate.matrix.texture[1], IN.tex0).xy;
+
+ // transform texcoords
+ OUT.tex_specular = mul(glstate.matrix.texture[2], IN.tex0);
+
+ // transform vertex position into light space
+ OUT.tex_atten_xy_z = mul(glstate.matrix.texture[3], IN.position);
+
+ // assign tangent space vectors
+ OUT.tangent = IN.tangent;
+ OUT.binormal = IN.binormal;
+ OUT.normal = IN.normal;
+
+ return OUT;
+}
--- /dev/null
+!!ARBfp1.0
+# cgc version 1.3.0001, build date Aug 4 2004 10:01:10
+# command line args: -profile arbfp1
+# source file: ..\..\setup\data\tools\gl\lighting_DBS_XY_Z_arbfp1.cg
+# source file: ..\..\setup\data\tools\gl/utils.cg
+#vendor NVIDIA Corporation
+#version 1.0.02
+#profile arbfp1
+#program main
+#semantic main.diffusemap
+#semantic main.bumpmap
+#semantic main.specularmap
+#semantic main.attenuationmap_xy
+#semantic main.attenuationmap_z
+#semantic main.view_origin
+#semantic main.light_origin
+#semantic main.light_color
+#semantic main.bump_scale
+#semantic main.specular_exponent
+#var float4 IN.position : $vin.TEX0 : TEX0 : 0 : 1
+#var float4 IN.tex_diffuse_bump : $vin.TEX1 : TEX1 : 0 : 1
+#var float4 IN.tex_specular : $vin.TEX2 : TEX2 : 0 : 1
+#var float4 IN.tex_atten_xy_z : $vin.TEX3 : TEX3 : 0 : 1
+#var float3 IN.tangent : $vin.TEX4 : TEX4 : 0 : 1
+#var float3 IN.binormal : $vin.TEX5 : TEX5 : 0 : 1
+#var float3 IN.normal : $vin.TEX6 : TEX6 : 0 : 1
+#var sampler2D diffusemap : : texunit 0 : 1 : 1
+#var sampler2D bumpmap : : texunit 1 : 2 : 1
+#var sampler2D specularmap : : texunit 2 : 3 : 1
+#var sampler2D attenuationmap_xy : : texunit 3 : 4 : 1
+#var sampler2D attenuationmap_z : : texunit 4 : 5 : 1
+#var float3 view_origin : : c[4] : 6 : 1
+#var float3 light_origin : : c[2] : 7 : 1
+#var float3 light_color : : c[3] : 8 : 1
+#var float bump_scale : : c[1] : 9 : 1
+#var float specular_exponent : : c[5] : 10 : 1
+#var float4 main.color : $vout.COL : COL : -1 : 1
+#const c[0] = 0.5 2 0
+PARAM c[6] = { { 0.5, 2, 0 },
+ program.local[1..5] };
+TEMP R0;
+TEMP R1;
+TEMP R2;
+ADD R1.xyz, -fragment.texcoord[0], c[2];
+DP3 R0.z, fragment.texcoord[6], R1;
+DP3 R0.x, fragment.texcoord[4], R1;
+DP3 R0.y, fragment.texcoord[5], R1;
+ADD R1.xyz, -fragment.texcoord[0], c[4];
+DP3 R0.w, R0, R0;
+DP3 R2.z, fragment.texcoord[6], R1;
+DP3 R2.x, fragment.texcoord[4], R1;
+DP3 R2.y, fragment.texcoord[5], R1;
+RSQ R0.w, R0.w;
+MUL R1.xyz, R0.w, R0;
+DP3 R1.w, R2, R2;
+RSQ R0.w, R1.w;
+MUL R2.xyz, R0.w, R2;
+ADD R2.xyz, R1, R2;
+DP3 R0.w, R2, R2;
+RSQ R2.w, R0.w;
+TEX R0.xyz, fragment.texcoord[1].zwzw, texture[1], 2D;
+ADD R0.xyz, R0, -c[0].x;
+MUL R0.xyz, R0, c[0].y;
+MUL R0.z, R0, c[1].x;
+DP3 R1.w, R0, R0;
+RSQ R0.w, R1.w;
+MUL R0.xyz, R0.w, R0;
+MUL R2.xyz, R2.w, R2;
+DP3_SAT R0.w, R0, R2;
+DP3_SAT R0.x, R0, R1;
+TEX R2.xyz, fragment.texcoord[2], texture[2], 2D;
+MUL R1.xyz, R2, c[3];
+POW R0.w, R0.w, c[5].x;
+MUL R2.xyz, R1, R0.w;
+MUL R1.xyz, R0.x, c[3];
+TEX R0, fragment.texcoord[1], texture[0], 2D;
+MAD R2.xyz, R0, R1, R2;
+TXP R0.xyz, fragment.texcoord[3], texture[3], 2D;
+MOV R1.y, c[0].z;
+MOV R1.x, fragment.texcoord[3].z;
+TEX R1.xyz, R1, texture[4], 2D;
+MUL R0.xyz, R2, R0;
+MUL result.color.xyz, R0, R1;
+MOV result.color.w, R0;
+END
+# 41 instructions, 3 R-regs
--- /dev/null
+/// ============================================================================
+/*
+Copyright (C) 2004 Robert Beckebans <trebor_7@users.sourceforge.net>
+Please see the file "CONTRIBUTORS" for a list of contributors
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+/// ============================================================================
+
+uniform sampler2D u_diffusemap;
+uniform sampler2D u_bumpmap;
+uniform sampler2D u_specularmap;
+uniform sampler2D u_attenuationmap_xy;
+uniform sampler2D u_attenuationmap_z;
+uniform vec3 u_view_origin;
+uniform vec3 u_light_origin;
+uniform vec3 u_light_color;
+uniform float u_bump_scale;
+uniform float u_specular_exponent;
+
+varying vec3 var_vertex;
+varying vec4 var_tex_diffuse_bump;
+varying vec2 var_tex_specular;
+varying vec4 var_tex_atten_xy_z;
+varying mat3 var_mat_os2ts;
+
+void main()
+{
+ // compute view direction in tangent space
+ vec3 V = normalize(var_mat_os2ts * (u_view_origin - var_vertex));
+
+ // compute light direction in tangent space
+ vec3 L = normalize(var_mat_os2ts * (u_light_origin - var_vertex));
+
+ // compute half angle in tangent space
+ vec3 H = normalize(L + V);
+
+ // compute normal in tangent space from bumpmap
+ vec3 N = 2.0 * (texture2D(u_bumpmap, var_tex_diffuse_bump.pq).xyz - 0.5);
+ N.z *= u_bump_scale;
+ N = normalize(N);
+
+ // compute the diffuse term
+ vec4 diffuse = texture2D(u_diffusemap, var_tex_diffuse_bump.st);
+ diffuse.rgb *= u_light_color * clamp(dot(N, L), 0.0, 1.0);
+
+ // compute the specular term
+ vec3 specular = texture2D(u_specularmap, var_tex_specular).rgb * u_light_color * pow(clamp(dot(N, H), 0.0, 1.0), u_specular_exponent);
+
+ // compute attenuation
+ vec3 attenuation_xy = texture2DProj(u_attenuationmap_xy, vec3(var_tex_atten_xy_z.x, var_tex_atten_xy_z.y, var_tex_atten_xy_z.w)).rgb;
+ vec3 attenuation_z = texture2D(u_attenuationmap_z, vec2(var_tex_atten_xy_z.z, 0)).rgb;
+
+ // compute final color
+ gl_FragColor.rgba = diffuse;
+ gl_FragColor.rgb += specular;
+ gl_FragColor.rgb *= attenuation_xy;
+ gl_FragColor.rgb *= attenuation_z;
+}
+
--- /dev/null
+!!ARBvp1.0
+# cgc version 1.3.0001, build date Aug 4 2004 10:01:10
+# command line args: -profile arbvp1
+# source file: ..\..\setup\data\tools\gl\lighting_DBS_XY_Z_arbvp1.cg
+#vendor NVIDIA Corporation
+#version 1.0.02
+#profile arbvp1
+#program main
+#semantic glstate : STATE
+#var float4 glstate.material.ambient : STATE.MATERIAL.AMBIENT : : -1 : 0
+#var float4 glstate.material.diffuse : STATE.MATERIAL.DIFFUSE : : -1 : 0
+#var float4 glstate.material.specular : STATE.MATERIAL.SPECULAR : : -1 : 0
+#var float4 glstate.material.emission : STATE.MATERIAL.EMISSION : : -1 : 0
+#var float4 glstate.material.shininess : STATE.MATERIAL.SHININESS : : -1 : 0
+#var float4 glstate.material.front.ambient : STATE.MATERIAL.FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.material.front.diffuse : STATE.MATERIAL.FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.material.front.specular : STATE.MATERIAL.FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.material.front.emission : STATE.MATERIAL.FRONT.EMISSION : : -1 : 0
+#var float4 glstate.material.front.shininess : STATE.MATERIAL.FRONT.SHININESS : : -1 : 0
+#var float4 glstate.material.back.ambient : STATE.MATERIAL.BACK.AMBIENT : : -1 : 0
+#var float4 glstate.material.back.diffuse : STATE.MATERIAL.BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.material.back.specular : STATE.MATERIAL.BACK.SPECULAR : : -1 : 0
+#var float4 glstate.material.back.emission : STATE.MATERIAL.BACK.EMISSION : : -1 : 0
+#var float4 glstate.material.back.shininess : STATE.MATERIAL.BACK.SHININESS : : -1 : 0
+#var float4 glstate.light[0].ambient : STATE.LIGHT[0].AMBIENT : : -1 : 0
+#var float4 glstate.light[0].diffuse : STATE.LIGHT[0].DIFFUSE : : -1 : 0
+#var float4 glstate.light[0].specular : STATE.LIGHT[0].SPECULAR : : -1 : 0
+#var float4 glstate.light[0].position : STATE.LIGHT[0].POSITION : : -1 : 0
+#var float4 glstate.light[0].attenuation : STATE.LIGHT[0].ATTENUATION : : -1 : 0
+#var float4 glstate.light[0].spot.direction : STATE.LIGHT[0].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[0].half : STATE.LIGHT[0].HALF : : -1 : 0
+#var float4 glstate.light[1].ambient : STATE.LIGHT[1].AMBIENT : : -1 : 0
+#var float4 glstate.light[1].diffuse : STATE.LIGHT[1].DIFFUSE : : -1 : 0
+#var float4 glstate.light[1].specular : STATE.LIGHT[1].SPECULAR : : -1 : 0
+#var float4 glstate.light[1].position : STATE.LIGHT[1].POSITION : : -1 : 0
+#var float4 glstate.light[1].attenuation : STATE.LIGHT[1].ATTENUATION : : -1 : 0
+#var float4 glstate.light[1].spot.direction : STATE.LIGHT[1].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[1].half : STATE.LIGHT[1].HALF : : -1 : 0
+#var float4 glstate.light[2].ambient : STATE.LIGHT[2].AMBIENT : : -1 : 0
+#var float4 glstate.light[2].diffuse : STATE.LIGHT[2].DIFFUSE : : -1 : 0
+#var float4 glstate.light[2].specular : STATE.LIGHT[2].SPECULAR : : -1 : 0
+#var float4 glstate.light[2].position : STATE.LIGHT[2].POSITION : : -1 : 0
+#var float4 glstate.light[2].attenuation : STATE.LIGHT[2].ATTENUATION : : -1 : 0
+#var float4 glstate.light[2].spot.direction : STATE.LIGHT[2].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[2].half : STATE.LIGHT[2].HALF : : -1 : 0
+#var float4 glstate.light[3].ambient : STATE.LIGHT[3].AMBIENT : : -1 : 0
+#var float4 glstate.light[3].diffuse : STATE.LIGHT[3].DIFFUSE : : -1 : 0
+#var float4 glstate.light[3].specular : STATE.LIGHT[3].SPECULAR : : -1 : 0
+#var float4 glstate.light[3].position : STATE.LIGHT[3].POSITION : : -1 : 0
+#var float4 glstate.light[3].attenuation : STATE.LIGHT[3].ATTENUATION : : -1 : 0
+#var float4 glstate.light[3].spot.direction : STATE.LIGHT[3].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[3].half : STATE.LIGHT[3].HALF : : -1 : 0
+#var float4 glstate.light[4].ambient : STATE.LIGHT[4].AMBIENT : : -1 : 0
+#var float4 glstate.light[4].diffuse : STATE.LIGHT[4].DIFFUSE : : -1 : 0
+#var float4 glstate.light[4].specular : STATE.LIGHT[4].SPECULAR : : -1 : 0
+#var float4 glstate.light[4].position : STATE.LIGHT[4].POSITION : : -1 : 0
+#var float4 glstate.light[4].attenuation : STATE.LIGHT[4].ATTENUATION : : -1 : 0
+#var float4 glstate.light[4].spot.direction : STATE.LIGHT[4].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[4].half : STATE.LIGHT[4].HALF : : -1 : 0
+#var float4 glstate.light[5].ambient : STATE.LIGHT[5].AMBIENT : : -1 : 0
+#var float4 glstate.light[5].diffuse : STATE.LIGHT[5].DIFFUSE : : -1 : 0
+#var float4 glstate.light[5].specular : STATE.LIGHT[5].SPECULAR : : -1 : 0
+#var float4 glstate.light[5].position : STATE.LIGHT[5].POSITION : : -1 : 0
+#var float4 glstate.light[5].attenuation : STATE.LIGHT[5].ATTENUATION : : -1 : 0
+#var float4 glstate.light[5].spot.direction : STATE.LIGHT[5].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[5].half : STATE.LIGHT[5].HALF : : -1 : 0
+#var float4 glstate.light[6].ambient : STATE.LIGHT[6].AMBIENT : : -1 : 0
+#var float4 glstate.light[6].diffuse : STATE.LIGHT[6].DIFFUSE : : -1 : 0
+#var float4 glstate.light[6].specular : STATE.LIGHT[6].SPECULAR : : -1 : 0
+#var float4 glstate.light[6].position : STATE.LIGHT[6].POSITION : : -1 : 0
+#var float4 glstate.light[6].attenuation : STATE.LIGHT[6].ATTENUATION : : -1 : 0
+#var float4 glstate.light[6].spot.direction : STATE.LIGHT[6].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[6].half : STATE.LIGHT[6].HALF : : -1 : 0
+#var float4 glstate.light[7].ambient : STATE.LIGHT[7].AMBIENT : : -1 : 0
+#var float4 glstate.light[7].diffuse : STATE.LIGHT[7].DIFFUSE : : -1 : 0
+#var float4 glstate.light[7].specular : STATE.LIGHT[7].SPECULAR : : -1 : 0
+#var float4 glstate.light[7].position : STATE.LIGHT[7].POSITION : : -1 : 0
+#var float4 glstate.light[7].attenuation : STATE.LIGHT[7].ATTENUATION : : -1 : 0
+#var float4 glstate.light[7].spot.direction : STATE.LIGHT[7].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[7].half : STATE.LIGHT[7].HALF : : -1 : 0
+#var float4 glstate.lightmodel.ambient : STATE.LIGHTMODEL.AMBIENT : : -1 : 0
+#var float4 glstate.lightmodel.scenecolor : STATE.LIGHTMODEL.SCENECOLOR : : -1 : 0
+#var float4 glstate.lightmodel.front.scenecolor : STATE.LIGHTMODEL.FRONT.SCENECOLOR : : -1 : 0
+#var float4 glstate.lightmodel.back.scenecolor : STATE.LIGHTMODEL.BACK.SCENECOLOR : : -1 : 0
+#var float4 glstate.lightprod[0].ambient : STATE.LIGHTPROD[0].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[0].diffuse : STATE.LIGHTPROD[0].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[0].specular : STATE.LIGHTPROD[0].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[0].front.ambient : STATE.LIGHTPROD[0].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[0].front.diffuse : STATE.LIGHTPROD[0].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[0].front.specular : STATE.LIGHTPROD[0].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[0].back.ambient : STATE.LIGHTPROD[0].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[0].back.diffuse : STATE.LIGHTPROD[0].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[0].back.specular : STATE.LIGHTPROD[0].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[1].ambient : STATE.LIGHTPROD[1].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[1].diffuse : STATE.LIGHTPROD[1].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[1].specular : STATE.LIGHTPROD[1].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[1].front.ambient : STATE.LIGHTPROD[1].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[1].front.diffuse : STATE.LIGHTPROD[1].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[1].front.specular : STATE.LIGHTPROD[1].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[1].back.ambient : STATE.LIGHTPROD[1].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[1].back.diffuse : STATE.LIGHTPROD[1].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[1].back.specular : STATE.LIGHTPROD[1].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[2].ambient : STATE.LIGHTPROD[2].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[2].diffuse : STATE.LIGHTPROD[2].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[2].specular : STATE.LIGHTPROD[2].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[2].front.ambient : STATE.LIGHTPROD[2].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[2].front.diffuse : STATE.LIGHTPROD[2].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[2].front.specular : STATE.LIGHTPROD[2].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[2].back.ambient : STATE.LIGHTPROD[2].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[2].back.diffuse : STATE.LIGHTPROD[2].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[2].back.specular : STATE.LIGHTPROD[2].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[3].ambient : STATE.LIGHTPROD[3].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[3].diffuse : STATE.LIGHTPROD[3].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[3].specular : STATE.LIGHTPROD[3].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[3].front.ambient : STATE.LIGHTPROD[3].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[3].front.diffuse : STATE.LIGHTPROD[3].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[3].front.specular : STATE.LIGHTPROD[3].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[3].back.ambient : STATE.LIGHTPROD[3].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[3].back.diffuse : STATE.LIGHTPROD[3].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[3].back.specular : STATE.LIGHTPROD[3].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[4].ambient : STATE.LIGHTPROD[4].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[4].diffuse : STATE.LIGHTPROD[4].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[4].specular : STATE.LIGHTPROD[4].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[4].front.ambient : STATE.LIGHTPROD[4].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[4].front.diffuse : STATE.LIGHTPROD[4].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[4].front.specular : STATE.LIGHTPROD[4].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[4].back.ambient : STATE.LIGHTPROD[4].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[4].back.diffuse : STATE.LIGHTPROD[4].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[4].back.specular : STATE.LIGHTPROD[4].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[5].ambient : STATE.LIGHTPROD[5].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[5].diffuse : STATE.LIGHTPROD[5].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[5].specular : STATE.LIGHTPROD[5].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[5].front.ambient : STATE.LIGHTPROD[5].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[5].front.diffuse : STATE.LIGHTPROD[5].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[5].front.specular : STATE.LIGHTPROD[5].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[5].back.ambient : STATE.LIGHTPROD[5].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[5].back.diffuse : STATE.LIGHTPROD[5].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[5].back.specular : STATE.LIGHTPROD[5].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[6].ambient : STATE.LIGHTPROD[6].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[6].diffuse : STATE.LIGHTPROD[6].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[6].specular : STATE.LIGHTPROD[6].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[6].front.ambient : STATE.LIGHTPROD[6].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[6].front.diffuse : STATE.LIGHTPROD[6].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[6].front.specular : STATE.LIGHTPROD[6].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[6].back.ambient : STATE.LIGHTPROD[6].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[6].back.diffuse : STATE.LIGHTPROD[6].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[6].back.specular : STATE.LIGHTPROD[6].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[7].ambient : STATE.LIGHTPROD[7].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[7].diffuse : STATE.LIGHTPROD[7].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[7].specular : STATE.LIGHTPROD[7].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[7].front.ambient : STATE.LIGHTPROD[7].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[7].front.diffuse : STATE.LIGHTPROD[7].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[7].front.specular : STATE.LIGHTPROD[7].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[7].back.ambient : STATE.LIGHTPROD[7].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[7].back.diffuse : STATE.LIGHTPROD[7].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[7].back.specular : STATE.LIGHTPROD[7].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.texgen[0].eye.s : STATE.TEXGEN[0].EYE.S : : -1 : 0
+#var float4 glstate.texgen[0].eye.t : STATE.TEXGEN[0].EYE.T : : -1 : 0
+#var float4 glstate.texgen[0].eye.r : STATE.TEXGEN[0].EYE.R : : -1 : 0
+#var float4 glstate.texgen[0].eye.q : STATE.TEXGEN[0].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[0].object.s : STATE.TEXGEN[0].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[0].object.t : STATE.TEXGEN[0].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[0].object.r : STATE.TEXGEN[0].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[0].object.q : STATE.TEXGEN[0].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[1].eye.s : STATE.TEXGEN[1].EYE.S : : -1 : 0
+#var float4 glstate.texgen[1].eye.t : STATE.TEXGEN[1].EYE.T : : -1 : 0
+#var float4 glstate.texgen[1].eye.r : STATE.TEXGEN[1].EYE.R : : -1 : 0
+#var float4 glstate.texgen[1].eye.q : STATE.TEXGEN[1].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[1].object.s : STATE.TEXGEN[1].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[1].object.t : STATE.TEXGEN[1].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[1].object.r : STATE.TEXGEN[1].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[1].object.q : STATE.TEXGEN[1].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[2].eye.s : STATE.TEXGEN[2].EYE.S : : -1 : 0
+#var float4 glstate.texgen[2].eye.t : STATE.TEXGEN[2].EYE.T : : -1 : 0
+#var float4 glstate.texgen[2].eye.r : STATE.TEXGEN[2].EYE.R : : -1 : 0
+#var float4 glstate.texgen[2].eye.q : STATE.TEXGEN[2].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[2].object.s : STATE.TEXGEN[2].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[2].object.t : STATE.TEXGEN[2].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[2].object.r : STATE.TEXGEN[2].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[2].object.q : STATE.TEXGEN[2].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[3].eye.s : STATE.TEXGEN[3].EYE.S : : -1 : 0
+#var float4 glstate.texgen[3].eye.t : STATE.TEXGEN[3].EYE.T : : -1 : 0
+#var float4 glstate.texgen[3].eye.r : STATE.TEXGEN[3].EYE.R : : -1 : 0
+#var float4 glstate.texgen[3].eye.q : STATE.TEXGEN[3].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[3].object.s : STATE.TEXGEN[3].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[3].object.t : STATE.TEXGEN[3].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[3].object.r : STATE.TEXGEN[3].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[3].object.q : STATE.TEXGEN[3].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[4].eye.s : STATE.TEXGEN[4].EYE.S : : -1 : 0
+#var float4 glstate.texgen[4].eye.t : STATE.TEXGEN[4].EYE.T : : -1 : 0
+#var float4 glstate.texgen[4].eye.r : STATE.TEXGEN[4].EYE.R : : -1 : 0
+#var float4 glstate.texgen[4].eye.q : STATE.TEXGEN[4].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[4].object.s : STATE.TEXGEN[4].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[4].object.t : STATE.TEXGEN[4].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[4].object.r : STATE.TEXGEN[4].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[4].object.q : STATE.TEXGEN[4].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[5].eye.s : STATE.TEXGEN[5].EYE.S : : -1 : 0
+#var float4 glstate.texgen[5].eye.t : STATE.TEXGEN[5].EYE.T : : -1 : 0
+#var float4 glstate.texgen[5].eye.r : STATE.TEXGEN[5].EYE.R : : -1 : 0
+#var float4 glstate.texgen[5].eye.q : STATE.TEXGEN[5].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[5].object.s : STATE.TEXGEN[5].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[5].object.t : STATE.TEXGEN[5].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[5].object.r : STATE.TEXGEN[5].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[5].object.q : STATE.TEXGEN[5].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[6].eye.s : STATE.TEXGEN[6].EYE.S : : -1 : 0
+#var float4 glstate.texgen[6].eye.t : STATE.TEXGEN[6].EYE.T : : -1 : 0
+#var float4 glstate.texgen[6].eye.r : STATE.TEXGEN[6].EYE.R : : -1 : 0
+#var float4 glstate.texgen[6].eye.q : STATE.TEXGEN[6].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[6].object.s : STATE.TEXGEN[6].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[6].object.t : STATE.TEXGEN[6].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[6].object.r : STATE.TEXGEN[6].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[6].object.q : STATE.TEXGEN[6].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[7].eye.s : STATE.TEXGEN[7].EYE.S : : -1 : 0
+#var float4 glstate.texgen[7].eye.t : STATE.TEXGEN[7].EYE.T : : -1 : 0
+#var float4 glstate.texgen[7].eye.r : STATE.TEXGEN[7].EYE.R : : -1 : 0
+#var float4 glstate.texgen[7].eye.q : STATE.TEXGEN[7].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[7].object.s : STATE.TEXGEN[7].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[7].object.t : STATE.TEXGEN[7].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[7].object.r : STATE.TEXGEN[7].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[7].object.q : STATE.TEXGEN[7].OBJECT.Q : : -1 : 0
+#var float4 glstate.fog.color : STATE.FOG.COLOR : : -1 : 0
+#var float4 glstate.fog.params : STATE.FOG.PARAMS : : -1 : 0
+#var float4 glstate.clip[0].plane : STATE.CLIP[0].PLANE : : -1 : 0
+#var float4 glstate.clip[1].plane : STATE.CLIP[1].PLANE : : -1 : 0
+#var float4 glstate.clip[2].plane : STATE.CLIP[2].PLANE : : -1 : 0
+#var float4 glstate.clip[3].plane : STATE.CLIP[3].PLANE : : -1 : 0
+#var float4 glstate.clip[4].plane : STATE.CLIP[4].PLANE : : -1 : 0
+#var float4 glstate.clip[5].plane : STATE.CLIP[5].PLANE : : -1 : 0
+#var float4 glstate.clip[6].plane : STATE.CLIP[6].PLANE : : -1 : 0
+#var float4 glstate.clip[7].plane : STATE.CLIP[7].PLANE : : -1 : 0
+#var float glstate.point.size : STATE.POINT.SIZE : : -1 : 0
+#var float glstate.point.attenuation : STATE.POINT.ATTENUATION : : -1 : 0
+#var float4x4 glstate.matrix.modelview[0] : STATE.MATRIX.MODELVIEW[0] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[1] : STATE.MATRIX.MODELVIEW[1] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[2] : STATE.MATRIX.MODELVIEW[2] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[3] : STATE.MATRIX.MODELVIEW[3] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[4] : STATE.MATRIX.MODELVIEW[4] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[5] : STATE.MATRIX.MODELVIEW[5] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[6] : STATE.MATRIX.MODELVIEW[6] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[7] : STATE.MATRIX.MODELVIEW[7] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.projection : STATE.MATRIX.PROJECTION : , 4 : -1 : 0
+#var float4x4 glstate.matrix.mvp : STATE.MATRIX.MVP : c[0], 4 : -1 : 1
+#var float4x4 glstate.matrix.texture[0] : STATE.MATRIX.TEXTURE[0] : c[4], 4 : -1 : 1
+#var float4x4 glstate.matrix.texture[1] : STATE.MATRIX.TEXTURE[1] : c[8], 4 : -1 : 1
+#var float4x4 glstate.matrix.texture[2] : STATE.MATRIX.TEXTURE[2] : c[12], 4 : -1 : 1
+#var float4x4 glstate.matrix.texture[3] : STATE.MATRIX.TEXTURE[3] : c[16], 4 : -1 : 1
+#var float4x4 glstate.matrix.texture[4] : STATE.MATRIX.TEXTURE[4] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.texture[5] : STATE.MATRIX.TEXTURE[5] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.texture[6] : STATE.MATRIX.TEXTURE[6] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.texture[7] : STATE.MATRIX.TEXTURE[7] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[0] : STATE.MATRIX.PALETTE[0] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[1] : STATE.MATRIX.PALETTE[1] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[2] : STATE.MATRIX.PALETTE[2] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[3] : STATE.MATRIX.PALETTE[3] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[4] : STATE.MATRIX.PALETTE[4] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[5] : STATE.MATRIX.PALETTE[5] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[6] : STATE.MATRIX.PALETTE[6] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[7] : STATE.MATRIX.PALETTE[7] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[0] : STATE.MATRIX.PROGRAM[0] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[1] : STATE.MATRIX.PROGRAM[1] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[2] : STATE.MATRIX.PROGRAM[2] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[3] : STATE.MATRIX.PROGRAM[3] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[4] : STATE.MATRIX.PROGRAM[4] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[5] : STATE.MATRIX.PROGRAM[5] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[6] : STATE.MATRIX.PROGRAM[6] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[7] : STATE.MATRIX.PROGRAM[7] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[0] : STATE.MATRIX.MODELVIEW[0].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[1] : STATE.MATRIX.MODELVIEW[1].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[2] : STATE.MATRIX.MODELVIEW[2].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[3] : STATE.MATRIX.MODELVIEW[3].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[4] : STATE.MATRIX.MODELVIEW[4].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[5] : STATE.MATRIX.MODELVIEW[5].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[6] : STATE.MATRIX.MODELVIEW[6].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[7] : STATE.MATRIX.MODELVIEW[7].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.projection : STATE.MATRIX.PROJECTION.INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.mvp : STATE.MATRIX.MVP.INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[0] : STATE.MATRIX.TEXTURE[0].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[1] : STATE.MATRIX.TEXTURE[1].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[2] : STATE.MATRIX.TEXTURE[2].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[3] : STATE.MATRIX.TEXTURE[3].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[4] : STATE.MATRIX.TEXTURE[4].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[5] : STATE.MATRIX.TEXTURE[5].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[6] : STATE.MATRIX.TEXTURE[6].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[7] : STATE.MATRIX.TEXTURE[7].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[0] : STATE.MATRIX.PALETTE[0].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[1] : STATE.MATRIX.PALETTE[1].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[2] : STATE.MATRIX.PALETTE[2].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[3] : STATE.MATRIX.PALETTE[3].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[4] : STATE.MATRIX.PALETTE[4].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[5] : STATE.MATRIX.PALETTE[5].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[6] : STATE.MATRIX.PALETTE[6].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[7] : STATE.MATRIX.PALETTE[7].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[0] : STATE.MATRIX.PROGRAM[0].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[1] : STATE.MATRIX.PROGRAM[1].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[2] : STATE.MATRIX.PROGRAM[2].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[3] : STATE.MATRIX.PROGRAM[3].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[4] : STATE.MATRIX.PROGRAM[4].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[5] : STATE.MATRIX.PROGRAM[5].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[6] : STATE.MATRIX.PROGRAM[6].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[7] : STATE.MATRIX.PROGRAM[7].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[0] : STATE.MATRIX.MODELVIEW[0].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[1] : STATE.MATRIX.MODELVIEW[1].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[2] : STATE.MATRIX.MODELVIEW[2].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[3] : STATE.MATRIX.MODELVIEW[3].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[4] : STATE.MATRIX.MODELVIEW[4].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[5] : STATE.MATRIX.MODELVIEW[5].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[6] : STATE.MATRIX.MODELVIEW[6].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[7] : STATE.MATRIX.MODELVIEW[7].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.projection : STATE.MATRIX.PROJECTION.TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.mvp : STATE.MATRIX.MVP.TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[0] : STATE.MATRIX.TEXTURE[0].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[1] : STATE.MATRIX.TEXTURE[1].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[2] : STATE.MATRIX.TEXTURE[2].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[3] : STATE.MATRIX.TEXTURE[3].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[4] : STATE.MATRIX.TEXTURE[4].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[5] : STATE.MATRIX.TEXTURE[5].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[6] : STATE.MATRIX.TEXTURE[6].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[7] : STATE.MATRIX.TEXTURE[7].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[0] : STATE.MATRIX.PALETTE[0].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[1] : STATE.MATRIX.PALETTE[1].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[2] : STATE.MATRIX.PALETTE[2].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[3] : STATE.MATRIX.PALETTE[3].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[4] : STATE.MATRIX.PALETTE[4].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[5] : STATE.MATRIX.PALETTE[5].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[6] : STATE.MATRIX.PALETTE[6].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[7] : STATE.MATRIX.PALETTE[7].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[0] : STATE.MATRIX.PROGRAM[0].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[1] : STATE.MATRIX.PROGRAM[1].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[2] : STATE.MATRIX.PROGRAM[2].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[3] : STATE.MATRIX.PROGRAM[3].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[4] : STATE.MATRIX.PROGRAM[4].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[5] : STATE.MATRIX.PROGRAM[5].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[6] : STATE.MATRIX.PROGRAM[6].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[7] : STATE.MATRIX.PROGRAM[7].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[0] : STATE.MATRIX.MODELVIEW[0].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[1] : STATE.MATRIX.MODELVIEW[1].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[2] : STATE.MATRIX.MODELVIEW[2].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[3] : STATE.MATRIX.MODELVIEW[3].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[4] : STATE.MATRIX.MODELVIEW[4].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[5] : STATE.MATRIX.MODELVIEW[5].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[6] : STATE.MATRIX.MODELVIEW[6].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[7] : STATE.MATRIX.MODELVIEW[7].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.projection : STATE.MATRIX.PROJECTION.INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.mvp : STATE.MATRIX.MVP.INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[0] : STATE.MATRIX.TEXTURE[0].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[1] : STATE.MATRIX.TEXTURE[1].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[2] : STATE.MATRIX.TEXTURE[2].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[3] : STATE.MATRIX.TEXTURE[3].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[4] : STATE.MATRIX.TEXTURE[4].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[5] : STATE.MATRIX.TEXTURE[5].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[6] : STATE.MATRIX.TEXTURE[6].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[7] : STATE.MATRIX.TEXTURE[7].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[0] : STATE.MATRIX.PALETTE[0].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[1] : STATE.MATRIX.PALETTE[1].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[2] : STATE.MATRIX.PALETTE[2].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[3] : STATE.MATRIX.PALETTE[3].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[4] : STATE.MATRIX.PALETTE[4].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[5] : STATE.MATRIX.PALETTE[5].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[6] : STATE.MATRIX.PALETTE[6].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[7] : STATE.MATRIX.PALETTE[7].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[0] : STATE.MATRIX.PROGRAM[0].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[1] : STATE.MATRIX.PROGRAM[1].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[2] : STATE.MATRIX.PROGRAM[2].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[3] : STATE.MATRIX.PROGRAM[3].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[4] : STATE.MATRIX.PROGRAM[4].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[5] : STATE.MATRIX.PROGRAM[5].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[6] : STATE.MATRIX.PROGRAM[6].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[7] : STATE.MATRIX.PROGRAM[7].INVTRANS : , 4 : -1 : 0
+#var float4 IN.position : $vin.POSITION : POSITION : 0 : 1
+#var float4 IN.tex0 : $vin.ATTR8 : ATTR8 : 0 : 1
+#var float3 IN.tangent : $vin.ATTR9 : ATTR9 : 0 : 1
+#var float3 IN.binormal : $vin.ATTR10 : ATTR10 : 0 : 1
+#var float3 IN.normal : $vin.ATTR11 : ATTR11 : 0 : 1
+#var float4 main.hposition : $vout.HPOS : HPOS : -1 : 1
+#var float4 main.position : $vout.TEX0 : TEX0 : -1 : 1
+#var float4 main.tex_diffuse_bump : $vout.TEX1 : TEX1 : -1 : 1
+#var float4 main.tex_specular : $vout.TEX2 : TEX2 : -1 : 1
+#var float4 main.tex_atten_xy_z : $vout.TEX3 : TEX3 : -1 : 1
+#var float3 main.tangent : $vout.TEX4 : TEX4 : -1 : 1
+#var float3 main.binormal : $vout.TEX5 : TEX5 : -1 : 1
+#var float3 main.normal : $vout.TEX6 : TEX6 : -1 : 1
+PARAM c[20] = { state.matrix.mvp,
+ state.matrix.texture[0],
+ state.matrix.texture[1],
+ state.matrix.texture[2],
+ state.matrix.texture[3] };
+TEMP R0;
+DP4 result.position.w, vertex.position, c[3];
+DP4 result.position.z, vertex.position, c[2];
+DP4 result.position.y, vertex.position, c[1];
+DP4 result.position.x, vertex.position, c[0];
+DP4 R0.y, vertex.attrib[8], c[9];
+DP4 R0.x, vertex.attrib[8], c[8];
+MOV result.texcoord[0], vertex.position;
+MOV result.texcoord[1].zw, R0.xyxy;
+DP4 result.texcoord[1].y, vertex.attrib[8], c[5];
+DP4 result.texcoord[1].x, vertex.attrib[8], c[4];
+DP4 result.texcoord[2].w, vertex.attrib[8], c[15];
+DP4 result.texcoord[2].z, vertex.attrib[8], c[14];
+DP4 result.texcoord[2].y, vertex.attrib[8], c[13];
+DP4 result.texcoord[2].x, vertex.attrib[8], c[12];
+DP4 result.texcoord[3].w, vertex.position, c[19];
+DP4 result.texcoord[3].z, vertex.position, c[18];
+DP4 result.texcoord[3].y, vertex.position, c[17];
+DP4 result.texcoord[3].x, vertex.position, c[16];
+MOV result.texcoord[4].xyz, vertex.attrib[9];
+MOV result.texcoord[5].xyz, vertex.attrib[10];
+MOV result.texcoord[6].xyz, vertex.attrib[11];
+END
+# 21 instructions, 1 R-regs
--- /dev/null
+/// ============================================================================
+/*
+Copyright (C) 2004 Robert Beckebans <trebor_7@users.sourceforge.net>
+Please see the file "CONTRIBUTORS" for a list of contributors
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+/// ============================================================================
+
+attribute vec4 attr_TexCoord0;
+attribute vec3 attr_Tangent;
+attribute vec3 attr_Binormal;
+
+varying vec3 var_vertex;
+varying vec4 var_tex_diffuse_bump;
+varying vec2 var_tex_specular;
+varying vec4 var_tex_atten_xy_z;
+varying mat3 var_mat_os2ts;
+
+void main()
+{
+ // transform vertex position into homogenous clip-space
+ gl_Position = ftransform();
+
+ // assign position in object space
+ var_vertex = gl_Vertex.xyz;
+
+ // transform texcoords into diffusemap texture space
+ var_tex_diffuse_bump.st = (gl_TextureMatrix[0] * attr_TexCoord0).st;
+
+ // transform texcoords into bumpmap texture space
+ var_tex_diffuse_bump.pq = (gl_TextureMatrix[1] * attr_TexCoord0).st;
+
+ // transform texcoords into specularmap texture space
+ var_tex_specular = (gl_TextureMatrix[2] * attr_TexCoord0).st;
+
+ // calc light xy,z attenuation in light space
+ var_tex_atten_xy_z = gl_TextureMatrix[3] * gl_Vertex;
+
+
+ // construct object-space-to-tangent-space 3x3 matrix
+ var_mat_os2ts = mat3( attr_Tangent.x, attr_Binormal.x, gl_Normal.x,
+ attr_Tangent.y, attr_Binormal.y, gl_Normal.y,
+ attr_Tangent.z, attr_Binormal.z, gl_Normal.z );
+}
--- /dev/null
+/// ============================================================================
+/*
+Copyright (C) 2004 Robert Beckebans <trebor_7@users.sourceforge.net>
+Please see the file "AUTHORS" for a list of contributors
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+/// ============================================================================
+
+// fresnel approximation
+float fast_fresnel(float3 I, float3 N, float3 fresnel_values)
+{
+ float power = fresnel_values.x;
+ float scale = fresnel_values.y;
+ float bias = fresnel_values.z;
+
+ return bias + pow(1.0 - dot(I, N), power) * scale;
+}
+
+float3 CG_Expand(float3 v)
+{
+ return (v - 0.5) * 2; // expand a range-compressed vector
+}
--- /dev/null
+/// ============================================================================
+/*
+Copyright (C) 2003 Robert Beckebans <trebor_7@users.sourceforge.net>
+Copyright (C) 2003, 2004 contributors of the XreaL project
+Please see the file "AUTHORS" for a list of contributors
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+/// ============================================================================
+
+
+struct cg_vertex2fragment
+{
+ float4 position : POSITION;
+ float4 tex0 : TEXCOORD0;
+};
+
+struct cg_fragment2final
+{
+ float4 color : COLOR;
+};
+
+
+cg_fragment2final main(in cg_vertex2fragment IN,
+ uniform sampler2D colormap)
+{
+ cg_fragment2final OUT;
+
+ OUT.color.w = tex2D(colormap, IN.tex0.xy).a;
+
+ OUT.color.xyz = 0;
+
+ return OUT;
+}
--- /dev/null
+/// ============================================================================
+/*
+Copyright (C) 2003 Robert Beckebans <trebor_7@users.sourceforge.net>
+Copyright (C) 2003, 2004 contributors of the XreaL project
+Please see the file "AUTHORS" for a list of contributors
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+/// ============================================================================
+
+
+struct cg_app2vertex
+{
+ float4 position : ATTR0;
+ float4 texcoord0 : ATTR8;
+};
+
+struct cg_vertex2fragment
+{
+ float4 position : POSITION;
+ float4 tex0 : TEXCOORD0;
+};
+
+
+cg_vertex2fragment main(cg_app2vertex IN)
+{
+ cg_vertex2fragment OUT;
+
+ // transform vertex position into homogenous clip-space
+ OUT.position = mul(glstate.matrix.mvp, IN.position);
+
+ // transform texcoords into 1st texture space
+ OUT.tex0 = mul(glstate.matrix.texture[0], IN.texcoord0);
+
+ return OUT;
+}
--- /dev/null
+!!ARBfp1.0
+# cgc version 1.3.0001, build date Aug 4 2004 10:01:10
+# command line args: -profile arbfp1
+# source file: ..\..\setup\data\tools\gl\zfill_arbfp1.cg
+#vendor NVIDIA Corporation
+#version 1.0.02
+#profile arbfp1
+#program main
+#semantic main.colormap
+#var float4 IN.position : : : 0 : 0
+#var float4 IN.tex0 : $vin.TEX0 : TEX0 : 0 : 1
+#var sampler2D colormap : : texunit 0 : 1 : 1
+#var float4 main.color : $vout.COL : COL : -1 : 1
+#const c[0] = 0
+PARAM c[1] = { { 0 } };
+MOV result.color.xyz, c[0].x;
+TEX result.color.w, fragment.texcoord[0], texture[0], 2D;
+END
+# 2 instructions, 0 R-regs
--- /dev/null
+/// ============================================================================
+/*
+Copyright (C) 2004 Robert Beckebans <trebor_7@users.sourceforge.net>
+Please see the file "CONTRIBUTORS" for a list of contributors
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+/// ============================================================================
+
+uniform sampler2D u_colormap;
+
+void main()
+{
+ gl_FragColor.a = texture2D(u_colormap, gl_TexCoord[0].st).a;
+ gl_FragColor.rgb = vec3(0.0, 0.0, 0.0);
+}
--- /dev/null
+!!ARBvp1.0
+# cgc version 1.3.0001, build date Aug 4 2004 10:01:10
+# command line args: -profile arbvp1
+# source file: ..\..\setup\data\tools\gl\zfill_arbvp1.cg
+#vendor NVIDIA Corporation
+#version 1.0.02
+#profile arbvp1
+#program main
+#semantic glstate : STATE
+#var float4 glstate.material.ambient : STATE.MATERIAL.AMBIENT : : -1 : 0
+#var float4 glstate.material.diffuse : STATE.MATERIAL.DIFFUSE : : -1 : 0
+#var float4 glstate.material.specular : STATE.MATERIAL.SPECULAR : : -1 : 0
+#var float4 glstate.material.emission : STATE.MATERIAL.EMISSION : : -1 : 0
+#var float4 glstate.material.shininess : STATE.MATERIAL.SHININESS : : -1 : 0
+#var float4 glstate.material.front.ambient : STATE.MATERIAL.FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.material.front.diffuse : STATE.MATERIAL.FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.material.front.specular : STATE.MATERIAL.FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.material.front.emission : STATE.MATERIAL.FRONT.EMISSION : : -1 : 0
+#var float4 glstate.material.front.shininess : STATE.MATERIAL.FRONT.SHININESS : : -1 : 0
+#var float4 glstate.material.back.ambient : STATE.MATERIAL.BACK.AMBIENT : : -1 : 0
+#var float4 glstate.material.back.diffuse : STATE.MATERIAL.BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.material.back.specular : STATE.MATERIAL.BACK.SPECULAR : : -1 : 0
+#var float4 glstate.material.back.emission : STATE.MATERIAL.BACK.EMISSION : : -1 : 0
+#var float4 glstate.material.back.shininess : STATE.MATERIAL.BACK.SHININESS : : -1 : 0
+#var float4 glstate.light[0].ambient : STATE.LIGHT[0].AMBIENT : : -1 : 0
+#var float4 glstate.light[0].diffuse : STATE.LIGHT[0].DIFFUSE : : -1 : 0
+#var float4 glstate.light[0].specular : STATE.LIGHT[0].SPECULAR : : -1 : 0
+#var float4 glstate.light[0].position : STATE.LIGHT[0].POSITION : : -1 : 0
+#var float4 glstate.light[0].attenuation : STATE.LIGHT[0].ATTENUATION : : -1 : 0
+#var float4 glstate.light[0].spot.direction : STATE.LIGHT[0].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[0].half : STATE.LIGHT[0].HALF : : -1 : 0
+#var float4 glstate.light[1].ambient : STATE.LIGHT[1].AMBIENT : : -1 : 0
+#var float4 glstate.light[1].diffuse : STATE.LIGHT[1].DIFFUSE : : -1 : 0
+#var float4 glstate.light[1].specular : STATE.LIGHT[1].SPECULAR : : -1 : 0
+#var float4 glstate.light[1].position : STATE.LIGHT[1].POSITION : : -1 : 0
+#var float4 glstate.light[1].attenuation : STATE.LIGHT[1].ATTENUATION : : -1 : 0
+#var float4 glstate.light[1].spot.direction : STATE.LIGHT[1].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[1].half : STATE.LIGHT[1].HALF : : -1 : 0
+#var float4 glstate.light[2].ambient : STATE.LIGHT[2].AMBIENT : : -1 : 0
+#var float4 glstate.light[2].diffuse : STATE.LIGHT[2].DIFFUSE : : -1 : 0
+#var float4 glstate.light[2].specular : STATE.LIGHT[2].SPECULAR : : -1 : 0
+#var float4 glstate.light[2].position : STATE.LIGHT[2].POSITION : : -1 : 0
+#var float4 glstate.light[2].attenuation : STATE.LIGHT[2].ATTENUATION : : -1 : 0
+#var float4 glstate.light[2].spot.direction : STATE.LIGHT[2].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[2].half : STATE.LIGHT[2].HALF : : -1 : 0
+#var float4 glstate.light[3].ambient : STATE.LIGHT[3].AMBIENT : : -1 : 0
+#var float4 glstate.light[3].diffuse : STATE.LIGHT[3].DIFFUSE : : -1 : 0
+#var float4 glstate.light[3].specular : STATE.LIGHT[3].SPECULAR : : -1 : 0
+#var float4 glstate.light[3].position : STATE.LIGHT[3].POSITION : : -1 : 0
+#var float4 glstate.light[3].attenuation : STATE.LIGHT[3].ATTENUATION : : -1 : 0
+#var float4 glstate.light[3].spot.direction : STATE.LIGHT[3].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[3].half : STATE.LIGHT[3].HALF : : -1 : 0
+#var float4 glstate.light[4].ambient : STATE.LIGHT[4].AMBIENT : : -1 : 0
+#var float4 glstate.light[4].diffuse : STATE.LIGHT[4].DIFFUSE : : -1 : 0
+#var float4 glstate.light[4].specular : STATE.LIGHT[4].SPECULAR : : -1 : 0
+#var float4 glstate.light[4].position : STATE.LIGHT[4].POSITION : : -1 : 0
+#var float4 glstate.light[4].attenuation : STATE.LIGHT[4].ATTENUATION : : -1 : 0
+#var float4 glstate.light[4].spot.direction : STATE.LIGHT[4].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[4].half : STATE.LIGHT[4].HALF : : -1 : 0
+#var float4 glstate.light[5].ambient : STATE.LIGHT[5].AMBIENT : : -1 : 0
+#var float4 glstate.light[5].diffuse : STATE.LIGHT[5].DIFFUSE : : -1 : 0
+#var float4 glstate.light[5].specular : STATE.LIGHT[5].SPECULAR : : -1 : 0
+#var float4 glstate.light[5].position : STATE.LIGHT[5].POSITION : : -1 : 0
+#var float4 glstate.light[5].attenuation : STATE.LIGHT[5].ATTENUATION : : -1 : 0
+#var float4 glstate.light[5].spot.direction : STATE.LIGHT[5].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[5].half : STATE.LIGHT[5].HALF : : -1 : 0
+#var float4 glstate.light[6].ambient : STATE.LIGHT[6].AMBIENT : : -1 : 0
+#var float4 glstate.light[6].diffuse : STATE.LIGHT[6].DIFFUSE : : -1 : 0
+#var float4 glstate.light[6].specular : STATE.LIGHT[6].SPECULAR : : -1 : 0
+#var float4 glstate.light[6].position : STATE.LIGHT[6].POSITION : : -1 : 0
+#var float4 glstate.light[6].attenuation : STATE.LIGHT[6].ATTENUATION : : -1 : 0
+#var float4 glstate.light[6].spot.direction : STATE.LIGHT[6].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[6].half : STATE.LIGHT[6].HALF : : -1 : 0
+#var float4 glstate.light[7].ambient : STATE.LIGHT[7].AMBIENT : : -1 : 0
+#var float4 glstate.light[7].diffuse : STATE.LIGHT[7].DIFFUSE : : -1 : 0
+#var float4 glstate.light[7].specular : STATE.LIGHT[7].SPECULAR : : -1 : 0
+#var float4 glstate.light[7].position : STATE.LIGHT[7].POSITION : : -1 : 0
+#var float4 glstate.light[7].attenuation : STATE.LIGHT[7].ATTENUATION : : -1 : 0
+#var float4 glstate.light[7].spot.direction : STATE.LIGHT[7].SPOT.DIRECTION : : -1 : 0
+#var float4 glstate.light[7].half : STATE.LIGHT[7].HALF : : -1 : 0
+#var float4 glstate.lightmodel.ambient : STATE.LIGHTMODEL.AMBIENT : : -1 : 0
+#var float4 glstate.lightmodel.scenecolor : STATE.LIGHTMODEL.SCENECOLOR : : -1 : 0
+#var float4 glstate.lightmodel.front.scenecolor : STATE.LIGHTMODEL.FRONT.SCENECOLOR : : -1 : 0
+#var float4 glstate.lightmodel.back.scenecolor : STATE.LIGHTMODEL.BACK.SCENECOLOR : : -1 : 0
+#var float4 glstate.lightprod[0].ambient : STATE.LIGHTPROD[0].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[0].diffuse : STATE.LIGHTPROD[0].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[0].specular : STATE.LIGHTPROD[0].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[0].front.ambient : STATE.LIGHTPROD[0].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[0].front.diffuse : STATE.LIGHTPROD[0].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[0].front.specular : STATE.LIGHTPROD[0].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[0].back.ambient : STATE.LIGHTPROD[0].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[0].back.diffuse : STATE.LIGHTPROD[0].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[0].back.specular : STATE.LIGHTPROD[0].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[1].ambient : STATE.LIGHTPROD[1].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[1].diffuse : STATE.LIGHTPROD[1].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[1].specular : STATE.LIGHTPROD[1].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[1].front.ambient : STATE.LIGHTPROD[1].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[1].front.diffuse : STATE.LIGHTPROD[1].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[1].front.specular : STATE.LIGHTPROD[1].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[1].back.ambient : STATE.LIGHTPROD[1].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[1].back.diffuse : STATE.LIGHTPROD[1].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[1].back.specular : STATE.LIGHTPROD[1].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[2].ambient : STATE.LIGHTPROD[2].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[2].diffuse : STATE.LIGHTPROD[2].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[2].specular : STATE.LIGHTPROD[2].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[2].front.ambient : STATE.LIGHTPROD[2].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[2].front.diffuse : STATE.LIGHTPROD[2].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[2].front.specular : STATE.LIGHTPROD[2].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[2].back.ambient : STATE.LIGHTPROD[2].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[2].back.diffuse : STATE.LIGHTPROD[2].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[2].back.specular : STATE.LIGHTPROD[2].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[3].ambient : STATE.LIGHTPROD[3].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[3].diffuse : STATE.LIGHTPROD[3].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[3].specular : STATE.LIGHTPROD[3].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[3].front.ambient : STATE.LIGHTPROD[3].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[3].front.diffuse : STATE.LIGHTPROD[3].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[3].front.specular : STATE.LIGHTPROD[3].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[3].back.ambient : STATE.LIGHTPROD[3].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[3].back.diffuse : STATE.LIGHTPROD[3].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[3].back.specular : STATE.LIGHTPROD[3].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[4].ambient : STATE.LIGHTPROD[4].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[4].diffuse : STATE.LIGHTPROD[4].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[4].specular : STATE.LIGHTPROD[4].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[4].front.ambient : STATE.LIGHTPROD[4].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[4].front.diffuse : STATE.LIGHTPROD[4].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[4].front.specular : STATE.LIGHTPROD[4].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[4].back.ambient : STATE.LIGHTPROD[4].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[4].back.diffuse : STATE.LIGHTPROD[4].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[4].back.specular : STATE.LIGHTPROD[4].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[5].ambient : STATE.LIGHTPROD[5].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[5].diffuse : STATE.LIGHTPROD[5].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[5].specular : STATE.LIGHTPROD[5].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[5].front.ambient : STATE.LIGHTPROD[5].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[5].front.diffuse : STATE.LIGHTPROD[5].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[5].front.specular : STATE.LIGHTPROD[5].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[5].back.ambient : STATE.LIGHTPROD[5].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[5].back.diffuse : STATE.LIGHTPROD[5].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[5].back.specular : STATE.LIGHTPROD[5].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[6].ambient : STATE.LIGHTPROD[6].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[6].diffuse : STATE.LIGHTPROD[6].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[6].specular : STATE.LIGHTPROD[6].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[6].front.ambient : STATE.LIGHTPROD[6].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[6].front.diffuse : STATE.LIGHTPROD[6].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[6].front.specular : STATE.LIGHTPROD[6].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[6].back.ambient : STATE.LIGHTPROD[6].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[6].back.diffuse : STATE.LIGHTPROD[6].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[6].back.specular : STATE.LIGHTPROD[6].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[7].ambient : STATE.LIGHTPROD[7].AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[7].diffuse : STATE.LIGHTPROD[7].DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[7].specular : STATE.LIGHTPROD[7].SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[7].front.ambient : STATE.LIGHTPROD[7].FRONT.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[7].front.diffuse : STATE.LIGHTPROD[7].FRONT.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[7].front.specular : STATE.LIGHTPROD[7].FRONT.SPECULAR : : -1 : 0
+#var float4 glstate.lightprod[7].back.ambient : STATE.LIGHTPROD[7].BACK.AMBIENT : : -1 : 0
+#var float4 glstate.lightprod[7].back.diffuse : STATE.LIGHTPROD[7].BACK.DIFFUSE : : -1 : 0
+#var float4 glstate.lightprod[7].back.specular : STATE.LIGHTPROD[7].BACK.SPECULAR : : -1 : 0
+#var float4 glstate.texgen[0].eye.s : STATE.TEXGEN[0].EYE.S : : -1 : 0
+#var float4 glstate.texgen[0].eye.t : STATE.TEXGEN[0].EYE.T : : -1 : 0
+#var float4 glstate.texgen[0].eye.r : STATE.TEXGEN[0].EYE.R : : -1 : 0
+#var float4 glstate.texgen[0].eye.q : STATE.TEXGEN[0].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[0].object.s : STATE.TEXGEN[0].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[0].object.t : STATE.TEXGEN[0].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[0].object.r : STATE.TEXGEN[0].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[0].object.q : STATE.TEXGEN[0].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[1].eye.s : STATE.TEXGEN[1].EYE.S : : -1 : 0
+#var float4 glstate.texgen[1].eye.t : STATE.TEXGEN[1].EYE.T : : -1 : 0
+#var float4 glstate.texgen[1].eye.r : STATE.TEXGEN[1].EYE.R : : -1 : 0
+#var float4 glstate.texgen[1].eye.q : STATE.TEXGEN[1].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[1].object.s : STATE.TEXGEN[1].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[1].object.t : STATE.TEXGEN[1].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[1].object.r : STATE.TEXGEN[1].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[1].object.q : STATE.TEXGEN[1].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[2].eye.s : STATE.TEXGEN[2].EYE.S : : -1 : 0
+#var float4 glstate.texgen[2].eye.t : STATE.TEXGEN[2].EYE.T : : -1 : 0
+#var float4 glstate.texgen[2].eye.r : STATE.TEXGEN[2].EYE.R : : -1 : 0
+#var float4 glstate.texgen[2].eye.q : STATE.TEXGEN[2].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[2].object.s : STATE.TEXGEN[2].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[2].object.t : STATE.TEXGEN[2].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[2].object.r : STATE.TEXGEN[2].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[2].object.q : STATE.TEXGEN[2].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[3].eye.s : STATE.TEXGEN[3].EYE.S : : -1 : 0
+#var float4 glstate.texgen[3].eye.t : STATE.TEXGEN[3].EYE.T : : -1 : 0
+#var float4 glstate.texgen[3].eye.r : STATE.TEXGEN[3].EYE.R : : -1 : 0
+#var float4 glstate.texgen[3].eye.q : STATE.TEXGEN[3].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[3].object.s : STATE.TEXGEN[3].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[3].object.t : STATE.TEXGEN[3].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[3].object.r : STATE.TEXGEN[3].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[3].object.q : STATE.TEXGEN[3].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[4].eye.s : STATE.TEXGEN[4].EYE.S : : -1 : 0
+#var float4 glstate.texgen[4].eye.t : STATE.TEXGEN[4].EYE.T : : -1 : 0
+#var float4 glstate.texgen[4].eye.r : STATE.TEXGEN[4].EYE.R : : -1 : 0
+#var float4 glstate.texgen[4].eye.q : STATE.TEXGEN[4].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[4].object.s : STATE.TEXGEN[4].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[4].object.t : STATE.TEXGEN[4].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[4].object.r : STATE.TEXGEN[4].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[4].object.q : STATE.TEXGEN[4].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[5].eye.s : STATE.TEXGEN[5].EYE.S : : -1 : 0
+#var float4 glstate.texgen[5].eye.t : STATE.TEXGEN[5].EYE.T : : -1 : 0
+#var float4 glstate.texgen[5].eye.r : STATE.TEXGEN[5].EYE.R : : -1 : 0
+#var float4 glstate.texgen[5].eye.q : STATE.TEXGEN[5].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[5].object.s : STATE.TEXGEN[5].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[5].object.t : STATE.TEXGEN[5].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[5].object.r : STATE.TEXGEN[5].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[5].object.q : STATE.TEXGEN[5].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[6].eye.s : STATE.TEXGEN[6].EYE.S : : -1 : 0
+#var float4 glstate.texgen[6].eye.t : STATE.TEXGEN[6].EYE.T : : -1 : 0
+#var float4 glstate.texgen[6].eye.r : STATE.TEXGEN[6].EYE.R : : -1 : 0
+#var float4 glstate.texgen[6].eye.q : STATE.TEXGEN[6].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[6].object.s : STATE.TEXGEN[6].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[6].object.t : STATE.TEXGEN[6].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[6].object.r : STATE.TEXGEN[6].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[6].object.q : STATE.TEXGEN[6].OBJECT.Q : : -1 : 0
+#var float4 glstate.texgen[7].eye.s : STATE.TEXGEN[7].EYE.S : : -1 : 0
+#var float4 glstate.texgen[7].eye.t : STATE.TEXGEN[7].EYE.T : : -1 : 0
+#var float4 glstate.texgen[7].eye.r : STATE.TEXGEN[7].EYE.R : : -1 : 0
+#var float4 glstate.texgen[7].eye.q : STATE.TEXGEN[7].EYE.Q : : -1 : 0
+#var float4 glstate.texgen[7].object.s : STATE.TEXGEN[7].OBJECT.S : : -1 : 0
+#var float4 glstate.texgen[7].object.t : STATE.TEXGEN[7].OBJECT.T : : -1 : 0
+#var float4 glstate.texgen[7].object.r : STATE.TEXGEN[7].OBJECT.R : : -1 : 0
+#var float4 glstate.texgen[7].object.q : STATE.TEXGEN[7].OBJECT.Q : : -1 : 0
+#var float4 glstate.fog.color : STATE.FOG.COLOR : : -1 : 0
+#var float4 glstate.fog.params : STATE.FOG.PARAMS : : -1 : 0
+#var float4 glstate.clip[0].plane : STATE.CLIP[0].PLANE : : -1 : 0
+#var float4 glstate.clip[1].plane : STATE.CLIP[1].PLANE : : -1 : 0
+#var float4 glstate.clip[2].plane : STATE.CLIP[2].PLANE : : -1 : 0
+#var float4 glstate.clip[3].plane : STATE.CLIP[3].PLANE : : -1 : 0
+#var float4 glstate.clip[4].plane : STATE.CLIP[4].PLANE : : -1 : 0
+#var float4 glstate.clip[5].plane : STATE.CLIP[5].PLANE : : -1 : 0
+#var float4 glstate.clip[6].plane : STATE.CLIP[6].PLANE : : -1 : 0
+#var float4 glstate.clip[7].plane : STATE.CLIP[7].PLANE : : -1 : 0
+#var float glstate.point.size : STATE.POINT.SIZE : : -1 : 0
+#var float glstate.point.attenuation : STATE.POINT.ATTENUATION : : -1 : 0
+#var float4x4 glstate.matrix.modelview[0] : STATE.MATRIX.MODELVIEW[0] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[1] : STATE.MATRIX.MODELVIEW[1] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[2] : STATE.MATRIX.MODELVIEW[2] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[3] : STATE.MATRIX.MODELVIEW[3] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[4] : STATE.MATRIX.MODELVIEW[4] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[5] : STATE.MATRIX.MODELVIEW[5] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[6] : STATE.MATRIX.MODELVIEW[6] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.modelview[7] : STATE.MATRIX.MODELVIEW[7] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.projection : STATE.MATRIX.PROJECTION : , 4 : -1 : 0
+#var float4x4 glstate.matrix.mvp : STATE.MATRIX.MVP : c[0], 4 : -1 : 1
+#var float4x4 glstate.matrix.texture[0] : STATE.MATRIX.TEXTURE[0] : c[4], 4 : -1 : 1
+#var float4x4 glstate.matrix.texture[1] : STATE.MATRIX.TEXTURE[1] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.texture[2] : STATE.MATRIX.TEXTURE[2] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.texture[3] : STATE.MATRIX.TEXTURE[3] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.texture[4] : STATE.MATRIX.TEXTURE[4] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.texture[5] : STATE.MATRIX.TEXTURE[5] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.texture[6] : STATE.MATRIX.TEXTURE[6] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.texture[7] : STATE.MATRIX.TEXTURE[7] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[0] : STATE.MATRIX.PALETTE[0] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[1] : STATE.MATRIX.PALETTE[1] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[2] : STATE.MATRIX.PALETTE[2] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[3] : STATE.MATRIX.PALETTE[3] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[4] : STATE.MATRIX.PALETTE[4] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[5] : STATE.MATRIX.PALETTE[5] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[6] : STATE.MATRIX.PALETTE[6] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.palette[7] : STATE.MATRIX.PALETTE[7] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[0] : STATE.MATRIX.PROGRAM[0] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[1] : STATE.MATRIX.PROGRAM[1] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[2] : STATE.MATRIX.PROGRAM[2] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[3] : STATE.MATRIX.PROGRAM[3] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[4] : STATE.MATRIX.PROGRAM[4] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[5] : STATE.MATRIX.PROGRAM[5] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[6] : STATE.MATRIX.PROGRAM[6] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.program[7] : STATE.MATRIX.PROGRAM[7] : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[0] : STATE.MATRIX.MODELVIEW[0].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[1] : STATE.MATRIX.MODELVIEW[1].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[2] : STATE.MATRIX.MODELVIEW[2].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[3] : STATE.MATRIX.MODELVIEW[3].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[4] : STATE.MATRIX.MODELVIEW[4].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[5] : STATE.MATRIX.MODELVIEW[5].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[6] : STATE.MATRIX.MODELVIEW[6].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.modelview[7] : STATE.MATRIX.MODELVIEW[7].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.projection : STATE.MATRIX.PROJECTION.INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.mvp : STATE.MATRIX.MVP.INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[0] : STATE.MATRIX.TEXTURE[0].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[1] : STATE.MATRIX.TEXTURE[1].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[2] : STATE.MATRIX.TEXTURE[2].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[3] : STATE.MATRIX.TEXTURE[3].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[4] : STATE.MATRIX.TEXTURE[4].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[5] : STATE.MATRIX.TEXTURE[5].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[6] : STATE.MATRIX.TEXTURE[6].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.texture[7] : STATE.MATRIX.TEXTURE[7].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[0] : STATE.MATRIX.PALETTE[0].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[1] : STATE.MATRIX.PALETTE[1].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[2] : STATE.MATRIX.PALETTE[2].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[3] : STATE.MATRIX.PALETTE[3].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[4] : STATE.MATRIX.PALETTE[4].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[5] : STATE.MATRIX.PALETTE[5].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[6] : STATE.MATRIX.PALETTE[6].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.palette[7] : STATE.MATRIX.PALETTE[7].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[0] : STATE.MATRIX.PROGRAM[0].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[1] : STATE.MATRIX.PROGRAM[1].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[2] : STATE.MATRIX.PROGRAM[2].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[3] : STATE.MATRIX.PROGRAM[3].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[4] : STATE.MATRIX.PROGRAM[4].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[5] : STATE.MATRIX.PROGRAM[5].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[6] : STATE.MATRIX.PROGRAM[6].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.inverse.program[7] : STATE.MATRIX.PROGRAM[7].INVERSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[0] : STATE.MATRIX.MODELVIEW[0].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[1] : STATE.MATRIX.MODELVIEW[1].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[2] : STATE.MATRIX.MODELVIEW[2].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[3] : STATE.MATRIX.MODELVIEW[3].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[4] : STATE.MATRIX.MODELVIEW[4].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[5] : STATE.MATRIX.MODELVIEW[5].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[6] : STATE.MATRIX.MODELVIEW[6].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.modelview[7] : STATE.MATRIX.MODELVIEW[7].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.projection : STATE.MATRIX.PROJECTION.TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.mvp : STATE.MATRIX.MVP.TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[0] : STATE.MATRIX.TEXTURE[0].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[1] : STATE.MATRIX.TEXTURE[1].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[2] : STATE.MATRIX.TEXTURE[2].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[3] : STATE.MATRIX.TEXTURE[3].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[4] : STATE.MATRIX.TEXTURE[4].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[5] : STATE.MATRIX.TEXTURE[5].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[6] : STATE.MATRIX.TEXTURE[6].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.texture[7] : STATE.MATRIX.TEXTURE[7].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[0] : STATE.MATRIX.PALETTE[0].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[1] : STATE.MATRIX.PALETTE[1].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[2] : STATE.MATRIX.PALETTE[2].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[3] : STATE.MATRIX.PALETTE[3].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[4] : STATE.MATRIX.PALETTE[4].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[5] : STATE.MATRIX.PALETTE[5].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[6] : STATE.MATRIX.PALETTE[6].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.palette[7] : STATE.MATRIX.PALETTE[7].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[0] : STATE.MATRIX.PROGRAM[0].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[1] : STATE.MATRIX.PROGRAM[1].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[2] : STATE.MATRIX.PROGRAM[2].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[3] : STATE.MATRIX.PROGRAM[3].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[4] : STATE.MATRIX.PROGRAM[4].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[5] : STATE.MATRIX.PROGRAM[5].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[6] : STATE.MATRIX.PROGRAM[6].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.transpose.program[7] : STATE.MATRIX.PROGRAM[7].TRANSPOSE : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[0] : STATE.MATRIX.MODELVIEW[0].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[1] : STATE.MATRIX.MODELVIEW[1].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[2] : STATE.MATRIX.MODELVIEW[2].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[3] : STATE.MATRIX.MODELVIEW[3].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[4] : STATE.MATRIX.MODELVIEW[4].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[5] : STATE.MATRIX.MODELVIEW[5].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[6] : STATE.MATRIX.MODELVIEW[6].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.modelview[7] : STATE.MATRIX.MODELVIEW[7].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.projection : STATE.MATRIX.PROJECTION.INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.mvp : STATE.MATRIX.MVP.INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[0] : STATE.MATRIX.TEXTURE[0].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[1] : STATE.MATRIX.TEXTURE[1].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[2] : STATE.MATRIX.TEXTURE[2].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[3] : STATE.MATRIX.TEXTURE[3].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[4] : STATE.MATRIX.TEXTURE[4].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[5] : STATE.MATRIX.TEXTURE[5].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[6] : STATE.MATRIX.TEXTURE[6].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.texture[7] : STATE.MATRIX.TEXTURE[7].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[0] : STATE.MATRIX.PALETTE[0].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[1] : STATE.MATRIX.PALETTE[1].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[2] : STATE.MATRIX.PALETTE[2].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[3] : STATE.MATRIX.PALETTE[3].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[4] : STATE.MATRIX.PALETTE[4].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[5] : STATE.MATRIX.PALETTE[5].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[6] : STATE.MATRIX.PALETTE[6].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.palette[7] : STATE.MATRIX.PALETTE[7].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[0] : STATE.MATRIX.PROGRAM[0].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[1] : STATE.MATRIX.PROGRAM[1].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[2] : STATE.MATRIX.PROGRAM[2].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[3] : STATE.MATRIX.PROGRAM[3].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[4] : STATE.MATRIX.PROGRAM[4].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[5] : STATE.MATRIX.PROGRAM[5].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[6] : STATE.MATRIX.PROGRAM[6].INVTRANS : , 4 : -1 : 0
+#var float4x4 glstate.matrix.invtrans.program[7] : STATE.MATRIX.PROGRAM[7].INVTRANS : , 4 : -1 : 0
+#var float4 IN.position : $vin.ATTR0 : ATTR0 : 0 : 1
+#var float4 IN.texcoord0 : $vin.ATTR8 : ATTR8 : 0 : 1
+#var float4 main.position : $vout.HPOS : HPOS : -1 : 1
+#var float4 main.tex0 : $vout.TEX0 : TEX0 : -1 : 1
+PARAM c[8] = { state.matrix.mvp,
+ state.matrix.texture[0] };
+DP4 result.position.w, vertex.attrib[0], c[3];
+DP4 result.position.z, vertex.attrib[0], c[2];
+DP4 result.position.y, vertex.attrib[0], c[1];
+DP4 result.position.x, vertex.attrib[0], c[0];
+DP4 result.texcoord[0].w, vertex.attrib[8], c[7];
+DP4 result.texcoord[0].z, vertex.attrib[8], c[6];
+DP4 result.texcoord[0].y, vertex.attrib[8], c[5];
+DP4 result.texcoord[0].x, vertex.attrib[8], c[4];
+END
+# 8 instructions, 0 R-regs
--- /dev/null
+/// ============================================================================
+/*
+Copyright (C) 2004 Robert Beckebans <trebor_7@users.sourceforge.net>
+Please see the file "CONTRIBUTORS" for a list of contributors
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+/// ============================================================================
+
+attribute vec4 attr_TexCoord0;
+
+void main()
+{
+ // transform vertex position into homogenous clip-space
+ gl_Position = ftransform();
+
+ // transform texcoords
+ gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+
+ // assign color
+ gl_FrontColor = gl_Color;
+}
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
+<!-- generated by Radiant setup, modify at your own risks -->
+<links>
+<item name="Web Links & Misc" url="links.htm"/>
+<item name="GtkRadiant Bugzilla - Report Bug" url="http://zerowing.idsoftware.com/bugzilla/index.cgi"/>
+<item name="q3map2 handbook (web)" url="http://shaderlab.com/q3map2/manual/default.htm"/>
+<item name="ETB documentation (web)" url="http://www.map-craft.com/modules.php?name=ETB"/>
+<item name="ChangeLog" url="changelog.txt"/>
+<item name="Q3Map2 ChangeLog" url="changelog.q3map2.txt"/>
+<item name="Credits" url="credits.html"/>
+</links>
--- /dev/null
+common/areaportal\r
+common/clip\r
+common/clusterportal\r
+common/cushion\r
+common/donotenter\r
+common/full_clip\r
+common/hint\r
+common/missileclip\r
+common/nodraw\r
+common/nodrawnonsolid\r
+common/nodrop\r
+common/noimpact\r
+common/origin\r
+common/trigger\r
+common/weapclip\r
+liquid\r
+fog
\ No newline at end of file
--- /dev/null
+base_support/support1rust\r
+base_support/support1shiny\r
+base_support/support2rust\r
+base_support/wplat1_1\r
+base_support/plate2_5
\ No newline at end of file
--- /dev/null
+base_door/shinymetaldoor\r
+base_door/shinymetaldoor_outside\r
+gothic_door/door02_bred\r
+gothic_door/door02_bred2_shiny\r
+gothic_door/door02_eblue2_shiny\r
+gothic_door/door02_i_ornate5_fin\r
+gothic_door/door02_j\r
+gothic_door/door02_j3\r
+gothic_door/door02_j4\r
+gothic_door/door02_k2b
\ No newline at end of file
--- /dev/null
+{\r
+ "entity" "misc_model"\r
+\r
+ "offset" "-16"\r
+\r
+ "model" "models/mapobjects/trees_sd/tree_a.md3"\r
+ "model" "models/mapobjects/trees_sd/tree_b.md3"\r
+ "model" "models/mapobjects/trees_sd/tree_c.md3"\r
+ "model" "models/mapobjects/trees_sd/tree_d.md3"\r
+\r
+ "pitch" "-5" "5"\r
+ "yaw" "0" "360"\r
+ "scale" "1" "1.3"\r
+}
\ No newline at end of file
--- /dev/null
+$aseconvert models/mapobjects/spotlamp/spotlamp_x.ase
+$exit
+
+
+$aseconvert models/weapons2/machinegun/machinegun.ase -weapon
+$aseconvert models/weapons2/bfg/bfg.ase -weapon
+$aseconvert models/weapons2/railgun/railgun.ase -weapon
+$aseconvert models/weapons2/shotgun/shotgun.ase -weapon
+
+$aseconvert models/weapons2/meshes/chaingun.ase -weapon
+$aseconvert models/weapons2/meshes/flamethrower.ase -weapon
+$aseconvert models/weapons2/meshes/grapple.ase -weapon
+$aseconvert models/weapons2/meshes/grenadel.ase -weapon
+$aseconvert models/weapons2/meshes/lightning.ase -weapon
+$aseconvert models/weapons2/meshes/plasma.ase -weapon
+$aseconvert models/weapons2/meshes/railgun.ase -weapon
+$aseconvert models/weapons2/meshes/ricochet.ase -weapon
+$aseconvert models/weapons2/meshes/rocketl.ase -weapon
+$aseconvert models/weapons2/meshes/shotgun.ase -weapon
+
+
+$aseconvert models/mapobjects/chain1.ase
+$aseconvert models/mapobjects/chain2.ase
+$aseconvert models/mapobjects/chain3.ase
+$aseconvert models/mapobjects/chain4.ase
+
+$exit
+
+$aseanimconvert models/players/light/bandolier/bandolier.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/light/brandon/4brandon.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/light/cash/4cash.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/light/doom/doom.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/light/shauna/shauna.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/medium/tim/4tim.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/medium/visor/4visor.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/medium/xian/4xian.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/medium/carmack/carmack.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/heavy/paulj/4paulj.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/heavy/brock/brock.ase -origin 0 0 24 -playerparms 75 138 140 1
+
+$exit
+
+// note: playerparms are "skipStart skipEnd maxUpperFrames maxHeadFrames"
+$aseanimconvert models/players/medium/visor/4visor.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/medium/visor/4visor.ase -lod 1 0 -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/medium/visor/4visor.ase -lod 2 0 -origin 0 0 24 -playerparms 75 138 140 1
+
+
+
+$aseconvert models/powerups/ammo/backpack.ase
+
+$aseconvert models/weapons2/meshes/assault.ase -weapon
+$aseconvert models/weapons2/meshes/chaingun.ase -weapon
+$aseconvert models/weapons2/meshes/flamethrower.ase -weapon
+$aseconvert models/weapons2/meshes/grapple.ase -weapon
+$aseconvert models/weapons2/meshes/grenadel.ase -weapon
+$aseconvert models/weapons2/meshes/lightning.ase -weapon
+$aseconvert models/weapons2/meshes/plasma.ase -weapon
+$aseconvert models/weapons2/meshes/railgun.ase -weapon
+$aseconvert models/weapons2/meshes/ricochet.ase -weapon
+$aseconvert models/weapons2/meshes/rocketl.ase -weapon
+$aseconvert models/weapons2/meshes/shotgun.ase -weapon
+
+$aseconvert models/mapobjects/arenalogo.ase
+
+//
+// talk sprite
+//
+$modelname sprites/balloon
+$cd sprites
+$spritebase -8 -8 16 16
+$spriteshader sprites/balloon3.tga
+
+// plasma ball sprite
+$modelname sprites/plasma
+$cd sprites
+$spritebase -16 -16 32 32
+$spriteshader sprites/plasma1.tga
+$spriteshader sprites/plasma2.tga
+
+//
+// player models
+// note: playerparms are "skipStart skipEnd maxUpperFrames maxHeadFrames"
+//
+$aseanimconvert models/players/light/bandolier/bandolier.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/light/brandon/4brandon.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/light/cash/4cash.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/light/doom/doom.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/light/shauna/shauna.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/medium/tim/4tim.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/medium/visor/4visor.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/medium/xian/4xian.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/medium/carmack/carmack.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/heavy/paulj/4paulj.ase -origin 0 0 24 -playerparms 75 138 140 1
+$aseanimconvert models/players/heavy/brock/brock.ase -origin 0 0 24 -playerparms 75 138 140 1
+
+//
+// weaphits
+//
+$modelname models/weaphits/bullet
+$cd models/weaphits
+$base bullet01.3ds
+$frame bullet01.3ds
+$frame bullet02.3ds
+$frame bullet03.3ds
+$frame bullet04.3ds
+$frame bullet05.3ds
+$frame bullet06.3ds
+$skin bullet01.3ds
+$skin bullet03.3ds
+$skin bullet05.3ds
+
+$modelname models/weaphits/ring01
+$cd models/weaphits
+$base ring01_1.3ds
+$frame ring01_1.3ds
+$frame ring01_2.3ds
+$frame ring01_3.3ds
+$frame ring01_4.3ds
+$frame ring01_5.3ds
+$frame ring01_6.3ds
+$skin ring01_1.3ds
+$skin ring01_3.3ds
+$skin ring01_5.3ds
+
+$modelname models/weaphits/ring02
+$cd models/weaphits
+$base ring02_1.3ds
+$frame ring02_1.3ds
+$frame ring02_2.3ds
+$frame ring02_3.3ds
+$frame ring02_4.3ds
+$frame ring02_5.3ds
+$frame ring02_6.3ds
+$skin ring02_1.3ds
+$skin ring02_3.3ds
+$skin ring02_5.3ds
+
+$modelname models/weaphits/boomgra
+$cd models/weaphits
+$base boomgra1.3ds
+$frame boomgra1.3ds
+$frame boomgra2.3ds
+$frame boomgra3.3ds
+$frame boomgra4.3ds
+$frame boomgra5.3ds
+$frame boomgra6.3ds
+$skin boomgra1.3ds
+$skin boomgra3.3ds
+$skin boomgra5.3ds
+
+$modelname models/weaphits/boom01
+$cd models/weaphits
+$base boom01_1.3ds
+$frame boom01_1.3ds
+$frame boom01_2.3ds
+$frame boom01_3.3ds
+$frame boom01_4.3ds
+$frame boom01_5.3ds
+$frame boom01_6.3ds
+$skin boom01_1.3ds
+$skin boom01_3.3ds
+$skin boom01_5.3ds
+
+$modelname models/weaphits/boom02
+$cd models/weaphits
+$base boom02_1.3ds
+$frame boom02_1.3ds
+$frame boom02_2.3ds
+$frame boom02_3.3ds
+$frame boom02_4.3ds
+$frame boom02_5.3ds
+$frame boom02_6.3ds
+$skin boom02_1.3ds
+$skin boom02_3.3ds
+$skin boom02_5.3ds
+
+$modelname models/weaphits/boom03
+$cd models/weaphits
+$base boom03_1.3ds
+$frame boom03_1.3ds
+$frame boom03_2.3ds
+$frame boom03_3.3ds
+$frame boom03_4.3ds
+$frame boom03_5.3ds
+$frame boom03_6.3ds
+$skin boom03_1.3ds
+$skin boom03_3.3ds
+$skin boom03_5.3ds
+
+$modelname models/weaphits/boom04
+$cd models/weaphits
+$base boom04_1.3ds
+$frame boom04_1.3ds
+$frame boom04_2.3ds
+$frame boom04_3.3ds
+$frame boom04_4.3ds
+$frame boom04_5.3ds
+$frame boom04_6.3ds
+$skin boom04_1.3ds
+$skin boom04_3.3ds
+$skin boom04_5.3ds
+
+$modelname models/weaphits/boom05
+$cd models/weaphits
+$base boom05_1.3ds
+$frame boom05_1.3ds
+$frame boom05_2.3ds
+$frame boom05_3.3ds
+$frame boom05_4.3ds
+$frame boom05_5.3ds
+$frame boom05_6.3ds
+$skin boom05_1.3ds
+$skin boom05_3.3ds
+$skin boom05_5.3ds
+
+//
+// point powerups
+//
+$aseconvert models/powerups/points/small.ase
+$aseconvert models/powerups/points/medium.ase
+$aseconvert models/powerups/points/large.ase
+
+//
+// ammo
+//
+$aseconvert models\powerups\ammo\bfgam.ASE
+$aseconvert models\powerups\ammo\bfgam_1.ASE
+$aseconvert models\powerups\ammo\bouncyam.ASE
+$aseconvert models\powerups\ammo\bouncyam_1.ASE
+$aseconvert models\powerups\ammo\carbineam.ASE
+$aseconvert models\powerups\ammo\carbineam_1.ASE
+$aseconvert models\powerups\ammo\flameam.ASE
+$aseconvert models\powerups\ammo\flameam_1.ASE
+$aseconvert models\powerups\ammo\grenadeam.ASE
+$aseconvert models\powerups\ammo\grenadeam_1.ASE
+$aseconvert models\powerups\ammo\lightningam.ASE
+$aseconvert models\powerups\ammo\lightningam_1.ASE
+$aseconvert models\powerups\ammo\machinegunam.ASE
+$aseconvert models\powerups\ammo\machinegunam_1.ASE
+$aseconvert models\powerups\ammo\plasmaam.ASE
+$aseconvert models\powerups\ammo\plasmaam_1.ASE
+$aseconvert models\powerups\ammo\railgunam.ASE
+$aseconvert models\powerups\ammo\railgunam_1.ASE
+$aseconvert models\powerups\ammo\rocketam.ASE
+$aseconvert models\powerups\ammo\rocketam_1.ASE
+$aseconvert models\powerups\ammo\shotgunam.ASE
+$aseconvert models\powerups\ammo\shotgunam_1.ASE
+
+$aseconvert models/powerups/ammo/backpack.ase
+
+//
+// missiles
+//
+$modelname models/ammo/plasma/plasma
+$cd models/ammo/plasma
+$base plasma1.3ds
+$frame plasma1.3ds
+$skin plasma1.3ds
+
+$modelname models/ammo/laser/laser
+$cd models/ammo/laser
+$base laser1.3ds
+$frame laser1.3ds
+$skin laser1.3ds
+
+$modelname models/ammo/rocket/rocket
+$cd models/ammo/rocket
+$base rocket1.3ds
+$frame rocket1.3ds
+$skin rocket1.3ds
+$skin rocket2.3ds
+
+$aseconvert models/ammo/grenade1.ase
+$aseconvert models/explosions/smoke2.ase
+
+//
+// map objects
+//
+$aseconvert models/mapobjects/ceilinglamp1.ase
+$aseconvert models/mapobjects/ceilinglamp2.ase
+$aseconvert models/mapobjects/chain1.ase
+$aseconvert models/mapobjects/chain2.ase
+$aseconvert models/mapobjects/chain3.ase
+$aseconvert models/mapobjects/chain4.ase
+$aseconvert models/mapobjects/crux.ase
+$aseconvert models/mapobjects/floorlamp1.ase
+$aseconvert models/mapobjects/floorlamp2.ase
+$aseconvert models/mapobjects/hook.ase
+$aseconvert models/mapobjects/impale.ase
+$aseconvert models/mapobjects/standinglamp1.ase
+$aseconvert models/mapobjects/standinglamp2.ase
+$aseconvert models/mapobjects/standinglamp3.ase
+$aseconvert models/mapobjects/walllamp1.ase
+$aseconvert models/mapobjects/walllamp2.ase
+$aseconvert models/mapobjects/walllamp3.ase
+
+
+//
+// objects
+//
+$aseconvert models/objects/dmspot.ase -origin 0 0 24
+$aseconvert models/objects/box01.ase
+
+//
+// weapons
+//
+$aseconvert models/weapons2/meshes/assault.ase -weapon
+$aseconvert models/weapons2/meshes/bfg.ase -weapon
+$aseconvert models/weapons2/meshes/chaingun.ase -weapon
+$aseconvert models/weapons2/meshes/flamethrower.ase -weapon
+$aseconvert models/weapons2/meshes/grapple.ase -weapon
+$aseconvert models/weapons2/meshes/grenadel.ase -weapon
+$aseconvert models/weapons2/meshes/lightning.ase -weapon
+$aseconvert models/weapons2/meshes/plasma.ase -weapon
+$aseconvert models/weapons2/meshes/railgun.ase -weapon
+$aseconvert models/weapons2/meshes/ricochet.ase -weapon
+$aseconvert models/weapons2/meshes/rocketl.ase -weapon
+$aseconvert models/weapons2/meshes/shotgun.ase -weapon
+
+//
+// blood
+//
+$modelname models/weaphits/blood
+$cd models/weaphits
+$spritebase -16 -16 32 32
+$spriteshader models/weaphits/blood201.tga
+$spriteshader models/weaphits/blood202.tga
+$spriteshader models/weaphits/blood203.tga
+$spriteshader models/weaphits/blood204.tga
+$spriteshader models/weaphits/blood205.tga
+
+
+//
+// missiles
+//
+$modelname models/ammo/plasma/plasma
+$cd models/ammo/plasma
+$base plasma1.3ds
+$frame plasma1.3ds
+$skin plasma1.3ds
+
+$modelname models/ammo/laser/laser
+$cd models/ammo/laser
+$base laser1.3ds
+$frame laser1.3ds
+$skin laser1.3ds
+
+
+$modelname models/ammo/rocket/rocket
+$cd models/ammo/rocket
+$base rocket1.3ds
+$frame rocket1.3ds
+$skin rocket1.3ds
+$skin rocket2.3ds
+
+
+// weaphits
+
+$modelname models/weaphits/bullet
+$cd models/weaphits
+$base bullet01.3ds
+$frame bullet01.3ds
+$frame bullet02.3ds
+$frame bullet03.3ds
+$frame bullet04.3ds
+$frame bullet05.3ds
+$frame bullet06.3ds
+$skin bullet01.3ds
+$skin bullet03.3ds
+$skin bullet05.3ds
+
+$modelname models/weaphits/ring01
+$cd models/weaphits
+$base ring01_1.3ds
+$frame ring01_1.3ds
+$frame ring01_2.3ds
+$frame ring01_3.3ds
+$frame ring01_4.3ds
+$frame ring01_5.3ds
+$frame ring01_6.3ds
+$skin ring01_1.3ds
+$skin ring01_3.3ds
+$skin ring01_5.3ds
+
+$modelname models/weaphits/ring02
+$cd models/weaphits
+$base ring02_1.3ds
+$frame ring02_1.3ds
+$frame ring02_2.3ds
+$frame ring02_3.3ds
+$frame ring02_4.3ds
+$frame ring02_5.3ds
+$frame ring02_6.3ds
+$skin ring02_1.3ds
+$skin ring02_3.3ds
+$skin ring02_5.3ds
+
+$modelname models/weaphits/boomgra
+$cd models/weaphits
+$base boomgra1.3ds
+$frame boomgra1.3ds
+$frame boomgra2.3ds
+$frame boomgra3.3ds
+$frame boomgra4.3ds
+$frame boomgra5.3ds
+$frame boomgra6.3ds
+$skin boomgra1.3ds
+$skin boomgra3.3ds
+$skin boomgra5.3ds
+
+$modelname models/weaphits/boom01
+$cd models/weaphits
+$base boom01_1.3ds
+$frame boom01_1.3ds
+$frame boom01_2.3ds
+$frame boom01_3.3ds
+$frame boom01_4.3ds
+$frame boom01_5.3ds
+$frame boom01_6.3ds
+$skin boom01_1.3ds
+$skin boom01_3.3ds
+$skin boom01_5.3ds
+
+$modelname models/weaphits/boom02
+$cd models/weaphits
+$base boom02_1.3ds
+$frame boom02_1.3ds
+$frame boom02_2.3ds
+$frame boom02_3.3ds
+$frame boom02_4.3ds
+$frame boom02_5.3ds
+$frame boom02_6.3ds
+$skin boom02_1.3ds
+$skin boom02_3.3ds
+$skin boom02_5.3ds
+
+$modelname models/weaphits/boom03
+$cd models/weaphits
+$base boom03_1.3ds
+$frame boom03_1.3ds
+$frame boom03_2.3ds
+$frame boom03_3.3ds
+$frame boom03_4.3ds
+$frame boom03_5.3ds
+$frame boom03_6.3ds
+$skin boom03_1.3ds
+$skin boom03_3.3ds
+$skin boom03_5.3ds
+
+$modelname models/weaphits/boom04
+$cd models/weaphits
+$base boom04_1.3ds
+$frame boom04_1.3ds
+$frame boom04_2.3ds
+$frame boom04_3.3ds
+$frame boom04_4.3ds
+$frame boom04_5.3ds
+$frame boom04_6.3ds
+$skin boom04_1.3ds
+$skin boom04_3.3ds
+$skin boom04_5.3ds
+
+$modelname models/weaphits/boom05
+$cd models/weaphits
+$base boom05_1.3ds
+$frame boom05_1.3ds
+$frame boom05_2.3ds
+$frame boom05_3.3ds
+$frame boom05_4.3ds
+$frame boom05_5.3ds
+$frame boom05_6.3ds
+$skin boom05_1.3ds
+$skin boom05_3.3ds
+$skin boom05_5.3ds
+
+
+//
+// armor
+//
+$aseconvert models/powerups/armor/armor_red.ase
+$aseconvert models/powerups/armor/armor_yel.ase
+$aseconvert models/powerups/armor/armor_grn.ase
+$aseconvert models/powerups/armor/shard.ase
+$aseconvert models/powerups/armor/shard_sphere.ase
+$aseconvert models/powerups/armor/shard_sphere_1.ase
+
+//
+// health
+//
+$aseconvert models/powerups/health/small.ase
+$aseconvert models/powerups/health/small_1.ase
+$aseconvert models/powerups/health/medium.ase
+$aseconvert models/powerups/health/medium_1.ase
+$aseconvert models/powerups/health/large.ase
+$aseconvert models/powerups/health/large_1.ase
+$aseconvert models/powerups/health/mega.ase
+$aseconvert models/powerups/health/mega_1.ase
+
+//
+// holdable powerups
+//
+$aseconvert models/powerups/holdable/ringodeth.ase
+$aseconvert models/powerups/holdable/medkit.ase
+$aseconvert models/powerups/holdable/teleporter.ase
+
+//
+// instant powerups
+//
+$aseconvert models/powerups/instant/enviro.ase
+$aseconvert models/powerups/instant/enviro_1.ase
+$aseconvert models/powerups/instant/enviro_ring.ase
+$aseconvert models/powerups/instant/enviro_ring_1.ase
+$aseconvert models/powerups/instant/flight.ase
+$aseconvert models/powerups/instant/flight_1.ase
+$aseconvert models/powerups/instant/flight_ring.ase
+$aseconvert models/powerups/instant/flight_ring_1.ase
+$aseconvert models/powerups/instant/haste.ase
+$aseconvert models/powerups/instant/haste_1.ase
+$aseconvert models/powerups/instant/haste_ring.ase
+$aseconvert models/powerups/instant/haste_ring_1.ase
+$aseconvert models/powerups/instant/invis.ase
+$aseconvert models/powerups/instant/invis_1.ase
+$aseconvert models/powerups/instant/invis_ring.ase
+$aseconvert models/powerups/instant/invis_ring_1.ase
+$aseconvert models/powerups/instant/scan.ase
+$aseconvert models/powerups/instant/scan_1.ase
+$aseconvert models/powerups/instant/scan_ring.ase
+$aseconvert models/powerups/instant/scan_ring_1.ase
+$aseconvert models/powerups/instant/quad.ase
+$aseconvert models/powerups/instant/quad_1.ase
+$aseconvert models/powerups/instant/quad_ring.ase
+$aseconvert models/powerups/instant/quad_ring_1.ase
+$aseconvert models/powerups/instant/regen.ase
+$aseconvert models/powerups/instant/regen_1.ase
+$aseconvert models/powerups/instant/regen_ring.ase
+$aseconvert models/powerups/instant/regen_ring_1.ase
+
+$exit
+
+//
+// maps
+//
+$maps test_box test_items mirror mirror2
+
+
+//
+// misc
+//
+$file q3default.cfg
+
+