FILEVERSION = 1.2.0.0;
LIBVERSION = 3.0.0.0;
PLATFORM = xboxdx;

SHADER point_flat_diffuse {
  usevertexprg = true;
  useworldvp = false;
  vp_syntax = xbox;
  modelviewtracking = identity;
  lightsourcepos = 0.000000,0.000000,0.000000,1.000000;
  lightsourcecol = 1.000000,1.000000,1.000000,100.000000;
  lighttracking = key;
  lightsourcekey = #1;
  vertexprogram={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	mov r8, v2
	dp3 R9.w, v10,v10
	add r11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, v10, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	add r0, c28, -v0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov oT1.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x
	mov oT0, v9
 }  
  vertexprogram_model={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11

	dp3 r8, c0, v2
	dp3 r8.y, c1, v2
	dp3 r8.z, c2, v2
	dp3 r9, c0, v10
	dp3 r9.y, c1, v10
	dp3 r9.z, c2, v10
	
	mov r8, v2
	dp3 R9.w, r9,r9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, r9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	dp4 r0,   c0, v0
	dp4 r0.y, c1, v0
	dp4 r0.z, c2, v0
	add r0, c28, -r0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov oT1.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x
	mov oT0, v9
 }  

  usefragmentshader = true;
  fragment_syntax = xbox;
  fragmentshader={
	xps.1.1
	def c0, 0.0f, 0.0f, 1.0f, 0.0f
	tex t0
	tex t1
	dp3 r1, t1_bx2, c0
	mul r1, r1_sat, t0
	mul r1, r1, v0
	mul r0, r1, t1.a
  }
  
  usecolors = true;
  useblending = true;
  writezbuffer = false;
  faceculling = back;
  additionalparam4 = 1.000000;
  additionalparam5 = 1.000000;
  additionalparam15 = 0.020000;
  numstages = 2;
  
  STAGE 1 = {
  }
  STAGE 2 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
}


SHADER point_flat_spec {
  usevertexprg = true;
  useworldvp = false;
  vp_syntax = xbox;
  modelviewtracking = identity;
  lightsourcepos = 0.000000,0.000000,0.000000,1.000000;
  lightsourcecol = 1.000000,1.000000,1.000000,100.000000;
  lighttracking = key;
  lightsourcekey = #1;
  vertexprogram={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	MOV R8, v2
	DP3 R9.w, v9,v9   
	ADD R11.x, -R9.w, c26.x
	RCP R9.w, R9.w
	MUL R9, v9,R9.w
	mul r9, r9, -r11.x
	MUL R10, R8.zxyw, R9.yzxw
	MAD R10, R8.yzxw, R9.zxyw, -R10

	ADD R3, c28, -v0
	DP3 R7, R10, R3
	DP3 R7.y, R9, -R3
	DP3 R7.z, R8, R3
	MOV oT1.xyz, R7
	RCP R6, R7.z
	MUL R6.x, R6.x, c29.w
	ADD r6.x, R6.x, c26.y
	MUL oD0.xyz, c29, r6.x
	
	MUL R1.y, -R7.z, c48.z
	MAD R11, R8,R1.y,c28
	DP3 R8.w, R11,R8
	
	ADD R7, c24, -v0

	DP3 R2.x, R8,c24
	ADD R2.x, R2.x, -R8.w
	DP3 R2.y, R8,R7
	RCP R4,-R2.y
	MUL R2,R2.x,R4.x
	MAD R4, R2,R7, c24
	ADD R4, R4,-R11
	
	DP3 R5, R4,R10
	DP3 R5.y, R4,R9

	MAD R5.xy, R5,c48.y,c48.x
	MOV oT0.xy,R5
	MOV oT2, v11
 }  
  vertexprogram_model={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	dp3 r8, c0, v2
	dp3 r8.y, c1, v2
	dp3 r8.z, c2, v2
	dp3 r9, c0, v9
	dp3 r9.y, c1, v9
	dp3 r9.z, c2, v9
	DP3 R9.w, r9,r9   
	ADD R11.x, -r9.w, c26.x
	RCP R9.w, R9.w
	MUL R9, r9,R9.w
	mul r9, r9, -r11.x
	MUL R10, R8.zxyw, R9.yzxw
	MAD R10, R8.yzxw, R9.zxyw, -R10
	
	dp4 r0,   c0, v0
	dp4 r0.y, c1, v0
	dp4 r0.z, c2, v0
	ADD R3, c28, -r0
	DP3 R7, R10, R3
	DP3 R7.y, R9, -R3
	DP3 R7.z, R8, R3
	MOV oT1.xyz, R7
	RCP R6, R7.z
	MUL R6.x, R6.x, c29.w
	ADD r6.x, R6.x, c26.y
	MUL oD0.xyz, c29, r6.x
	
	MUL R1.y, -R7.z, c48.z
	MAD R11, R8,R1.y,c28
	DP3 R8.w, R11,R8
	
	DP3 R2.y, R8,R7
	RCP R4,-R2.y
	MUL R2,-r8.w,R4.x
	ADD R4, R2,R7
	ADD R4, R4,-R11
	
	DP3 R5, R4,R10
	DP3 R5.y, R4,R9

	MAD R5.xy, R5,c48.y,c48.x
	MOV oT0.xy,R5
	MOV oT2, v11
 }  
  usefragmentshader = true;
  fragment_syntax = xbox;
  fragmentshader={
	xps.1.1
	def c0, 0.0f, 0.0f, 1.0f, 0.0f
	tex t0
	tex t1
	tex t2
	dp3 r1, t1_bx2, c0
	mul r1, r1, t1.a
	mul r1, r1, v0
	add r0, t0,t2
	mul r0, r0,r1 
  }
  
  numcustomparams = 1;
  c[48] = 0.500000,0.000800,2.000000,0.000000;
  numstages = 3;
  useblending = true;
  writezbuffer = false;
  faceculling = back;
  additionalparam3 = 1.000000;
  additionalparam4 = 1.000000;
  additionalparam5 = 1.000000;
  
  STAGE 1 = {
    texturetype = texture_index;
    textureindex = nomodifier("mainlens.tex",mipmap,clamp);
    texgen_s = tangent_vector;
    texgen_t = tangent_vector;
    texgen_r = tangent_vector;
  }
  STAGE 2 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    envmode = modulate;
  }
  STAGE 3 = {
  }
}




