|This small project was a test to ensure I could delegate per-pixel process to a pixel shader. I had to map the video on a model, use an orthographic projection, and make sure the shader will properly be applied to pixels in the video.
However, once I was done with the video mapping procedure, I couldn’t resist to map the video on a funnier model than the quad I was using. So here is my perturbated landscape, with a live video stream coming from a locally connected webcam.
|When working on the Teapotware, we tried to separate the rendering from the world/scene design. We ended with a plugin based system that allowed the same scene to be rendered with Direct3D, OpenGL, or even sub-flavored renderers. The picture shows a simple scene (with only one object and one light) rendered with the our Direct3D – Toon rendering plugin.|
|At the engineering school, I worked on a raytracing renderer. It worked well, but it was full-software (not HW accelerated), and as a result, pretty slow. A couple of years later, I came up with a new idea: things could be partly accelerated with OpenGL: instead of calculating all the rays at once, the idea was to trace only a subset, and let opengl interpolate the colors between the rays. Then, once the scene/camera is still, the intermediate rays are traced, improving the quality of the overall render.
As you can see, there is no antialiasing, and the scene is not particularly impressive (a mirror on the back, a partially reflexive sphere, and a mat box). However, this is realtime.
Nowadays, it could be even easier with GPGPU, but I coded this years ago, when the only thing I could use was PS 2.0.
|I worked on this project while I was in Japan, as a freelancer. The idea was to provide a tutorial-like app, with a set of constraints: a maze was described in a file, and a maze crawler (the white shpere) had to follow a path to collect objects in the maze at a given speed.|
I also opened the source of a couple of those projects, and thanks to the teapotware, it was impressively clear and lightweight. For instance, the whole videomapped landscape project contains less than 180 lines of code.
I’ve recently (about 2 month ago) decided to remove the dust of the teapotware. There are things that can clearly be improved (the memory manager for instance), and even the design of some classes/interfaces can be discussed. On the other hand, the purpose of the library remains the same: to provide a robust crossplatform library applied to multimedia. I’m afraid I can’t give any release date yet (my weekends are pretty short these days), but it shouldn’t take that long.