Syphon is an OSX framework to share frames between applications. The authors of Syphon, Tom Butterworth and Anton Marini, made it very easy to create Syphon plugins for other languages, frameworks, VJ’ing and mapping tools, etc. So a while ago I wrote a simple Processing library that allowed to send frames out. This was quite useful, but still missing half of the Syphon functionality. With some additional coding, we were able to add the client part, and I just put the new version (0.4) of the Syphon-Processing library up for download (it requires Processing 2.0a4 or newer).
Archive for the ‘syphon’ Tag
This is an exciting time to work with real-time graphics, as the capabilities of GPUs keep increasing in raw performance and functionality, and also because the “GL family” of programming API’s (OpenGL, GLSL, OpenGL ES, JOGL) has been evolving rapidly during the past years in order to give access to new hardware features and devices. One area I have been interested in for some time is General Processing on GPUs (GPGPU). GPUs can allow for major speed-ups in computational problems that are suitable for data parallelization. Originally, it was possible to carry out GPGPU calculations (such as the simulation of a particle system) with the graphics API and writing the computation “kernels” using Cg or GLSL shaders. The major disadvantage of this approach was the need to cast a general computation algorithm in graphics terminology, i.e.: an array of particle positions becoming a texture, the output of a calculation being stored in a color variable, and so on. Despite these complications, many initial GPGPU projects were carried out in this way. I also implemented some simple particle systems for non-photorealistic rendering using OpenGL and GLSL shaders. Today, there are several API’s specifically designed to program the GPUs as general parallel processors, and among the most mature and widely used ones I would mention CUDA and OpenCL. I recently chose to learn OpenCL as it is a hardware-agnostic API aimed to support GPUs from different vendors as well as CPUs and other compute devices. Also, there are already several Java-bindings for OpenCL which are in an advanced stage of development (Jogamp’s JOCL, JavaCL, and JOCL.org). This opened-up the possibility of combining OpenCL and OpenGL in Processing in order to simulate and render large particle systems with full GPU-acceleration. Continue reading for the details (and also for some video renderings made possible by Syphon).