SHADER point_bump_diffuse {
  usevertexprg = true;
  useworldvp = false;
  vp_syntax = xbox;
  modelviewtracking = identity;
  lightsourcepos = 0.000000,0.000000,0.000000,1.000000;
  lightsourcecol = 1.000000,1.000000,1.000000,100.000000;
  lighttracking = key;
  lightsourcekey = #1;
  vertexprogram={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	mov r8, v2
	dp3 R9.w, v9,v9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, v9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	add r0, c28, -v0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x
	mov oT1, v11
	mov oT2, v11
 }  
  vertexprogram_model={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	dp3 r8, c0, v2
	dp3 r8.y, c1, v2
	dp3 r8.z, c2, v2
	dp3 r9, c0, v9
	dp3 r9.y, c1, v9
	dp3 r9.z, c2, v9
	DP3 R9.w, r9,r9   
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, r9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	dp4 r0, c0, v0
	dp4 r0.y, c1, v0
	dp4 r0.z, c2, v0
	add r0, c28, -r0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x
	mov oT1, v11
	mov oT2, v11
 }  

  usefragmentshader = true;
  fragment_syntax = xbox;
  fragmentshader={
	xps.1.1
	tex t0
	tex t1
	tex t2
	dp3 r1, t0_bx2, t1_bx2
	mul r1, r1_sat, t2
	mul r1, r1, v0
	mul r0, r1, t0.a
  }
  
  usecolors = true;
  useblending = true;
  writezbuffer = false;
  faceculling = back;
  additionalparam0 = 2.000000;
  additionalparam4 = 1.000000;
  additionalparam5 = 1.000000;
  additionalparam15 = 0.020000;
  numstages = 3;
  
  STAGE 1 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
    texgen_t = tangent_vector;
    texgen_r = tangent_vector;
  }
  STAGE 2 = {
    texturetype = normalmap;
  }
  STAGE 3 = {
  }
}



SHADER point_bump_spec2 {
  usevertexprg = true;
  useworldvp = false;
  vp_syntax = xbox;
  modelviewtracking = identity;
  lightsourcepos = 0.000000,0.000000,0.000000,1.000000;
  lightsourcecol = 1.000000,1.000000,1.000000,100.000000;
  lighttracking = key;
  lightsourcekey = #1;
  vertexprogram={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	mov r8, v2
	dp3 R9.w, v9,v9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, v9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	add r0, c28, -v0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x

	ADD R2, c24, -v0
	DP3 R1.x, R10, R2
	DP3 R1.y, R9, R2
	DP3 R1.z, R8, R2
	DP3 R1.w, R1, R1
	RSQ R1.w, R1.w
	MUL R1.xyz, R1, R1.w
	
	DP3 R0.w,   R7, R7
	RSQ R0.w,   R0.w
	MUL R0.xyz, R7, R0.w
	
	ADD oT3.xyz, R0,R1
	mov oT1, v11
	mov oT2, v11
 }  
  vertexprogram_model={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	dp3 r8, c0, v2
	dp3 r8.y, c1, v2
	dp3 r8.z, c2, v2
	dp3 r9, c0, v9
	dp3 r9.y, c1, v9
	dp3 r9.z, c2, v9
	dp3 R9.w, r9,r9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, r9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	dp4 r0, c0, v0
	dp4 r0.y, c1, v0
	dp4 r0.z, c2, v0
	add r1, c28, -r0
	dp3 r7.x, r10, r1
	dp3 r7.y, r9, -r1
	dp3 r7.z, r8, r1
	
	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x

	DP3 R1.x, R10, -r0
	DP3 R1.y, R9, -r0
	DP3 R1.z, R8, -r0
	DP3 R1.w, R1, R1
	RSQ R1.w, R1.w
	MUL R1.xyz, R1, R1.w
	
	DP3 R0.w,   R7, R7
	RSQ R0.w,   R0.w
	MUL R0.xyz, R7, R0.w
	
	ADD oT3.xyz, R0,R1
	mov oT1, v11
	mov oT2, v11
 }  

  usefragmentshader = true;
  fragment_syntax = xbox;
  numfragmentconst = 8;
  fragmentshader={
	xps.1.1
	def c0, 0.0f, 0.0f, 0.0f, 0.2942f
	tex t0
	tex t1
	tex t2
	tex t3
	xdd r1,t3, t0_bx2, t1_bx2, t3_bx2, t1_bx2
	xmma r1,t3,discard, r1, t0.a, t3,t3
	mul t3,t3,c0.a
	mad r0, t3,t1.a, t2
	xfc r0,prod,zero,zero, r1,v0,t2
  }
  
  usecolors = true;
  useblending = true;
  blendfunc = src_alpha,one;
  writezbuffer = false;
  faceculling = back;
  additionalparam0 = 2.000000;
  additionalparam4 = 1.000000;
  additionalparam5 = 1.000000;
  additionalparam15 = 0.020000;
  numstages = 4;
  
  STAGE 1 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
  STAGE 2 = {
    texturetype = normalmap;
  }
  STAGE 3 = {
  }
  STAGE 4 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
}

