anchor.diff:    }
   }
   
  -vec3 randomPointOnTriangle(Triangle tri){
  +vec3 randomPointOnTriangle(Triangle tri, vec2 seed){
     vec3 e1 = tri.v2 - tri.v1;
     vec3 e2 = tri.v3 - tri.v1;
  -  float u = rand(coords.xy);
  -  float v = (1.0 - u) * rand(coords.yx);
  -  return e1 * v + e2 * u;
  -}
  -
  -Triangle randomLight(){
  -  vec2 range = lightRanges[uint(rand(coords.xy) * numLights)];
  -  float index = floor(range.x + rand(coords.yx) * (range.y + 1.0 - range.x));
  +  float u = rand(coords.xy + seed);
  +  float v = (1.0 - u) * rand(coords.yx + seed);
  +  return tri.v1 + e1 * v + e2 * u;
  +}
  +
  +Triangle randomLight(vec2 seed){
  +  vec2 range = lightRanges[uint(rand(coords.xy + seed) * numLights)];
  +  float index = floor(range.x + rand(coords.yx + seed) * (range.y + 1.0 - range.x));
     return createLight(index);
   }
   
  
positive.code: 	vec3 top =  pct.x * (rightMax - leftMax) + leftMax;
  	vec3 bottom =  pct.x * (rightMin - leftMin) + leftMin;
  	return pct.y * (top - bottom) + bottom;
  }
  
  void main(void) {
  
negative.code:   float a = 12.9898;
    float b = 78.233;
    float c = 43758.5453;
    float dt= dot(co ,vec2(a,b) + float(tick) * vec2(0.0194161103, 0.0375151509));
    float sn= mod(dt,M_PI);
    return fract(sin(sn) * c);
  }
  