Search code examples
c#image-processingxnagpugpgpu

Using XNA to access GPGPU for image processing


I'm working on some real-time image processing projects in C# and I want to utilize the GPU as much as possible.

Specifically I have several byte[] that contain raw bitmap data, and I need to do things like high/low pass filters, edge detection, masking, dilation, hole filling, median filters, etc. on those byte[] as close to 30 fps as possible (the images are pretty small, no larger that 640x480)

I know that there are other GPGPU libraries out there (Like Cudafy, GPU.net, and Accelerator) but their EULAs either prohibit "for profit" usage of the library, or you need to purchase a license.

At the moment there are no funds for a license, so I'm trying to explore options that allow for commercial production while not costing anything, and XNA seemed to be the only option I could find that fits both criteria.

Are there any resources available on how to utilize XNA to access the GPU in a non-game setting? Are there any other options available to access the GPU via C#?


Solution

  • As the author of this library, might I suggest Brahma - which is a open-source, free for commercial use library (under the Eclipse public license) on CodePlex and automagically translates/runs LINQ as OpenCL?

    Of course, if you wish to use RAW OpenCL, I also have a .NET friendly but raw-API version of OpenCL here on Codeplex and as a Nuget package.

    Look here for an example of Brahma code (this one is for FFT).