SHADER point_bump_spec4 {
  usevertexprg = true;
  useworldvp = false;
  vp_syntax = xbox;
  modelviewtracking = identity;
  lightsourcepos = 0.000000,0.000000,0.000000,1.000000;
  lightsourcecol = 1.000000,1.000000,1.000000,100.000000;
  lighttracking = key;
  lightsourcekey = #1;
  vertexprogram={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	mov r8, v2
	dp3 R9.w, v9,v9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, v9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	add r0, c28, -v0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x

	ADD R2, c24, -v0
	DP3 R1.x, R10, R2
	DP3 R1.y, R9, R2
	DP3 R1.z, R8, R2
	DP3 R1.w, R1, R1
	RSQ R1.w, R1.w
	MUL R1.xyz, R1, R1.w
	
	DP3 R0.w,   R7, R7
	RSQ R0.w,   R0.w
	MUL R0.xyz, R7, R0.w
	
	ADD oT3.xyz, R0,R1
	mov oT1, v11
	mov oT2, v11
 }  
  vertexprogram_model={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	dp3 r8, c0, v2
	dp3 r8.y, c1, v2
	dp3 r8.z, c2, v2
	dp3 r9, c0, v9
	dp3 r9.y, c1, v9
	dp3 r9.z, c2, v9
	dp3 R9.w, r9,r9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, r9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	dp4 r0, c0, v0
	dp4 r0.y, c1, v0
	dp4 r0.z, c2, v0
	add r1, c28, -r0
	dp3 r7.x, r10, r1
	dp3 r7.y, r9, -r1
	dp3 r7.z, r8, r1
	
	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x

	DP3 R1.x, R10, -r0
	DP3 R1.y, R9, -r0
	DP3 R1.z, R8, -r0
	DP3 R1.w, R1, R1
	RSQ R1.w, R1.w
	MUL R1.xyz, R1, R1.w
	
	DP3 R0.w,   R7, R7
	RSQ R0.w,   R0.w
	MUL R0.xyz, R7, R0.w
	
	ADD oT3.xyz, R0,R1
	mov oT1, v11
	mov oT2, v11
 }  

  usefragmentshader = true;
  fragment_syntax = xbox;
  numfragmentconst = 8;
  fragmentshader={
	xps.1.1
	def c0, 0.0f, 0.0f, 0.0f, 0.5137f
	tex t0
	tex t1
	tex t2
	tex t3
	xdd r1,t3, t0_bx2, t1_bx2, t3_bx2, t1_bx2
	xmma r1,t3,discard, r1, t0.a, t3,t3
	mul t3, t3,t3
	mul t3,t3,c0.a
	mad r0, t3,t1.a, t2
	xfc r0,prod,zero,zero, r1,v0,t2
  }
  
  usecolors = true;
  useblending = true;
  blendfunc = src_alpha,one;
  writezbuffer = false;
  faceculling = back;
  additionalparam0 = 2.000000;
  additionalparam4 = 1.000000;
  additionalparam5 = 1.000000;
  additionalparam15 = 0.020000;
  numstages = 4;
  
  STAGE 1 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
  STAGE 2 = {
    texturetype = normalmap;
  }
  STAGE 3 = {
  }
  STAGE 4 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
}


SHADER point_bump_spec8 {
  usevertexprg = true;
  useworldvp = false;
  vp_syntax = xbox;
  modelviewtracking = identity;
  lightsourcepos = 0.000000,0.000000,0.000000,1.000000;
  lightsourcecol = 1.000000,1.000000,1.000000,100.000000;
  lighttracking = key;
  lightsourcekey = #1;
  vertexprogram={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	mov r8, v2
	dp3 R9.w, v9,v9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, v9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	add r0, c28, -v0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x

	ADD R2, c24, -v0
	DP3 R1.x, R10, R2
	DP3 R1.y, R9, R2
	DP3 R1.z, R8, R2
	DP3 R1.w, R1, R1
	RSQ R1.w, R1.w
	MUL R1.xyz, R1, R1.w
	
	DP3 R0.w,   R7, R7
	RSQ R0.w,   R0.w
	MUL R0.xyz, R7, R0.w
	
	ADD oT3.xyz, R0,R1
	mov oT1, v11
	mov oT2, v11
 }  
  vertexprogram_model={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	dp3 r8, c0, v2
	dp3 r8.y, c1, v2
	dp3 r8.z, c2, v2
	dp3 r9, c0, v9
	dp3 r9.y, c1, v9
	dp3 r9.z, c2, v9
	dp3 R9.w, r9,r9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, r9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	dp4 r0, c0, v0
	dp4 r0.y, c1, v0
	dp4 r0.z, c2, v0
	add r1, c28, -r0
	dp3 r7.x, r10, r1
	dp3 r7.y, r9, -r1
	dp3 r7.z, r8, r1
	
	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x

	DP3 R1.x, R10, -r0
	DP3 R1.y, R9, -r0
	DP3 R1.z, R8, -r0
	DP3 R1.w, R1, R1
	RSQ R1.w, R1.w
	MUL R1.xyz, R1, R1.w
	
	DP3 R0.w,   R7, R7
	RSQ R0.w,   R0.w
	MUL R0.xyz, R7, R0.w
	
	ADD oT3.xyz, R0,R1
	mov oT1, v11
	mov oT2, v11
 }  

  usefragmentshader = true;
  fragment_syntax = xbox;
  numfragmentconst = 8;
  fragmentshader={
	xps.1.1
	tex t0
	tex t1
	tex t2
	tex t3
	xdd r1,t3, t0_bx2, t1_bx2, t3_bx2, t1_bx2
	xmma r1,t3,discard, r1, t0.a, t3,t3
	mul t3, t3,t3
	mul t3,t3,t3
	mad r0, t3,t1.a, t2
	xfc r0,prod,zero,zero, r1,v0,t2
  }
  
  usecolors = true;
  useblending = true;
  blendfunc = src_alpha,one;
  writezbuffer = false;
  faceculling = back;
  additionalparam0 = 2.000000;
  additionalparam4 = 1.000000;
  additionalparam5 = 1.000000;
  additionalparam15 = 0.020000;
  numstages = 4;
  
  STAGE 1 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
  STAGE 2 = {
    texturetype = normalmap;
  }
  STAGE 3 = {
  }
  STAGE 4 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
}



