Wednesday, January 28, 2009

Rant against povray

Recently, we were given an assignment to render some scenes using POVray and demonstrate to what we had learned about ray tracing. All right then, let's install it. OK. it may not be OSI compliant license but as the page there states, it's because of it's birth time. We are sure to have packages for it in ubuntu. It's a just a simple matter of running

$sudo apt-get install povray

I couldn't have been more wrong.

This project is quite screwed up as it turns out.

There has been no stable release for more than 4 years now. The project's mailinglists distinctly convey a sense of lack of developers. But this is the least of the troubles. Sure, I could have just stuck to the old but stable version. But it is not multithreaded.

Yup. That's right. A serial ray tracer.

If I didn't know better, I would have said that was a malapropism (GRE side effects, :-) ). People have been using SMP machines (if not multi core) for a while now and since POVray has been ported to many different machines before, it is incomprehensible that it's developers haven't threaded it yet.

The most irritating thing about it is their concept of beta timeout. Their betas usually expire after a fixed time. And on top of it, these guys can't even release betas in time. Look here.

They can't release the updated betas on time, aren't releasing new stable versions at all and everyone else is supposed to update every month or so.

I somehow manged to patch the vfe.cpp file referenced in the above link. I even managed to render a few things like this.

And, then I went to dinner. What a mistake on my part.

And now, I have to fight this.

~/povray-3.7.0.beta.29/unix@rpg-lab> ./povray
povray: this pre-release version of POV-Ray for Unix has expired

Now only the betacode hack is working, in spite of modding the sources as mentioned in the link above to remove the timeout.

God help me.

Just look at Blender. It has a huge community behind it. Scriptable in python (yay!), supports GLSL shaders, renders all right, imports/exports from/to every file format imaginable, can interface to other ray tracers as well. I think I am begining to like it. Further, it can export to anything that ffmpeg supports.

I am running it on a machine with SSE3, but gcc can hardly be expected to make use of any of it's horizontal math goodness.

No comments: