The last two weeks I have been working on getting a general “framework” or “pipeline” of my ISPM renderer up and going. It’s been really interesting and I must say that DirectCompute does enable one to do some pretty cool stuff. Below is a screenshot of my implementation running. There are a few flaws of my implementation so far: some visual artifacts, I haven’t used a proper splatting kernel yet and the ray tracing is limited to scenes consisting of 24 triangles. However, the frame rate is pretty good, normally over 100 fps in 512×512 resolution. The most frame rate eating part of the algorithm is to render the photon volumes, everything else takes less than a millisecond to perform and the rest is due to the huge fill rate required by the photon volumes pass. This is also the reason for the low resolution, the implementation is not using any up-sampling of the indirect illumination buffer so I’m using a low resolution back buffer until I get that part up and running – in order to avoid a slide show. The ray tracer is just a place holder, but it can trace the scene pretty fast; up to 15k rays in approx 0.1 ms is pretty decent. In the end, I’m hoping to be able to do the ray tracing of a normal scene in less than a millisecond, time will tell how that turns out. :]
As mentioned, frame rate is around 100 fps, there are quite a few visual artifacts and the indirect illumination is very much too bright. Otherwise it looks pretty cool, you can even see some signs of ambient occlusion in there.
~Daniel