SHADER spot_flat_diffuse {
  usevertexprg = true;
  useworldvp = false;
  vp_syntax = xbox;
  modelviewtracking = identity;
  lightsourcepos = 0.000000,0.000000,0.000000,1.000000;
  lightsourcecol = 1.000000,1.000000,1.000000,100.000000;
  lighttracking = key;
  lightsourcekey = #1;
  vertexprogram={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	mov r8, v2
	dp3 r9.w, v9,v9
	add r11.x, -r9.w, c26.x
	rcp r9.w, r9.w
	mul r9, v9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10

	mov r0, v0
	dp4 r4, r0, c50 
	dp4 r4.x, r0, c48
	dp4 r4.y, r0, c49
	mov oT3.y, r4.w
	mad r4.x, r4.w, c51.x, r4.x 
	mad r4.y, r4.w, c51.x, r4.y 
	mov oT0, r4

	add r0, c28, -v0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov oT1.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x
	mov oT2, v11
 }  
  vertexprogram_model={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	dp3 r8,   c0, v2
	dp3 r8.y, c1, v2
	dp3 r8.z, c2, v2
	dp3 r9,   c0, v9
	dp3 r9.y, c1, v9
	dp3 r9.z, c2, v9
	dp3 r9.w, r9,r9
	add r11.x, -r9.w, c26.x
	rcp r9.w, r9.w
	mul r9, r9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10

	dp4 r0,   c0, v0
	dp4 r0.y, c1, v0
	dp4 r0.z, c2, v0
	dp4 r0.w, c3, v0
	dp4 r4, r0, c50 
	dp4 r4.x, r0, c48
	dp4 r4.y, r0, c49
	mov oT3.y, r4.w
	mad r4.x, r4.w, c51.x, r4.x 
	mad r4.y, r4.w, c51.x, r4.y 
	mov oT0, r4

	add r0, c28, -r0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov oT1.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x
	mov oT2, v11
 }  

  usefragmentshader = true;
  fragment_syntax = xbox;
  fragmentshader={
	xps.1.1
	def c0, 0.0f, 0.0f, 1.0f, 0.0f
	tex t0
	tex t1
	tex t2
	tex t3
	dp3 r1, c0, t1_bx2
	mul r1, r1, v0
	mul r1, r1, t1.a
	mul r1, r1, t2
	mul r1, r1, t3
	mul r0, r1, t0
  }

  
  numcustomparams = 4;
  c[48] = 1.000000,0.000000,0.000000,0.000000;
  c[49] = 0.000000,1.000000,0.000000,0.000000;
  c[50] = 0.000000,0.000000,1.000000,0.000000;
  c[51] = 0.500000,0.000000,0.000000,0.000000;
  numstages = 4;
  usecolors = true;
  useblending = true;
  writezbuffer = false;
  faceculling = back;
  additionalparam1 = 1.000000;
  additionalparam4 = 1.000000;
  additionalparam5 = 1.000000;
  additionalparam6 = 1.000000;
  
  STAGE 1 = {
    texturetype = texture_index;
    textureindex = nomodifier("attenuation_lin.tex",clamp);
    envmode = modulate;
    texgen_s = tangent_vector;
    texgen_t = tangent_vector;
    texgen_r = tangent_vector;
  }
  STAGE 2 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
  }
  STAGE 3 = {
  }
  STAGE 4 = {
    texturetype = texture_index;
    textureindex = nomodifier("spotculling.tex",clamp);
  }
}

SHADER spot_flat_spec {
  usevertexprg = true;
  useworldvp = false;
  vp_syntax = xbox;
  modelviewtracking = identity;
  lightsourcepos = 0.000000,0.000000,0.000000,1.000000;
  lightsourcecol = 1.000000,1.000000,1.000000,100.000000;
  lighttracking = key;
  lightsourcekey = #1;
  vertexprogram={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	MOV R8, v2
	DP3 R9.w, v9,v9   
	ADD R11.x, -R9.w, c26.x
	RCP R9.w, R9.w
	MUL R9, v9,R9.w
	mul r9, r9, -r11.x
	MUL R10, R8.zxyw, R9.yzxw
	MAD R10, R8.yzxw, R9.zxyw, -R10

	mov r0, v0
	dp4 r4, r0, c50 
	dp4 r4.x, r0, c48
	dp4 r4.y, r0, c49
	mad r4.x, r4.w, c51.x, r4.x 
	mad r4.y, r4.w, c51.x, r4.y 
	mov oT3, r4
	
	ADD R3, c28, -v0
	DP3 R7, R10, R3
	DP3 R7.y, R9, -R3
	DP3 R7.z, R8, R3
	MOV oT1.xyz, R7
	RCP R6, R7.z
	MUL R6.x, R6.x, c29.w
	ADD r6.x, R6.x, c26.y
	MUL oD0.xyz, c29, r6.x
	
	MUL R1.y, -R7.z, c51.z
	MAD R11, R8,R1.y,c28
	DP3 R8.w, R11,R8
	
	ADD R7, c24, -v0

	DP3 R2.x, R8,c24
	ADD R2.x, R2.x, -R8.w
	DP3 R2.y, R8,R7
	RCP R4,-R2.y
	MUL R2,R2.x,R4.x
	MAD R4, R2,R7, c24
	ADD R4, R4,-R11
	
	DP3 R5, R4,R10
	DP3 R5.y, R4,R9

	MAD R5.xy, R5,c51.y,c51.x
	MOV oT0.xy,R5
	MOV oT2, v11
 }  
  vertexprogram_model={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	dp3 r8, c0, v2
	dp3 r8.y, c1, v2
	dp3 r8.z, c2, v2
	dp3 r9, c0, v9
	dp3 r9.y, c1, v9
	dp3 r9.z, c2, v9
	DP3 R9.w, r9,r9   
	ADD R11.x, -R9.w, c26.x
	RCP R9.w, R9.w
	MUL R9, v9,R9.w
	mul r9, r9, -r11.x
	MUL R10, R8.zxyw, R9.yzxw
	MAD R10, R8.yzxw, R9.zxyw, -R10

	dp4 r0, c0, v0
	dp4 r0.y, c1, v0
	dp4 r0.z, c2, v0
	dp4 r0.w, c3, v0
	dp4 r4, r0, c50 
	dp4 r4.x, r0, c48
	dp4 r4.y, r0, c49
	mad r4.x, r4.w, c51.x, r4.x 
	mad r4.y, r4.w, c51.x, r4.y 
	mov oT3, r4
	
	ADD R3, c28, -r0
	DP3 R7, R10, R3
	DP3 R7.y, R9, -R3
	DP3 R7.z, R8, R3
	MOV oT1.xyz, R7
	RCP R6, R7.z
	MUL R6.x, R6.x, c29.w
	ADD r6.x, R6.x, c26.y
	MUL oD0.xyz, c29, r6.x
	
	MUL R1.y, -R7.z, c51.z
	MAD R11, R8,R1.y,c28
	DP3 R8.w, R11,R8
	
	DP3 R2.y, R8,R7
	RCP R4,-R2.y
	MUL R2,R8.w,R4.x
	ADD R4, R2,-r0
	ADD R4, R4,-R11
	
	DP3 R5, R4,R10
	DP3 R5.y, R4,R9

	MAD R5.xy, R5,c51.y,c51.x
	MOV oT0.xy,R5
	MOV oT2, v11
 }  
  usefragmentshader = true;
  fragment_syntax = xbox;
  fragmentshader={
	xps.1.1
	def c0, 0.0f, 0.0f, 1.0f, 0.0f
	tex t0
	tex t1
	tex t2
	tex t3
	dp3 r1, t1_bx2,c0
	mul r1, t1.a,t3
	mul r1, r1,v0
	xmma discard,discard,r0, t0,r1, t2,r1
  }
  
  numcustomparams = 4;
  c[48] = 1.000000,0.000000,0.000000,0.000000;
  c[49] = 0.000000,1.000000,0.000000,0.000000;
  c[50] = 0.000000,0.000000,1.000000,0.000000;
  c[51] = 0.500000,0.000800,2.000000,0.000000;
  numstages = 4;
  useblending = true;
  writezbuffer = false;
  faceculling = back;
  additionalparam1 = 4.000000;
  additionalparam3 = 1.000000;
  additionalparam4 = 1.000000;
  additionalparam5 = 1.000000;
  additionalparam6 = 1.000000;
  
  STAGE 1 = {
    texturetype = texture_index;
    textureindex = nomodifier("mainlens.tex",mipmap,clamp);
    texgen_s = tangent_vector;
    texgen_t = tangent_vector;
    texgen_r = tangent_vector;
  }
  STAGE 2 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
  }
  STAGE 3 = {
  }
  STAGE 4 = {
    texturetype = texture_index;
    textureindex = nomodifier("attenuation_lin.tex",clamp);
  }
}


