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
I'm Siddhartha Chaudhuri (nicknamed Sid/Pico). I'm from Kolkata (formerly Calcutta), the capital of the state of West Bengal in eastern India. I spent my school life at St Xavier's Collegiate School, Kolkata, undergrad-ed at the Indian Institute of Technology, Kanpur, and am pretending to do a PhD in the Computer Science department of Stanford University.
I started computer programming in class 9 (i.e. when I was about 15). Before that, I wasn't very computer-savvy: I preferred reading, drawing etc. In school, we played computer games or worked with really primitive stuff like LOGO. But in class 9, we had to study computers seriously because it was one of the subjects in the ICSE, and later the ISC, two all-India exams. This in itself wouldn't have inspired anybody to try out computer programming for fun, if anything, it would have had the opposite effect. However, I got to see some of the projects our seniors were writing for the ICSE, where they forgot all about academic constraints and ran amok with graphics and eye-candy. These were coded in BASIC, a good language for doing this kind of thing. At home, we'd just got a new machine, a 66MHz 486DX with 16MB RAM running Win 3.1 which to me at that time was state-of-the-art, and I wanted to see if I could replicate the fancy stuff. So I started writing a program which allowed the user to learn about the Solar System (of all hackneyed topics, this probably takes the cake). I put in everything I could think of: a flashy opening animation, circular buttons which could be depressed, tables, an animation showing the planets going round etc etc. After a while, I took up another project, a drawing program (imagine a cursor-controlled version of Paintbrush without the ability to save files).
At about this time, I switched from GW-BASIC to QBasic. This was a big step, because I had to get used to writing programs without line numbers, but with functions and data structures and the like. In effect, I had to make a switch from linear to procedural logic. I wrote programs to simulate a piano, play notated music, show crude animations and draw graphs. My biggest program at that time was a utility that allowed the user to design bitmapped fonts. This went through three versions, and by the time the last one came along I had drop-down menus, variable font sizes, interactive colour selectors, file I/O, online help, and a very basic text editor for testing the fonts. I also wrote a tennis game, a (not very successful) game of life where foxes went around chasing rabbits, and a library management program with advanced search methods.
I got a copy of Visual Basic 4 from a friend, and learnt a little bit about WIndows programming. The first three versions of my renderer were written in VB, and the current version, VRWorld4, also started out in VB before I ported it to C++.
Two years after I started programming seriously, I took up C++. I was impressed by the emphasis on structure and the minimalist nature of the language. The different flavours of BASIC had, on average, hundreds of keywords -- C++ had only about 50. But the power of this approach was, especially to anyone with a BASIC background, impressive. I tried out a bit of AI in a cricket game, and windowing techniques in a character-mode GUI. I was using Turbo C++ 3 at that time, but its memory restrictions made me switch to Borland C++ Command-Line Tools 5.5 for really large programs like my raytracer.
I was fiddling around with a bit of 3D in my Visual Basic days, but never got beyond basic wireframe and z-buffer stuff. I reinvented the wheel far too many times, but I had too few resources to do anything else. In retrospect, this was probably a good thing because I got close to the theory underlying the methods. I made the transition to serious 3D after buying the book Computer Graphics by Hearn and Baker with the prize-money of a quiz (this is different from an American "quiz" or test). Raytracing had an immediate appeal. I started off writing my own raytracer in VB long before I imagined that anything could possibly have a name as weird as POV-Ray. Unfortunately, although I wrote lines and lines of code, the VB program never actually got round to the trifling matter of producing a picture. My C++ port kept up the honoured tradition of steady increase in size with zero increase in productivity.
Finally, the great day arrived in mid-2001, when I got sick and tired of writing code without a single picture in sight. I tacked on rudimentary greyscale output routines and got a picture of (what else?) a sphere. Fiddling around the Net, I learnt how to write to a BMP, and finally had a decent output method. Since then, the history of VRWorld4 has been mainly a history of bugfixes and structure improvement. The latter refers to my goal to make the program as general as possible, so I can add new features with the minimum of fuss. It became more OO, less procedural, and (touch wood!) more stable. My last few additions included programmable shaders and CSG.
Apart from computers (with some maths and physics thrown in), my main interest is in North Indian (Hindustani) classical music. I learnt to play the sarod, an Indian stringed instrument played with a coconut-shell plectrum, for some years, though I didn't get very far. I have a large collection of recordings (Ali Akbar Khan, Nikhil Banerjee, Mallikarjun Mansur, Amir Khan and Bhimsen Joshi are favourites), and like to read about the subject. Among Western groups, I was addicted to the Beatles, and I also like listening to Pink Floyd, Bob Dylan, Jethro Tull etc, and occasionally heavier stuff. I like reading T. S. Eliot, P. G. Wodehouse and God knows what else. I'm a big fan of Impressionist, Post-Impressionist and Expressionist Art, and dabble in photography (Kertesz, Cartier-Bresson rule -- check out my toddler's steps at my Flickr portfolio). I love mountains and trekking. I play football (soccer), cricket, badminton and table-tennis.
It's always good strategy to get somebody else to think up the punchlines, so let me sign off with the lyrics of "Lucy in the Sky with Diamonds":
Picture yourself in a boat on a river
With tangerine trees and marmalade skies.
Somebody calls you, you answer quite slowly,
A girl with kaleidoscope eyes.
Cellophane flowers of yellow and green,
Towering over your head.
Look for the girl with the sun in her eyes
and she's gone.
Chorus:
Lucy in the sky with diamonds...
Lucy in the sky with diamonds...
Lucy in the sky with diamonds...
Follow her down to a bridge by a fountain
Where rocking-horse people eat marshmallow pies.
Everyone smiles as you drift past the flowers
That grow so incredibly high.
Newspaper taxies appear on the shore,
Waiting to take you away.
Climb in the back with your head in the clouds
And you're gone.
Chorus
Picture yourself on a train in a station
With plasticine porters with looking-glass ties.
Suddenly someone is there at the turnstile,
The girl with kaleidoscope eyes.
Chorus
-- John Lennon/Paul McCartney, The Beatles