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.