anchor.diff:  	float spec = specular(normal, -invLight, normalize(eye - pos), 220.0);
   
   	float str = 1.0/(0.5 + 0.01*dis + 0.1*dis*dis);
  -	//str = towerLight(pos).x;
  -	float tmp = 0;
  -//	color =  color * (0.05 + 0.9*diffuse*light(pos).xyz) + spec*str;
   	//color =  color * (0.05 + 0.9*diffuse*light(pos).xyz + 0.2 * diffuses * lights(pos).xyz ) + spec*str + specs*strs*0.5;
   	color = color * (0.05 + 0.2*diffuses*lights(pos).xyz) + specs*strs*0.5;
   	color = clamp(color, vec3(0), vec3(1));
  -	//color *= str;
  -
   }
   
   #define MAT_GROUND 1.0
  
positive.code: 	r.z = mod(pos.z, s) - s * 0.5;
  	r.y -=  0.7;
  	float sw = 3.0  - 1.5 * smoothstep(0.0, 6.0 ,abs(pos.z));
  	//dis += step(0, -abs(p.x) + s) * (s - abs(p.x));
  //	r.x -= sw * 1.1;
  	r.x = abs(r.x) - sw * 1.3;
  	vec3 slpos = r;
  	vec3 invLights = normalize(-slpos);
  	float diffuses = max(0.0, dot(invLights, normal));
  	float specs = specular(normal, -invLights, normalize(eye - slpos), 50.0);
  	float diss = length(-slpos);
  	float strs = 1.0/(0.5 + 0.01*diss + 0.1*diss*diss);
  
  	vec3 lpos = vec3(0,-1,1);//LPOS;//vec3(1, 1, -2);
  
  	float dis = length(lpos - pos);
  	vec3 invLight = normalize(lpos - pos);
  
negative.code: 	return vec4(res, dis);
  }
  
  vec4 lightUnion(vec4 a, vec4 b)
  {
  	return vec4(a.rgb + b.rgb, min(a.w, b.w));
  }
  
  vec4 evaluateLight(vec3 pos)
  {
  	vec4 res = lightA(pos);
  	res = lightUnion(res, lightB(pos));
  	return res;
  }
  
  void addLightning(inout vec3 color, vec3 normal, vec3 eye, vec3 pos) {
  