anchor.diff:      normal.y = map(p + ep.yxz, rd).x - map(p - ep.yxz, rd).x;
       normal.z = map(p + ep.yzx, rd).x - map(p - ep.yzx, rd).x;
       return normalize(normal);
  -
   }
   
   float occlusion(vec3 p, vec3 normal, vec3 rd)
  
positive.code: 	return vec2(max(h, dis), MAT_WATER);
  }
  
  vec2 pground(vec3 p, vec3 rd)  {
  	float incDrum = 1337;
  	float drum = 1337.0;
  	p.y -= -2.8;
  	float d = (incDrum + 1 - drum);
  	float dis = p.y + 0.5*texture(inTexture0, p.xz*0.25 ).x;
  	float w = 1.5 * smoothstep(0.0, 15.0 ,abs(p.z));
  	p.x -= + sin(p.z*0.25) * w;
  	p.x -= + sin(p.z*0.15) * w;
  	float s = 3.0  - 1.5 * smoothstep(0.0, 6.0 ,abs(p.z));
  //	if (abs(p.x) < s) {
  		dis += step(0, -abs(p.x) + s) * (s - abs(p.x));
  //	}
  
  	return vec2(dis*0.5, MAT_GROUND);
  }
  
  vec2 pendulum(vec3 p) {
  float theta1 = 1337.0;
  float theta2 = 1337.0;
  	float c1x = 1337.0;
  	float c1y = 1337.0;
  	float c2x = 1337.0;
  	float c2y = 1337.0;
  	vec3 p1 = (p - vec3(c1x, c1y, 0)) * rot(-theta1);
  	vec3 p2 = (p - vec3(c2x, c2y, 0)) * rot(-theta2);
  	vec3 c =  p -  vec3(c1x * 2.0, c1y * 2.0, 0);
  	float c1a = udRoundBox(p1 - vec3(0, 0, -0.07), vec3(0.15, 0.6, 0.01), 0.02);
  	float c1b = udRoundBox(p1 - vec3(0, 0, 0.07), vec3(0.15, 0.6, 0.01), 0.02);
  	float c1 = min(c1a, c1b);
  //	float c1 = udRoundBox(p1, vec3(0.15, 0.6, 0.01), 0.01);
  	float c2 = udRoundBox(p2, vec3(0.15, 0.45, 0.01), 0.02);
  	float dis = min(c1, c2);
  	vec2 res = vec2(dis  + 1 - step(9.5, iGlobalTime), MAT_PEND);
  	return res;
  }
  
  vec2 map(vec3 p, vec3 rd) {
  	vec2 res = pground(p, rd);
  //	if (iGlobalTime > 9.5) {
  		res = un(res, pendulum(p));
  //	}
  	res = un(res, water(p, rd));
  	res = un(res, vec2(sdBox(p-vec3(0,-0.5,0), vec3(0.5)), MAT_GROUND));
  	return res;
  }
  
  
  
  vec3 getNormal(vec3 p, vec3 rd)
  {
  
negative.code: 			if (d < 0.01 || end) {
  				vec3 c = vec3(1, 0, 1);
  				vec3 normal = getNormal(p, rd);
  
  				if (m == MAT_GROUND) {
  					c = mix(vec3(0.3,0.9,0.3), vec3(0.9,0.8,0.3), min(normal.y * 1.0, 1));
  				} else if (m == MAT_PEND) {
  