Home | What is Raytracing? | Raytracing Algorithm | Raytracing Reference | How to write a Raytracer | Raytracers | VRWorld4 | Technical Articles | Links | Gallery | News | Contributions | Humour | About Me | Help

FuzzyPhoton

VRWorld4

(This section is getting a little long in the tooth. I haven't worked on the source for aeons and it might never get uploaded at all. For now, assume this page is a historical artifact.)

VRWorld, now in version 4, is my raytracer. The previous 3 versions weren't all raytracers: VRWorld1 was a wireframe renderer, VRWorld2 was a very primitive volume tracer, and VRWorld3 used a z-buffer algorithm. The name stands for "Virtual Reality World", but this is slightly misleading because the program is pretty far (that is to say, very very far) from real-time virtual reality. But the output and efficiency are fairly good for a raytracer (even though I say so myself!). Take a look at the gallery of pictures created with VRWorld4.

VRWorld4 follows the general raytracing algorithm, but has some add-ons that aren't very common. One is the handling of coincident surfaces. Often, a ray intersects more than one surface at the same point. The question arises, which surface do we render at that point? Most raytracers fudge the issue by just selecting one at random. However, VRWorld4 uses accumulation techniques to get averaged surface properties at that point. This feature is mainly used as an antialiasing technique, but you can even use it as an (ill-advised!) texture blending method. Another feature is the introduction of programmable shaders a la Renderman. However, there's no shading language of any sort, so right now you'll have to write C++ code (in an easy-to-understand class-based interface) and compile and link the module. Other features include object hierarchies and automatic bounding box generation.

However, VRWorld4 is nowhere near perfect, and there are still some drawbacks which prevent me putting it up for download. For instance, it's not usable for anyone who wants to write POV-style scene description text files. This is a planned feature, but right now I know next to nothing about parser technology and any change to a scene description requires a recompile. On the Windows platform, the main libraries come as DLL's, so you'll only have to compile your section of the code (i.e. the scene description and any extensions) and link it to the DLL's. I may actually leave it like this, because C++ is undoubtedly a more powerful way of controlling the renderer than any scripting language could be, plus you could write your own applications using VRWorld4 as the rendering backend. If you're comfortable with C++ code, you might want to take a look at it. It's been written keeping extensibility in mind. It's very easy to add new primitives and new shaders without modifying the main program code and the structure will accommodate anything from isosurfaces to volumetric lights to fractal bumpmaps. As a caveat, its modular design makes it very extensible. I've compiled so far with Turbo C++ 3, Borland C++ Command-Line Tools 5.5 and Microsoft Visual C++ 6. Watch this space for download details, hopefully sometime soon.

Feature list

Siddhartha Chaudhuri, 2002