SHADER spot_bump_diffuse {
  usevertexprg = true;
  useworldvp = false;
  vp_syntax = xbox;
  modelviewtracking = identity;
  lightsourcepos = 0.000000,0.000000,0.000000,1.000000;
  lightsourcecol = 1.000000,1.000000,1.000000,100.000000;
  lighttracking = key;
  lightsourcekey = #1;
  vertexprogram={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	mov r8, v2
	dp3 r9.w, v9,v9
	add r11.x, -r9.w, c26.x
	rcp r9.w, r9.w
	mul r9, v9, r9.w
	mul r9, r9, -r11.x	
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10

	mov r0, v0
	dp4 r4, r0, c50 
	dp4 r4.x, r0, c48
	dp4 r4.y, r0, c49
	mad r4.x, r4.w, c51.x, r4.x 
	mad r4.y, r4.w, c51.x, r4.y 
	mov oT0, r4

	add r0, c28, -v0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov oT1.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x
	mov oT2, v11
	mov oT3, v11
 }  
  vertexprogram_model={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	dp3 r8, c0, v2
	dp3 r8.y, c1, v2
	dp3 r8.z, c2, v2
	dp3 r9, c0, v9
	dp3 r9.y, c1, v9
	dp3 r9.z, c2, v9
	dp3 r9.w, r9,r9
	add r11.x, -r9.w, c26.x
	rcp r9.w, r9.w
	mul r9, r9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10

	dp4 r0, c0, v0
	dp4 r0.y, c1, v0
	dp4 r0.z, c2, v0
	dp4 r0.w, c3, v0

	dp4 r4, r0, c50
	dp4 r4.x, r0, c48
	dp4 r4.y, r0, c49
	mad r4.x, r4.w, c51.x, r4.x 
	mad r4.y, r4.w, c51.x, r4.y 
	mov oT0, r4

	add r0, c28, -r0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov oT1.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x
	mov oT2, v11
	mov oT3, v11
 }  

  usefragmentshader = true;
  fragment_syntax = xbox;
  numfragmentconst = 2;
  fragmentconst0 = 0,0,1,0;
  fragmentconst1 = 0,1,0,0;
  fragmentshader={
	xps.1.1
	tex t0
	tex t1
	tex t2
	tex t3
	dp3 r1, t3_bx2, t1_bx2
	mul r1, r1, v0
	mul r1, r1, t1.a
	mul r1, r1, t2
	mul r0, r1, t0
  }
  
  numcustomparams = 4;
  c[48] = 1.000000,0.000000,0.000000,0.000000;
  c[49] = 0.000000,1.000000,0.000000,0.000000;
  c[50] = 0.000000,0.000000,1.000000,0.000000;
  c[51] = 0.500000,0.000000,0.000000,0.000000;
  numstages = 4;
  usecolors = true;
  useblending = true;
  writezbuffer = false;
  faceculling = back;
  additionalparam0 = 4.000000;
  additionalparam1 = 1.000000;
  additionalparam4 = 1.000000;
  additionalparam5 = 1.000000;
  additionalparam6 = 1.000000;
  
  STAGE 1 = {
    texturetype = texture_index;
    textureindex = nomodifier("attenuation_lin.tex",clamp);
    texgen_s = tangent_vector;
    texgen_t = tangent_vector;
    texgen_r = tangent_vector;
  }
  STAGE 2 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
  }
  STAGE 3 = {
  }
  STAGE 4 = {
    texturetype = normalmap;
  }
}



