IOTDs [0] I have posted somewhere in the past, somewhen in the web [1]. Somehow.

Showing off the "q/kd"-tree

IFS: round 1

A simple hybrid of Quad-Tree and Kd-Tree, specialised to heightmaps, allowed me to ray trace away around 130 million triangles (it would have been four times more on my current 2GiB box, without a big loss of performance) at approximately 3-8 frames/second, on 512x512 pixels of display.

A demo/benchmark for GNU/Linux is available for download.

Sometimes, in lonesome and windy nights, something shakes me, making me nervous on implementing a full Realtime Terrain Ray Tracer, with plants, and stuff like that. Someday I will. Yes. ...

Gladius GPRT 2

gladius gprt 2

I have finally implemented a Practical Analytic Model for Daylight by Preetham into gladius. It is awesome once you see your implementation running, and then grinding on the domain, watching the atmosphere during sunset and sunsettle, at noon, in the morning, etc. I am still using an implementation based on the one I have coded for gladius in picogen.

The combination of being both a Realtime and Non-Realtime Ray Tracer made the whole program to hard to maintain in the end. But I do not regret, I have to thank my old Ray Tracer, honestly (no, I do not talk to it;).

Sidenote: The Gladius Ray Tracer was the last one (except for xitrace, which never reached the first 1K LOC, as far as I remember) before picogen.

Gladius GPRT 1

gladius gprt 1

The gladius General Purpose Ray Tracer was my most usefull Ray Tracer, in that I have learned most of Monte Carlo Ray Tracing, Realtime Ray Tracing, advanced Acceleration Structures, Noise Algorithms, etc.

Call me narcissistic, but I have some print-outs of gladius, framed, and nailed onto some wall in my habitation ...

Non-Linear IFS: Fractal Flames

fractal flames

After rendering a few hundreds of linear IFS, I went a step further. I assimilated Scott Draves' Paper "The Fractal Flame Algorithm". Fractal Flames are a generalisation of linear ifs, in that they allow non-linear functions like square roots, sinus and co., and more to be used for sampling. Also, Scott combined all transformations (x-forms, usually 3-10, or more) into a big one, interpolating between them by some factor.

Linear IFS

linear ifs

After doing 3d-stuff for years, companion Thomas Ludwig showed me something different: IFS-fractals (that's for iterated function systems). Just a couple of not even 50 lines produced some of the most beautiful renditions I have ever seen.

Another Glass-Incarnation: Glass++

glass++

It seems that for every new tec I have learned, I have also coded a new Ray Tracer. At least did I name my first three ones in a similar manner: "Glass something".

New to me was the Surface Area Heuristics algorithm by Vlastimil Havran used in the Kd-Tree compiler, which caused a big boost in runtime performance.

Additionally I coded up a real (though not necessarily correct) Path Tracing Kernel, and a Phong Shader for glossy reflections and mirrors (I have also misused it for glossy refraction).

XploderZ

xploderz

Man, that game had a little bit of potential. Thanks at this point to the people who made some cool levels and awesome music. But the game showed up to be too legacy, and too dependent on DirectX.

For the unaware: XploderZ was planned to be a bomberman clone in 3d, with elements of a 1st Person Shooter, Hide and Hunt like in Metal Gear Solid, with lots of explosions, a dynamic, situation dependent soundtrack, and an easy to setup campaign system.

The AI was saturating, as the enemies were actually walking to the position where they did see you at last (on a straight line, but that's okay in a bomberman-like level), and then watching around for you. Of course you could try to get closer to the back of the enemy, lay some bomb, tip them with a shot of your gun (so they turn around and hunt you) and get off..., meh, someday I'll revive that concept.

Glass-Ray Tracer, Ed. 2

monte-carlo w/out GI

Edition 2 of the Glass Ray Tracer. I can't remember anything really notable about it, except that I have implemented my first Kd-Tree (with naive tree-building) then.

And not to forget about my first hands-on on Monte Carlo Methods in Ray Tracing.

But honestly, I did not extend this piece of software to support mutliple ray bounces, hence the only real Monte Carlo thing was the generation of the primary intersection off-rays, and thus the soft-shadowing.

Glass - Ray Tracer

glass-ray tracer 1

Nothing really spectacular, I have just coded this thing up for fun. Then a discussion on devmaster has been started about the lousy performance of Glass. Allow me to cite Thierry Berger-Perrin (http://ompf.org):

"This message is sponsored by the Association Against Indolent Raytracing.
Everytime a duelling sphere-and-plane render takes more than a split second, a kitten dies."


It was exactly that discussion that made me snoopy and in the end addicted to Ray Tracing.

Root-Engine 2

root-engine (2)

Here I have added cubemaps (from the proprietary Terragen). and more massive plant-populations. See some statistics:

  • 5000Flowers = 20.000 triangles (put in one vertex buffer for drawing)
  • 48 FPS when not moving (= no plant re-sorting), 25-30 FPS when moving
  • my system: Athlon XP 1800+, Raden 9700 pro (128MB), 512 MB DDR

Well, the only back-end I have coded together was heavily laden of DirectX, and the whole API was a bit biased through this, so I tombstoned the engine in the end.

Root-Engine 1

root-engine (1)

Ahh, teh root-engine. I've hacked several months away on it. It was, together with picogen and xploderz, one of my 10k+ LOC projects.

It had a big, fat and COM-like interfaced engine, with the low level back-end being independent from the front-end, i.e. the low-level stuff would be invisible to a game that runs the root-engine.

skytroopers

skytroopers

A little, interactive graphics demo. Initially skytroopers was planned to be a one-week-shot of a game, where you shoot rocks while falling down onto a planet (then followed by a low-altitude phase where you would have to land the ship), but then I recognized it was actually too complex to be implemented in such a small time window.

My guess was that it's better to release a good demo than a bad game.

ballheads

ballheads

The never released predecessor of the never released xploderz. Too bad I never released any of them two ... and too bad I can never release the source code, it would be an educational disaster to those who are new in the coding-discipline.

Something I called machinaDX

machinaDX

One of the oldest landscape rendering things I have done (it dates back to 2001 A.D.).

(note that the poster is officially Thomas Terkatz, a good friend of mine; the reason for this is that I had no inet then, which caused some confusion, because I had no own EMail address either :P)