anchor.diff:    float phi = 2.0f * M_PI * xi.x;
     float theta = acos(sqrt((1.0f - xi.y)/((a*a - 1.0f) * xi.y + 1.0f)));
     float sinTheta = sin(theta);
  -  vec3 facet = vec3(cos(phi) * sinTheta, sinTheta * sin(phi), cos(theta));
  -  float trans = getAngle(oNormal);
  -  return rotationMatrix(cross(oNormal,vec3(0.0,0.0,1.0)),trans) * facet;
  +  vec3 u = normalize(cross(oNormal,vec3(0.0,0.0,1.0)));
  +  vec3 v = normalize(cross(u, oNormal));
  +  vec3 facet = cos(phi) * sinTheta * u + sinTheta * sin(phi) * v + cos(theta) * oNormal;
  +  return facet;
   }
   
   // GGX PDF
  
positive.code:     reflectance[i] = texRef;
      if(dot(mat.emittance, vec3(1)) > 0.0 || rand(origin.zy) > albedo(texRef)){break;}
    }
    for(int i=bounces-1; i>=0; i--){
      color = reflectance[i]*color + emittance[i];
    }
    //color = pow(color,vec3(gamma));
  
negative.code:   vec3 color = vec3(0);
    int bounces = 0;
    bool specular = true;
    for(int i=0; i < NUM_BOUNCES; ++i){
      result = traverseTree(ray);
      vec3 origin = ray.origin + ray.dir * result.t;
      bounces++;
  