SHADER spot_bump_spec2 {
  usevertexprg = true;
  useworldvp = false;
  vp_syntax = xbox;
  modelviewtracking = identity;
  lightsourcepos = 0.000000,0.000000,0.000000,1.000000;
  lightsourcecol = 1.000000,1.000000,1.000000,100.000000;
  lighttracking = key;
  lightsourcekey = #1;
  vertexprogram={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	mov r8, v2
	dp3 R9.w, v9,v9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, v9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	add r0, c28, -v0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov r0, v0
	dp4 r4, r0, c50 
	dp4 r4.x, r0, c48
	dp4 r4.y, r0, c49
	mad r4.x, r4.w, c51.x, r4.x 
	mad r4.y, r4.w, c51.x, r4.y 
	mov oT2, r4

	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x

	ADD R2, c24, -v0
	DP3 R1.x, R10, R2
	DP3 R1.y, R9, R2
	DP3 R1.z, R8, R2
	DP3 R1.w, R1, R1
	RSQ R1.w, R1.w
	MUL R1.xyz, R1, R1.w
	
	DP3 R0.w,   R7, R7
	RSQ R0.w,   R0.w
	MUL R0.xyz, R7, R0.w
	
	ADD oT3.xyz, R0,R1
	mov oT1, v11
 }  
  vertexprogram_model={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	dp3 r8, c0, v2
	dp3 r8.y, c1, v2
	dp3 r8.z, c2, v2
	dp3 r9, c0, v9
	dp3 r9.y, c1, v9
	dp3 r9.z, c2, v9
	dp3 R9.w, r9,r9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, r9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	dp4 r0, c0, v0
	dp4 r0.y, c1, v0
	dp4 r0.z, c2, v0
	dp4 r0.w, c3, v0
	add r3, c28, -r0
	dp3 r7.x, r10, r3
	dp3 r7.y, r9, -r3
	dp3 r7.z, r8, r3
	
	dp4 r4, r0, c50 
	dp4 r4.x, r0, c48
	dp4 r4.y, r0, c49
	mad r4.x, r4.w, c51.x, r4.x 
	mad r4.y, r4.w, c51.x, r4.y 
	mov oT2, r4

	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x

	DP3 R1.x, R10, -r0
	DP3 R1.y, R9, -r0
	DP3 R1.z, R8, -r0
	DP3 R1.w, R1, R1
	RSQ R1.w, R1.w
	MUL R1.xyz, R1, R1.w
	
	DP3 R0.w,   R7, R7
	RSQ R0.w,   R0.w
	MUL R0.xyz, R7, R0.w
	
	ADD oT3.xyz, R0,R1
	mov oT1, v11
 }  

  usefragmentshader = true;
  fragment_syntax = xbox;
  fragmentshader={
	xps.1.1
	def c0, 0.0f, 0.0f, 0.0f, 0.2942f
	tex t0
	tex t1
	tex t2
	tex t3
	xdd r1,t3, t0_bx2, t1_bx2, t3_bx2, t1_bx2
	xmma r1,t3,discard, r1, t0.a, t3,t3
	mul t3, t3, c0.a
	mul t3, t3, t2
	xfc t3, prod,zero,zero, r1,v0,t1.a
  }
  
  usecolors = true;
  useblending = true;
  blendfunc = src_alpha,one;
  writezbuffer = false;
  faceculling = back;
  additionalparam0 = 2.000000;
  additionalparam1 = 3.000000;
  additionalparam4 = 1.000000;
  additionalparam5 = 1.000000;
  additionalparam6 = 1.000000;
  additionalparam15 = 0.020000;
  numcustomparams = 4;
  c[48] = 1.000000,0.000000,0.000000,0.000000;
  c[49] = 0.000000,1.000000,0.000000,0.000000;
  c[50] = 0.000000,0.000000,1.000000,0.000000;
  c[51] = 0.500000,0.000000,0.000000,0.000000;
  numstages = 4;
  
  STAGE 1 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
  STAGE 2 = {
    texturetype = normalmap;
  }
  STAGE 3 = {
    texturetype = texture_index;
    textureindex = nomodifier("attenuation_lin.tex",clamp);
  }
  STAGE 4 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
}

