What exactly is Wyphon?
Wyphon is a communication component that allows applications to easily share information about shared textures.
That means that every application that is a so-called Wyphon Partner will be notified of any textures shared by any other application, and it can share its own textures.
Wyphon is built upon the fact that DirectX textures can be opened by multiple applications (for Direct3D versions > DX9Ex), if the ‘handle’ is known.
Is Wyphon ready?
We have the basic functionality working, but there are a few issues that need to be resolved before it will be ready for a production environment.
These issues are mainly in the field of synchronizing access to the shared resources.
If Wyphon is directX based, what about OpenGL applications, can they play along?
Yes, they can (but not always).
A few years ago, NVidia created an extension to OpenGL (WGL_NV_DX_interop2), that allows an OpenGL application to open and write to Direct3D textures.
This allows OpenGL applications to make use of these Direct3D textures, but currently we only have proper support for this extension on nVidia hardware (although I have read reports of AMD drivers reporting to support this extension recently, so there is hope that AMD hardware will be able to play along too one day).
To make this all easier, we have created WyphonUtils, that has some functions that will make creating these shared textures very easy.
So why should our application support Wyphon?
- Because it opens your applications to be a part of a chain of different tools, allowing the users to combine the strength of each application.
- Because it sets a standard to communicate about shared textures.
- Because you shouldn’t reinvent the wheel, and you can concentrate on writing just the specific parts for your application.
- Because a FreeframeGL plugin exists, so your application would instanly be capable of talking to any other application that properly supports FreeframeGL.
Which applications already support Wyphon?
- Resolume Avenue (through the use of the FFGL plugins)
- Any other FFGL host (that supports string input)
We want to add Wyphon support to our application, how do we get started?
Find the full source code on github (https://github.com/mrft/Wyphon/wiki),
A c++ project that can serve as an example to get started integrating Wyphon into your own application can be found here:https://github.com/mrft/Wyphon-DX11-examples (also check the wiki page over there for some extra info)
All of the files you need to add Wyphon support to your own application (including the compiled example programs) are in this github repo: https://github.com/mrft/Wyphon-Distributables
Some hints on how to use Wyphon in c# can be found here:https://github.com/mrft/Wyphon/blob/master/ShareDataTest/TestClasses/TestWyphonDotNet.cs and also in the Wyphon nodes for vvvv:https://github.com/mrft/vvvv-sdk/tree/Wyphon/vvvv45/addonpack/src/nodes/plugins/Network/Wyphon (start with WyphonNode.cs)