Clap your hands say yeah right

Archive for April, 2006

Verso, step 1 (pascal to java)

Just finished the first step which actually is nothing more* than the old pascal-renderer now in unit-tested java. See example (crisp and computer generated) on the right: 25 reflective spheres, 2 triangles, 3 omnilights, one pinhole-camera (eye-target-configurable) and a very basic gradient sourrounding (a function of the direction (the z-component) of all rays missing objects). I didn’t bother to give the two triangles forming the floor or any of the spheres colors. They are colorless 60%-reflectors. The blue appearance comes from the reflected blue sourrounding space.

* … actually it is even a little less: I decided to drop the thorus since it is somewhat academic (unless you plan to render alot of donuts).

No comments

Verso Renderer

The other day I found bits and pieces of the raytracer I wrote in pascal at upper secondary school … a very basic direct phong illumination + reflection renderer only supporting a few primitives (with an analytically solved thorus as the (for the time being) most challeging part) … only capable of producing the typical too clean, too perfect, too crisp, too computer generated images. You know the kind.

Anyway… Browsing through the pascal sources I was hit by two things. First of all I realized that the code itself (although compact) showed no signs of OO or any good programming practices whatsoever (in short it was a procedural mess). Quite frankly the code of course reflected my programming skills at that time. Moreover I started to remember the joy (no… actually that should be the fundamental joy) of trying to mimic the behaviour of light, its radiation and its interaction with materia by using mathematics and code.

My reignited interest led me to surf around the net for some days just to see how far the rendering ideas/theories/community had come. Not surprisingly I found that alot had happened during the last 15 years. This is certainly true in terms of new theories, algorithms and insights into the physical aspects of light radiation/distribution, but partly also a natural consequence of faster computers. Some of the new theories and ideas were so inspiring that I decided to rewrite my renderer in java and do it right this time, OO, plugable architecture, thorougly unit-tested and see how far it will get me this time (before I get bored or before the going gets too though).



I have set up a roadmap (which also is a work in progress):

  1. DONE: Raytracing of simple objects (sphere, triangles), reflection, phong with no GI, pinhole-camera-model, omni-lights, feeler-ray-shadows.
  2. DONE: Local-coordinate system per object together with object-to-world transformations-matrix (rotation, skew, size, translation), and world-to-object inverse transformation.
  3. DONE: Mesh-object + kd-tree speedup.
  4. Dielectrics / Transparency.
  5. Texture & Normal mapping.
  6. Ambient Occlusion.
  7. DONENetwork-rendering (Java spaces might be handy here).
  8. Area-lights (stochastic sampling).
  9. DONEThin-lens-camera model / Depth-of-field.
  10. HDR-image lighting.
  11. SOME WORK DONEOther material-models (Cook-Torrance, Ashikmin/Shirley, Blinn-Phong).
  12. GI via Monte Carlo path-tracing + importance sampling.
  13. Photon-mapping + irradiance caching. Caustics.
  14. Metropolis Light Transport.
  15. Wavelength representation of light instead of RGB-triplet. Dispersion.
  16. Sub-surface scattering.

I have no idea how long this will take me, or if I ever get there (or anywhere). I will post some images together with some of my experiences on this blog for each of the steps I take down that roadmap.

I have no name for this project … yet.

Correction. I decided to name the renderer and the project as I did name the initial post (describing my sudden interest for soemthing I was
working on once): Reignition Renderer.

Change my mind. It will be Verso Renderer.

No comments

Oskar … is out

I just got a son http://oskar.busenkelt.se.
My first. Absolutely fascinating. The whole thing.

2 comments