SHADER spot_bump_spec4 {
  usevertexprg = true;
  useworldvp = false;
  vp_syntax = xbox;
  modelviewtracking = identity;
  lightsourcepos = 0.000000,0.000000,0.000000,1.000000;
  lightsourcecol = 1.000000,1.000000,1.000000,100.000000;
  lighttracking = key;
  lightsourcekey = #1;
  vertexprogram={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	mov r8, v2
	dp3 R9.w, v9,v9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, v9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	add r0, c28, -v0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov r0, v0
	dp4 r4, r0, c50 
	dp4 r4.x, r0, c48
	dp4 r4.y, r0, c49
	mad r4.x, r4.w, c51.x, r4.x 
	mad r4.y, r4.w, c51.x, r4.y 
	mov oT2, r4

	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x

	ADD R2, c24, -v0
	DP3 R1.x, R10, R2
	DP3 R1.y, R9, R2
	DP3 R1.z, R8, R2
	DP3 R1.w, R1, R1
	RSQ R1.w, R1.w
	MUL R1.xyz, R1, R1.w
	
	DP3 R0.w,   R7, R7
	RSQ R0.w,   R0.w
	MUL R0.xyz, R7, R0.w
	
	ADD oT3.xyz, R0,R1
	mov oT1, v11
 }  
  vertexprogram_model={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	dp3 r8, c0, v2
	dp3 r8.y, c1, v2
	dp3 r8.z, c2, v2
	dp3 r9, c0, v9
	dp3 r9.y, c1, v9
	dp3 r9.z, c2, v9
	dp3 R9.w, r9,r9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, r9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	dp4 r0, c0, v0
	dp4 r0.y, c1, v0
	dp4 r0.z, c2, v0
	dp4 r0.w, c3, v0
	add r3, c28, -r0
	dp3 r7.x, r10, r3
	dp3 r7.y, r9, -r3
	dp3 r7.z, r8, r3
	
	dp4 r4, r0, c50 
	dp4 r4.x, r0, c48
	dp4 r4.y, r0, c49
	mad r4.x, r4.w, c51.x, r4.x 
	mad r4.y, r4.w, c51.x, r4.y 
	mov oT2, r4

	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x

	DP3 R1.x, R10, -r0
	DP3 R1.y, R9, -r0
	DP3 R1.z, R8, -r0
	DP3 R1.w, R1, R1
	RSQ R1.w, R1.w
	MUL R1.xyz, R1, R1.w
	
	DP3 R0.w,   R7, R7
	RSQ R0.w,   R0.w
	MUL R0.xyz, R7, R0.w
	
	ADD oT3.xyz, R0,R1
	mov oT1, v11
 }  

  usefragmentshader = true;
  fragment_syntax = xbox;
  fragmentshader={
	xps.1.1
	def c0, 0.0f, 0.0f, 0.0f, 0.5137f
	tex t0
	tex t1
	tex t2
	tex t3
	xdd r1,t3, t0_bx2, t1_bx2, t3_bx2, t1_bx2
	xmma r1,t3,discard, r1, t0.a, t3,t3
	mul t3, t3, t3
	mul t3, t3, c0.a
	mul t3, t3, t2
	xfc t3,prod,zero,zero, r1,v0,t1.a
  }
  
  usecolors = true;
  useblending = true;
  blendfunc = src_alpha,one;
  writezbuffer = false;
  faceculling = back;
  additionalparam0 = 2.000000;
  additionalparam1 = 3.000000;
  additionalparam4 = 1.000000;
  additionalparam5 = 1.000000;
  additionalparam6 = 1.000000;
  additionalparam15 = 0.020000;
  numcustomparams = 4;
  c[48] = 1.000000,0.000000,0.000000,0.000000;
  c[49] = 0.000000,1.000000,0.000000,0.000000;
  c[50] = 0.000000,0.000000,1.000000,0.000000;
  c[51] = 0.500000,0.000000,0.000000,0.000000;
  numstages = 4;
  
  STAGE 1 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
  STAGE 2 = {
    texturetype = normalmap;
  }
  STAGE 3 = {
    texturetype = texture_index;
    textureindex = nomodifier("attenuation_lin.tex",clamp);
  }
  STAGE 4 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
}


SHADER spot_bump_spec8 {
  usevertexprg = true;
  useworldvp = false;
  vp_syntax = xbox;
  modelviewtracking = identity;
  lightsourcepos = 0.000000,0.000000,0.000000,1.000000;
  lightsourcecol = 1.000000,1.000000,1.000000,100.000000;
  lighttracking = key;
  lightsourcekey = #1;
  vertexprogram={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	mov r8, v2
	dp3 R9.w, v9,v9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, v9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	add r0, c28, -v0
	dp3 r7.x, r10, r0
	dp3 r7.y, r9, -r0
	dp3 r7.z, r8, r0
	
	mov r0, v0
	dp4 r4, r0, c50 
	dp4 r4.x, r0, c48
	dp4 r4.y, r0, c49
	mad r4.x, r4.w, c51.x, r4.x 
	mad r4.y, r4.w, c51.x, r4.y 
	mov oT2, r4

	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x

	ADD R2, c24, -v0
	DP3 R1.x, R10, R2
	DP3 R1.y, R9, R2
	DP3 R1.z, R8, R2
	DP3 R1.w, R1, R1
	RSQ R1.w, R1.w
	MUL R1.xyz, R1, R1.w
	
	DP3 R0.w,   R7, R7
	RSQ R0.w,   R0.w
	MUL R0.xyz, R7, R0.w
	
	ADD oT3.xyz, R0,R1
	mov oT1, v11
 }  
  vertexprogram_model={
      	xvs.1.1
	dp4 oPos.x, v0, c8
	dp4 oPos.y, v0, c9
	dp4 oPos.z, v0, c10
	dp4 oPos.w, v0, c11
	
	dp3 r8, c0, v2
	dp3 r8.y, c1, v2
	dp3 r8.z, c2, v2
	dp3 r9, c0, v9
	dp3 r9.y, c1, v9
	dp3 r9.z, c2, v9
	dp3 R9.w, r9,r9
	add R11.x, -r9.w, c26.x
	rcp R9.w, R9.w
	mul r9, r9, r9.w
	mul r9, r9, -r11.x
	mul r10, r8.zxyw, r9.yzxw
	mad r10, r8.yzxw, r9.zxyw, -r10
	
	dp4 r0, c0, v0
	dp4 r0.y, c1, v0
	dp4 r0.z, c2, v0
	dp4 r0.w, c3, v0
	add r3, c28, -r0
	dp3 r7.x, r10, r3
	dp3 r7.y, r9, -r3
	dp3 r7.z, r8, r3
	
	dp4 r4, r0, c50 
	dp4 r4.x, r0, c48
	dp4 r4.y, r0, c49
	mad r4.x, r4.w, c51.x, r4.x 
	mad r4.y, r4.w, c51.x, r4.y 
	mov oT2, r4

	mov oT0.xyz, r7
	rcp r6, r7.z
	mul r6.x, r6.x, c29.w
	add r6.x, r6.x, c26.y
	mul oD0.xyz, c29, r6.x

	DP3 R1.x, R10, -r0
	DP3 R1.y, R9, -r0
	DP3 R1.z, R8, -r0
	DP3 R1.w, R1, R1
	RSQ R1.w, R1.w
	MUL R1.xyz, R1, R1.w
	
	DP3 R0.w,   R7, R7
	RSQ R0.w,   R0.w
	MUL R0.xyz, R7, R0.w
	
	ADD oT3.xyz, R0,R1
	mov oT1, v11
 }  

  usefragmentshader = true;
  fragment_syntax = xbox;
  fragmentshader={
	xps.1.1
	tex t0
	tex t1
	tex t2
	tex t3
	xdd r1,t3, t0_bx2, t1_bx2, t3_bx2, t1_bx2
	xmma r1,t3,discard, r1, t0.a, t3,t3
	mul t3, t3, t3
	mul t3, t3, t3
	mul t3, t3, t2
	xfc t3,prod,zero,zero, r1,v0,t1.a
  }
  
  usecolors = true;
  useblending = true;
  blendfunc = src_alpha,one;
  writezbuffer = false;
  faceculling = back;
  additionalparam0 = 2.000000;
  additionalparam1 = 3.000000;
  additionalparam4 = 1.000000;
  additionalparam5 = 1.000000;
  additionalparam6 = 1.000000;
  additionalparam15 = 0.020000;
  numcustomparams = 4;
  c[48] = 1.000000,0.000000,0.000000,0.000000;
  c[49] = 0.000000,1.000000,0.000000,0.000000;
  c[50] = 0.000000,0.000000,1.000000,0.000000;
  c[51] = 0.500000,0.000000,0.000000,0.000000;
  numstages = 4;
  
  STAGE 1 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
  STAGE 2 = {
    texturetype = normalmap;
  }
  STAGE 3 = {
    texturetype = texture_index;
    textureindex = nomodifier("attenuation_lin.tex",clamp);
  }
  STAGE 4 = {
    texturetype = cubemap;
    textureindex = normalizationcubemap(128);
    texgen_s = tangent_vector;
  }
}



