anchor.diff:  				} else if (m == MAT_WATER) {
   					c = vec3(0, 0, 0);
   				}
  +
   				c *= occlusion(p, normal, rd);
   				addLightning(c, normal, eye, p);
   				if (end) {
   					transmittance = 0;
   				}
   				col = mix(col, transmittance * c + scatteredLight, ref);
  +
   				if (m == MAT_GROUND) {
   					return col;
   				} else if (m == MAT_PEND) {
  
positive.code: 					ref *= 0.9;
  				}
  
  #ifdef REFRACTION
  				rd = refract(rd, getNormal(p, rd), 1/1.2);
  #endif
  #ifdef REFLECTION
  				rd = reflect(rd, getNormal(p, rd));
  #endif
  				
  
  				ro = p + rd*0.05;
  				t = 0;
  				//i = 0;
  				//maxIter /= 2;
  				break;
  			}
  //			if (t > maxDis) {
  //				return col;
  //			}
  		}
  
  //		if (ref < 0.1) {
  //			break;
  //		}
  	}
  	return col;
  }
  
  
  
  
  
  void main()
  {
  
negative.code: 
  }
  
  #define MAT_GROUND 1.0
  #define MAT_PEND 2.0
  #define MAT_WATER 3.0
  
  // TODO: cleanup and fix noise texture
  vec2 water(vec3 p, vec3 rd)
  {
  	if (rd.y > 0) {
  