Tuesday, February 05, 2008
The current state of ray tracing and GI
As you know, xNormal makes an intensive use of ray tracing. I investigated a lot of ray tracing devices and here is a small enumeration:
NVIDIA. NVIDIA bought Ageia. That was interesting because xNormal 2 used the Ageia PhysX SDK to accelerate raycasts. Unfortunately, it could not support big meshes ( and was done using the CPU ) so I was forced to look for other method... that's why I created xNormal 3 with a software raycaster... I posted some in the devsupport Ageia's forums and I've seen a thing called "Hardware accelerated ray cast batches" planned for PhysX2... NVIDIA's press note says "PhysX on GeForce"... so it seems they wanna integrate the new PhysX2 into the GeForce silicon die... and perhaps that could include the HW-raycasting...
Recently, NVIDIA bought Mental Images ( the creators of Mental Ray ) too. They also have CUDA for GPGPU and a hardware-accelerated offline renderer called Gelato. These last movements clearly indicate, almost for me, that we are going to see a thing called RayForce ( too bad, is already registered! ), ForceRay/GeRay very soon together with CUDA 3...
Also, NVIDIA bought today RayScale ... and on the RayScale's Web you can see a lot of famous ray tracing eminences like Peter Shirley!
AMD+ATI ( dammit ). They launched the FireStream cards for GPGPU computing.
They are also sponsoring brook+ API. The ATI 3870 and 3850 supports double precision floating point which can be very good together with DX10.1 for GPGPU and global illumination ( thanks to the render to cubemap array feature ) as we've seen in the Humus's GI demo or the Ping Pong Demo
We've seen also an impressive demonstration of the Jules Urbach's LightStage(Otoy) technology... See this:
They are also helping the Brook team and made the StreamSDK/CTM GPGPU API.
Intel. Some time ago, Daniel Pohl demonstrated a software raytraced Quake 4 using a quad core CPU. Daniel was hired by Intel. Here are some videos:
We also can see other software raytracers like Jacco Bikker's Arauna. Jacco did some technical articles for Intel. It seems Intel's CPUs are becoming faster and faster due to the cache sizes and excellent SSE performance... however a hardware solution would be better I think...
On the other hand, Intel bought Havok physics. In the IDF 2007 they announced Larrabee, their upcoming discrete graphics card based on 16-48 small ISA x86 cores ( like the Terascale / Polaris 80-cores one ). You can see these links about it:
It has been said that Larrabee could perform realtime ray tracing using a new parallel language called Ct ( C for Throughput Computing ). See http://techresearch.intel.com/articles/Tera-Scale/1514.htm for more info.
Also, they bought Project Offset. Perhaps gonna be the first game programmed for Larrabee.
ClearSpeed. They have a very energy efficient computing card with double precision support. Unfortunately it's not cheap and they only sells to universities or organizations... but could be good for ray tracing. Here is the link:
Avalon project. There is not much info about this and seems to be a bit old but here is the link
SaarCOR FPGA. The Saarland University used a 90Mhz FPGA to perform realtime raytracing of some Q3 and UT2003 scenes. See http://graphics.cs.uni-sb.de/SaarCOR/DynRT/DynRT.html
Also a bit more complex scenes like you can see in http://graphics.cs.uni-sb.de/~woop/rpu/rpu.html
The new model will be impressive with 1Ghz FPGAs, but is still under development.
PS3/IBM's Cell. The Cell's SPUs are really powerful... It uses an API called iRT capable
to render a 1M polys car at 30FPS with very good reflection, shadows and lighting.
See these links:
The problem with that is that the PS3 is not cheap and to program the SPUs is not very easy.
More software/mixed projects. I'm referring to Lightsmark, Geomerics's Enlighten and FantasyLab. They use a combination of CPU and GPU techniques to achieve realtime global illumination. We can see also some offline GI renderers assited by the GPU like Parthenon.
ARTVPS AR500 RayBox. This small device with 14 AR500 dual-core specialized triangle-ray hit CPUs ( together with 1Gbx14 RAM to store the scene's triangles ) is used as a render farm to accelerate raytracing. See http://www.pixelution.co.uk/Products/ARTVPS_raybox.html
Unfortunately, they seem to work only with 3dsmax and Maya... I'm not sure why they don't release a generic raytracing API to manage the hardware...
So we are very near to see hardware-accelerated or software realtime raytracing very soon... The big question is if could use global illumination techniques like photon mapping, SSS, caustics and complex volumetric BDRFs.... Offline raytracing acceleration will be very good too to render images much faster! Btw, i'm experimenting with CUDA and I think I will release soon a ray tracing engine for xNormal.