anchor.diff:  	return vec4(points, diss);
   }
   
  +vec3 lightAPos(vec3 p)
  +{
  +	p.z = mod(p.z, 4.0) - 2.0;
  +	return p;
  +}
  +
   vec4 lightA(vec3 p)
   {
   	vec3 lightPos = vec3(2, 0, 0);
  +	p = lightAPos(p);
   	float dis = length(p - lightPos);
   	vec3 col = vec3(1.0, 0.0, 0.0);
   	const float strength = 10.0;
  
positive.code: 	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
  
negative.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));
  	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);
  
  	float dis = length(lpos - pos);
  	vec3 invLight = normalize(lpos - pos);
  