OpenCL Toys => SmallLuxGPU
SmallLuxGPU is a test on how to introduce GPGPU rendering in Luxrender. The test has been written using the ATI OpenCL SDK 2.0 on Linux but it should work on any platform/implementation (i.e. NVIDIA).
The idea is to use the GPGPU only for ray intersections in order to minimize the amount of the brand new code to write and to not loose any of the functionality already available in Luxrender In order to test this idea, I wrote a very simplified path tracer and ported Luxrender's BVH accelerator to OpenCL.
The path integrator has the particularity to work on a huge set (i.e. 300,000+) of paths at the same time in order to generate a large amount of rays to trace and to keep the GPGPU feed.
SmallLuxGPU includes some class from Luxrender and it is released under GPL license. Binaries include glut32.dll Nate Robins's glut. Loft scene has been modeled by Pinko and Sponza from Marko Dabrovic. BulletPhysics scene has been designed by Chiaroscuro (BulletPhysics and http://www.youtube.com/watch?v=33rU1axSKhQ). Kitchen scene has been designed by lom and refined by Chiaroscuro.
A video of SmallLuxGPU v1.0 is available here: http://vimeo.com/8487987
A video of SmallLuxGPU v1.1 is available here: http://vimeo.com/8799796
CPU vs OpenCL CPU device vs OpenCL GPU device
The video and the following test was done on a Q6600 + ATI HD4870. While the OpenCL CPU device still lacks a bit of performances, the GPU shows a good speedup:
NOTE: CPU uses 1 core while OpenCL CPU version uses 4.
Check Luxrender and OpenCL page for more details.
How to compile
Just edit the Makefile and use an appropriate value for ATISTREAMSDKROOT.
Download: smallluxgpu-v1.3.tgz (includes sources, Linux 64bit binaries and Windows 32bit binaries)