XRT is a raytracing based programmable rendering system for photo-realistic image synthesis built around a plug-in architecture design.


Motion blur (the end?)

Posted: 19 Dec 2009 17:19
Tags: blur motion transformation


After a long struggle with my laziness, I finally found the energy to complete (sort of) motion blur. I have left deformation blur and attributes blur (see here for an explanation of these terms) aside for the moment and focused on transformation blur.

It turned out that my first implementation was at the same time partly buggy and awfully slow. To take motion into account, I was enlarging any affected primitive bounding box before inserting them into my acceleration structure. It was therefore no big surprise that it was really inefficient. A(nother) complete overhaul was needed. Pfff …

Back to the drawing board, I figured out that, usually, motion is applied to a group of static primitives for which an efficient acceleration structure can be computed. Therefore, I have redesigned the scene parser to output a hierarchy of acceleration structures (aggregate) instead of a single one. Motion blur is applied only at the aggregate level. Underneath, everything has tight and efficient bounding boxes. As a result, I got a 60x speedup compared to my first naive implementation and it also cured magically my bugs!

I have added a page in the gallery to demonstrate these new features.

Comments: 0, Rating: 0

Motion blur again

Posted: 15 Sep 2009 21:26
Tags: blur motion transformation

I am finally done with a first implementation of transformation motion blur (for some examples, go here). As expected, extensive changes to transformation and intersection routines were needed. However, this is not the end of it. Let me explain why in a few words.

Motion blurred transformations are created by giving a sequence of transformations at different times and can be concatenated and nested hierarchically. The number of time samples may be different for each transformation. When a ray is fired, it is given a random time. When a primitive is tested for intersection by a ray, this time is used to retreive the corresponding motion segment and to interpolate the current transformation between the two ends of the segment.

Right now, I am using linear interpolation between transformations. This works well for scales, translations and small rotations but is obviously wrong for large rotations. It's just an faster path to get a feel on motion blur. I know there is a much better solution: quaternions and spherical interpolation. This will be the next step.

Comments: 0, Rating: 0

Gelato gallery updated

Posted: 13 Sep 2009 16:08
Tags: gallery gelato

I have added new examples and updated some others because they really benefited from the last features I have implemented: improved sampling and blurred shadows. I have also completely changed the gallery layout to display full resolution pictures. It's less straightforward than to use Wikidot builtin gallery but one cannot see anything worthwhile on a confetti. Have a look here.

Comments: 0, Rating: 0

Improved sampling

Posted: 08 Sep 2009 22:26
Tags: pbrt sampler stratified

If you are serious about raytracing, give yourself a favor and buy Physically Based Rendering from Matt Pharr & Malcolm Humphreys. It's huge, it's thick, it weighs a ton and will not fit in your pocket but this is definitely the reference book on the subject. Because I felt bad sampling was possibly responsible for my noisy motion blur images (see my previous post), I have opened it once again and reread chapter 7 which deals with sampling and reconstruction (by the way, this chapter is available for downloading here). This led me to conclude it was time to ditch the current "uniform" sampler and to add a brand new sampler plugin: the "stratified jittered" sampler. It was quite straightforward to adapt PBRT implementation to XRT.

The result is worth the try.

Camera motion blur
Image Unavailable
rendered with uniform sampling

Camera motion blur
Image Unavailable
rendered with stratified sampling

This is still not as good as the 3Delight reference image but a lot closer to it. The PBRT book describes other samplers:"low discrepancy" and "best candidate" which should give even better results.

Comments: 0, Rating: 0

Motion blur: first steps

Posted: 01 Sep 2009 22:20
Tags: 3delight blur motion

I am currently adding motion blur support to XRT.

Actually, motion blur designates four different features:

  • camera motion blur, where blur occurs when the camera moves
  • transformation motion blur, where blur occurs when the transformation attached to a scene object changes
  • deformation blur, where the actual object geometry changes
  • attributes blur, where the surface properties of objects changes over time

Camera motion blur is the easiest to implement because it affects only the camera world transformation and therefore does not require extensive changes. Here is a first rendering. The camera turns from right to left while aiming a green matte sphere. I am not completely happy with the result because it is way too noisy. The same scene rendered with 3Delight is a lot smoother.

Camera motion blur
Image Unavailable
rendered with XRT

