Cornell Box similar to Henrik Wann Jensen's.
200,000 photons. 50,000 caustic photons.
600 gather rays. 4 samples per pixel.
Triangles: 11,682
Resolution: 1024x768
Rendering time: 5 minutes


photon map

15 seconds

Seminar room - Front view. Model by Tony Giordano.
5,000,000 photons. 400 gather rays. 16 samples per pixel.
Triangles: 79,795
Resolution: 1400x466
Rendering time: 29 minutes

Mouse neuron - dendrite. Data courtesy of Dr. Ouimet, FSU Biology.
4,000,000 photons. 2,400 gather rays. 8 samples per pixel.
Triangles: 155,164
Resolution: 2048x2048 (originally)
Rendering time: 12 hours

Brain in a box - Model by Josh Grant.
1,000,000 photons. 300 gather rays. 4 samples per pixel.
Triangles: 609,718
Resolution: 1024x768
Rendering time: 23 minutes

Cornell Box similar to Per H. Christensen's.
400,000 photons. 3,000 gather rays. 4 samples per pixel
Triangles: 14,418
Resolution: 1024x1024
Rendering time: 16 minutes

Another box scene.
200,000 photons. 500,000 caustic photons.
600 gather rays. 4 samples per pixel.
Triangles: 7,244
Resolution: 1024x768
Rendering time: 21 minutes
11/26/03

Extensive revisions (over 40 checkins to RCS):

  • Multi-threading - removed a bunch of static variables, added parallel random number generators, buffered photon storing, mutexes for irradiance cache and output. I see about a 2.25 speed-up on my dual Xeon machine w/ hyperthreading.
  • Diffuse transparency - looks like frosted glass, can be used for subsurface scattering effects
  • Major overhaul to photon emission - is multi-threaded, buffered, the number is controllable within a factor of 2, is completely deterministic because of trajectory splitting using quasi-random sequences, has a bug fix for photons bouncing infinitely against two-overlapping surfaces, limits the use of Russian Roulette when one color component is too large, and photons have a flag for which light source they came from
  • Made several improvements to the irradiance cache based on the Radiance source code: cache point radius reduction with min and max size, translational gradient reduction, improved inclusion (wi>1/a) testing (speed/artifact removal), and fixed the rotational gradient.
  • Experimented with L(S|D)*S+D caustic photons, went back (to LS+D) due to noisy caustics
  • Added minimum ray distance before using approximate solution, based on scene size. Also, gather rays are specularly reflected -- earlier renderings were missing this subtle component.
  • Added cubic interpolation between camera keyframes, for animations
  • Experimented with Photon-map based importance sampling for indirect illumination, went back (to stratified sampling) due to inferiority in Cornell scene. However, for strong indirect lighting the PM IS is superior.
  • Variance control - added but not really used, this allows you to limit the variance in a pixel's samples
  • Reworked ray object - various things are now stored in the ray, including hit position, length, barycentric coordinates, and thread context
  • Fixed specular reflection going into surfaces
  • Fixed overlapping surfaces intersection
  • Tuned ray-triangle intersection code for accuracy/speed
  • Easy to control Russian Roulette for recursion
  • Added README file -- the first inclusion of any form of documenation. Includes the commands used to create two of the above Cornell Box renderings.
  • Bibliography coming soon...


An animation of a mouse neuron that I made in July.
10/24/03


The variance in the cornell box scene.
The variance has variance, doh.
10/23/03

I got a new workstation :)



mouse neuron rendered as glass
(model scanned with confocal microscope
by FSU Neuroscience dept.)
1024x768 25 samples
1.3 hours

very thin ring on wood table
1024x768 50 samples
2.5 hours

1 light sample, according to area of luminaire
p=1/A, 1.78 seconds

1 light sample, according to solid angle of luminaire
p=1/w, 1.89 seconds
9/2/03



1024x768 16 samples
4.3 hours

1024x768 16 samples
1.8 hours

1024x768 16 samples
2.4 hours
8/21/03



8/13/03 (6 minutes)



800x600 500 paths/pixel, 5.8 hours
(2.4GHz CPU)

1280x960 16 samples, 30 paths/sample
6.7 hours (2.4GHz CPU)
8/7/03


800x600 500 paths/pxel 6.5 hours (1.7GHz) 1280x960 440 paths/pixel 4 hours (2 2.4GHz CPUs)
1280x960 200 paths/pixel 4 hours (2 2.4GHz CPUs) 1280x960 200 paths/pixel 4 hours (2 2.4GHz CPUs)
Glitch in intersection with the chairs
7/23/03



7/22/03 (100,000 photons fired / 100 in estimate for Global map, 20,000,000 photons fired / 200 in Caustic map, 50 paths/pixel, 10 minutes)



7/21/03 (1,000,000 scattered photons, 100 in estimate, 50 paths/pixel, 5 minutes)


Direct illumination only (100 samples/pixel, 3 minutes) Global photon map (70000 photons in map, 30 seconds)
7/20/03



7/18/03 (85000 scattered photons, 3 seconds)


10,000 paths/pixel, 35 hours Example octree
7/13/03


1000 paths/pixel 5.7 hours sobol seq. vs. uniform random seq.
7/13/03 Maximum depth=5


10 paths/pixel 4 minutes 100 paths/pixel 24 minutes
1000 paths/pixel 4.1 hours 100 paths/pixel 40 minutes (interesting error occurred)
7/12/03 Maximum depth=5


Larger light, less noise Smaller light, more noise
7/11/03 Maximum depth=5 1000 paths/pixel 1.5hrs (each)


1 paths/pixel 14 seconds 10 paths/pixel 2 minutes
100 paths/pixel 33 minutes 1000 paths/pixel 6.1 hours
7/2/03 Maximum depth=4



6/23/03 (6 hours 40 minutes 800x600)



6/23/03 (13 minutes)



6/21/03 (5 minutes 26 seconds)



6/21/03 (1 hour 17 minutes, fullsize image is 1024x768 15samples/pixel)



6/21/03 (65 seconds)



6/21/03 (18 seconds)



6/14/03 (78 seconds)



6/09/03 (9 hours)



6/09/03



6/09/03 (51 hours)



6/09/03



6/02/03 (3 seconds)



5/23/03 (2 seconds)



5/22/03 (Debugging image >60fps)



5/20/03 (Debugging image >60fps)



5/11/03 (1 second)



5/11/03 (4 seconds)



5/08/03 (4 seconds)



4/23/03 (4 seconds)