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#?
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).