Camera motion blur
Image Unavailable
rendered with 3Delight

A possible explanation for this noise is that XRT sampling strategy is a bit crude: a regular grid is used with no jitter. I'll try smarter schemes in the future.

Comments: 0, Rating: 0

More Wikidot lore

Posted: 30 Jul 2009 12:32
Tags: website

  • added autonumbering to posts not to worry any more about page names
  • renamed existing posts to fit with autonumbering
  • updated blog template and main page to improve tags display
  • changed the CSS theme of the blog to a fixed width to get a more consistent page layout across different screen sizes
  • slightly updated the layout of some of my previous posts (bigger pictures with a nice border)

Comments: 0, Rating: 0

New RenderMan repository gallery

Posted: 22 Jul 2009 14:06
Tags: gallery rmr shader

I have started a new gallery with examples from the RenderMan repository. This is a very good demonstration of the power of programmable shading. Most of these examples feature very simplistic geometrical content (just one sphere or one square): the real image content comes from the shaders.

Comments: 0, Rating: 0

Hairy monster

Posted: 10 Jul 2009 08:12
Tags: fur gallery gelato

There is a new creature in the Gelato gallery that demonstrates XRT fur rendering capabilities. Frightening, isn't it ?


The rendering times are frightening too (more than 10 hours on my PC). Because the fur is made of tiny little curves, sampling has been set to 6x6 subsamples. Otherwise, aliasing starts to appear as tiny holes in the individual hairs. The other issue that explains long rendering times is the fact that, in a given volume, there are lots of primitives. The BVH acceleration structure that I am using is obviously having a hard time choosing a sufficiently small set of candidates for intersection testing. This is a problem that I have already noticed while benchmarking with other simpler scenes but for which I haven't yet found a solution (improved implementation or better algorithm ?).

Comments: 0, Rating: 0

New Rendering for Beginners shader gallery

Posted: 06 Jul 2009 20:46
Tags: gallery rfb shader

I have built a shader gallery with examples from the Rendering for Beginners book

Comments: 0, Rating: 0

Improving the gallery (part 3)

Posted: 02 Jul 2009 21:36
Tags: arman gallery


The Advanced RenderMan gallery is now up to date.

Comments: 0, Rating: 0

New AIR gallery

Posted: 01 Jul 2009 20:34
Tags: air gallery nurbs

I have fixed a nasty bug on rational NURBS surface evaluation which paves the way for more cool pictures.

I have started a new gallery based on AIR examples. Have a look here!

Comments: 0, Rating: 0

Improving the gallery (part 2)

Posted: 01 Jul 2009 20:18
Tags: gallery

While re-rendering, I have bumped on bugs introduced by recent developments. So, it takes more time than expected but I am making progress. Mostly, only the Advanced RenderMan gallery needs some fixes.

Comments: 0, Rating: 0

Improving the gallery

Posted: 23 Jun 2009 21:53
Tags: gallery

I am converting all pictures in the gallery to JPEG format to improve download times. It turns out also that, on most systems, some of my pictures are too dark and that my settings are more the exception than the rule. Therefore, my initial recommandation (changing your gamma) was the wrong thing to do: it feels better to fix the site.
I am re-rendering every example that needs it with gamma 2.2. Although converting directly my 8 bit data pictures would have been ok in most cases, re-rendering avoids any possible banding effects in dark areas. That should be completed within the next days.

Comments: 0, Rating: 0

More JRMan examples

Posted: 23 Jun 2009 21:39
Tags: gallery jrman

I have added two new examples in the JRMan gallery.

Comments: 0, Rating: 0


Posted: 17 Jun 2009 14:06
Tags: documentation gallery website

Welcome to the XRT website !

This site (my first site) is obviously perfectible. Although the Gallery has already a fair amount of content, the Documentation is rather terse and you may complain that there is nothing ready for downloading. However, one have to dive someday to know if one can swim.
There are a number of things I want to complete before issuing a first release. Meanwhile, I'll keep on adding content into the site. There are quite a lot of nice pictures worth seeing left in my hard drive. As I learn more and more about Wikidot, I also hope to improve the look and features of this site

If you feel interested by XRT, please leave a comment here or post a message into the Forum.

PS: Depending on your system, the pictures may look quite dark. In this case, set your gamma to 2.2

Comments: 0, Rating: 0