  * http://mathworld.wolfram.com/DiskPointPicking.html
  */
 vec3 randomDiskPoint_(vec3 rand, vec3 n) {
-  float r = rand.x * 0.5 + 0.5;
-  float angle = (rand.y + 1.0) * PI;
+  float r = rand.x * 0.5 + 0.5; // [-1..1) -> [0..1)
+  float angle = (rand.y + 1.0) * PI; // [-1..1] -> [0..2*PI)
   float sr = sqrt(r);
   vec2 p = vec2(sr * cos(angle), sr * sin(angle));
   /*


/**
 * Generate a random value in [-1..+1).
 * The distribution MUST be really uniform and exhibit NO pattern at all,
 * because it is heavily used to generate random sample directions for various
 * things, and if the random function contains the slightest pattern, it will

 * http://mathworld.wolfram.com/SpherePointPicking.html
 */
vec3 randomSpherePoint_(vec3 rand) {
  float ang1 = (rand.x + 1.0) * PI; // [-1..1) -> [0..2*PI)
  float u = rand.y; // [-1..1), cos and acos(2v-1) cancel each other out, so we arrive at [-1..1)
  float u2 = u * u;
  float x = sqrt(1.0 - u2) * cos(ang1);
