Tuesday, July 1, 2008

More GPU Intersection Routines

I spent today working on two things.  I'll talk about the first one second.  This afternoon I started getting code together for the remaining intersection routines - focusing on GPU deployment.  I won't go into a lot of detail about it all, but now curve-line intersection is on the GPU.  It still has a few details to get figured out (so might not be returning any hits at all at the moment), but should be ship-shape by tomorrow.  Tomorrow I also plan on trying a first pass on surface-point, surface-line, and surface-curve.  Should be interesting.

So now what I spent more of the day on and got nowhere.  Right now the GPU code for NURBS curve and surface generation work well and have been tested on nVidia GPUs, mostly on the G80 found in the current MacBook Pro.  I have an ATI HD 2400 XT based Windows XP machine that I have been using for my Win32 development and I had not gotten GPU-based generation running on it.  Today I thought would be the day I got it all up and working.

After spending about 4 hours trying to figure out ways around ATI's crappy support for integers in GLSL I gave up.  I don't want to convert the routines to entirely float-based since I know the int versions work well on good GPUs.  I might take another shot at ATI support in a few days, but for now I need to get some space between me and ATI.  Blah!



andyw said...

does this mean wildcat will require a specific brand or model of graphics card? or will it just run slower on generic hardware?

GrahamH said...

No specific brand of model will be required. I have designed most of the code to take advantage better hardware but support no-as-good stuff too.

The time I spent working on the ATI card yesterday just confirmed to me that nVidia's drivers are better than ATI's. ATI's stuff still works well but just not always how I expected. I would love to try the new 4800 series from ATI. Should be much better than the 2400 I have now.

Probably the biggest hit will be taken by users without dedicated graphics cards. For instance, Intel integrated graphics will definitely be slower and I may have to add a couple of paths for certain routines to run only in the CPU. Hope this helps.