Wednesday, December 28, 2011

Production volume rendering

For a few weeks, I've been studying and writing some code 

All the code is available here.

The first part of the project is implementing noise functions, textures, 
rasterization and instantiation primitives, that are the building blocks 
of many of the algorithms described in the courses.

A solid noise point rasterization primitive, 
visualized and renderered in Houdini.

For the second part of the project, I'm writing a ray marching volume renderer.
While the design of the renderer is classic, borrowing ideas from pbrt, 
the renderers described in the course notes and some of my own, 
the implementation is more interesting, based on runtime concepts
instead of normal C++ polymorphic classes.

First image produced with my volume renderer, 
accumulated opacity of a MRI scan of an orange.
Dataset courtesy of the volume library.

Sphere, box and two pointlights. 
The artifacts are due to no antialiasing, and big step size.