EFFECT point_world_bump_diff {
  FALLBACK(xbox)={point_bump_diffuse};
}

EFFECT point_world_bump_spec1 {
  FALLBACK(xbox)={point_bump_spec2};
}

EFFECT point_world_bump_spec2 {
  FALLBACK(xbox)={point_bump_spec2};
}

EFFECT point_world_bump_spec3 {
  FALLBACK(xbox)={point_bump_spec4};
}

EFFECT point_world_bump_spec4 {
  FALLBACK(xbox)={point_bump_spec8};
}

EFFECT point_world_bump_spec5 {
  FALLBACK(xbox)={point_bump_spec8};
}

EFFECT point_world_bump_spec6 {
  FALLBACK(xbox)={point_bump_spec8};
}

EFFECT point_world_bump_spec7 {
  FALLBACK(xbox)={point_bump_spec8};
}

EFFECT point_world_bump_spec8 {
  FALLBACK(xbox)={point_bump_spec8};
}

EFFECT point_world_flat_diff {
  FALLBACK(xbox)={point_flat_diffuse};
}

EFFECT point_world_flat_spec1 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_world_flat_spec2 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_world_flat_spec3 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_world_flat_spec4 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_world_flat_spec5 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_world_flat_spec6 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_world_flat_spec7 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_world_flat_spec8 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT spot_world_bump_diff {
  FALLBACK(xbox)={spot_bump_diffuse};
}

EFFECT spot_world_bump_spec1 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec2};
}

EFFECT spot_world_bump_spec2 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec2};
}

EFFECT spot_world_bump_spec3 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec4};
}

EFFECT spot_world_bump_spec4 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec8};
}

EFFECT spot_world_bump_spec5 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec8};
}

EFFECT spot_world_bump_spec6 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec8};
}

EFFECT spot_world_bump_spec7 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec8};
}

EFFECT spot_world_bump_spec8 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec8};
}

EFFECT spot_world_flat_diff {
  FALLBACK(xbox)={spot_flat_diffuse};
}

EFFECT spot_world_flat_spec1 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_world_flat_spec2 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_world_flat_spec3 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_world_flat_spec4 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_world_flat_spec5 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_world_flat_spec6 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_world_flat_spec7 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_world_flat_spec8 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT point_model_bump_diff {
  FALLBACK(xbox)={point_bump_diffuse};
}

EFFECT point_model_bump_spec1 {
  FALLBACK(xbox)={point_bump_spec2};
}

EFFECT point_model_bump_spec2 {
  FALLBACK(xbox)={point_bump_spec2};
}

EFFECT point_model_bump_spec3 {
  FALLBACK(xbox)={point_bump_spec4};
}

EFFECT point_model_bump_spec4 {
  FALLBACK(xbox)={point_bump_spec8};
}

EFFECT point_model_bump_spec5 {
  FALLBACK(xbox)={point_bump_spec8};
}

EFFECT point_model_bump_spec6 {
  FALLBACK(xbox)={point_bump_spec8};
}

EFFECT point_model_bump_spec7 {
  FALLBACK(xbox)={point_bump_spec8};
}

EFFECT point_model_bump_spec8 {
  FALLBACK(xbox)={point_bump_spec8};
}

EFFECT point_model_flat_diff {
  FALLBACK(xbox)={point_flat_diffuse};
}

EFFECT point_model_flat_spec1 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_model_flat_spec2 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_model_flat_spec3 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_model_flat_spec4 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_model_flat_spec5 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_model_flat_spec6 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_model_flat_spec7 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT point_model_flat_spec8 {
  FALLBACK(xbox)={point_flat_spec};
}

EFFECT spot_model_bump_diff {
  FALLBACK(xbox)={spot_bump_diffuse};
}

EFFECT spot_model_bump_spec1 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec2};
}

EFFECT spot_model_bump_spec2 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec2};
}

EFFECT spot_model_bump_spec3 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec4};
}

EFFECT spot_model_bump_spec4 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec8};
}

EFFECT spot_model_bump_spec5 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec8};
}

EFFECT spot_model_bump_spec6 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec8};
}

EFFECT spot_model_bump_spec7 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec8};
}

EFFECT spot_model_bump_spec8 {
  FALLBACK(xbox)={spot_bump_diffuse,spot_bump_spec8};
}

EFFECT spot_model_flat_diff {
  FALLBACK(xbox)={spot_flat_diffuse};
}

EFFECT spot_model_flat_spec1 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_model_flat_spec2 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_model_flat_spec3 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_model_flat_spec4 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_model_flat_spec5 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_model_flat_spec6 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_model_flat_spec7 {
  FALLBACK(xbox)={spot_flat_spec};
}

EFFECT spot_model_flat_spec8 {
  FALLBACK(xbox)={spot_flat_spec};
}
