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?

  • vvvv
  • Resolume Avenue (through the use of the FFGL plugins)
  • Any other FFGL host (that supports string input)
  • Unity3D

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)

28 thoughts on “About

  1. Is the FFGL plugin available anywhere? I’d like to try it! I’ve written a FreeFrame host and plugins, and I’d love to be able to feed their output to Resolume.

  2. I recompiled it using .NET 3.5, to make it possible to include it in Unity3D. Unfortunatelly Unity crashes when creating new wyphon partner. Having Wyphon in Unity would be so good. Have you tried running it in there?

    • No, we haven’t, are you sure all the necessary dll’s were in the right place so they could be found? wyphon.dll + wyphonutilities.dll + wyphondotnet (if needed by unity? I don’t know)
      [To give you an example: when using the FFGL plugin in Resolume, we had to put the wyphon dll’s in Resolume’s top-level directory, and not in the same folder as the the FFGL dll’s.]

      Correct version? (32-bit or 64-bit)

  3. Hi there! Firstly, thanks for your effford, i am also excited about wyphon!
    Well here is my question – as i am going to buy a new notebook for my VJing, its quite crucial for me to make sure about the graphics – particulary i need to know if wyphon still needs that nVidia’s interop funcionalities, or if this is already solved in wyphon, so that i could use something cheeper, perhaps even some newer intel graphics??

    Thx in advance!

    • Wyphon as such is DX-based, but if you want to talk to OpenGL-based software (basically everything for which you need the FFGL plugin), until now I think it will only work on nVidia hardware.

      • sure, thx for prompt reply – off course it was actually that damn nVidia’s optimus technology what i wanted to ask, not interop functionality in general (which is obviously the feature alowwing us to make any dx to opengl gridge 🙂
        So, do you believe that wyphon would handle even this kind of hybrid cards (optimus) eventually?
        Unfortunatelly these optimus cards are getting quite popular among low/mid end computer manufacturers it seems:-/

  4. Same as above – do you think Wyphon will eventually be able to get around the Optimus limitations?

    • Only if nvidia updates the Optimus drivers to overcome these limitations. We don’t know if they will, or even if there is any pressure for them to do so.

      So, basically: we don’t know. It’s in nVidia’s hands.

      • Well Arkaos just solved The Optimus problem With GrandVJ 2.0
        The Program now automatically “see” the Dedicated GPU within the app
        (With Grand VJ 1.6.5 only the Integrated was shown).
        Also With version 2 XT Edition They included an external APP for videomapping which shares Textures with the main program.

  5. Will this be ported to Processing.org ? I assume this needs a wrapper of some sorts. What sorts of programming concepts would I need to learn about to implement this?

  6. Regarding the Optimus issues, has anyone tried setting the software>hardware device preferences as discussed here? http://vvvv.org/forum/nvidia-optimus-and-vvvv
    (Look for “gegenlich 09/03/2013” entry). Does it make a difference? I’m not in front of my decent PC so I can’t test here, and my apologies if the issue is more complicated.

    • About Processing, Openframeworks etc.

      These frameworks are basically ‘wrapping’ all of the low-level graphics features, so they are easier to use. This means that you will only have proper support if a developer of these projects is willing to create some extra wrappers to support Wyphon.
      On top of that, they are both OpenGL based, which makes it a little bit harder, but not impossible (and only with hardware drivers that support the WGL_NV_DX_interop2 extension).
      Since processing is written in java, it might be even trickier. Maybe https://bitbucket.org/fourthskyinteractive/directx-for-java could be of help.

      If someone is willing to do this, we will be glad to help them where we can, but it’s not something we will start writing ourselves.

  7. Hello there !
    Just a quick word to say i’ve almost finished the Unity Wyphon Plugin, working both in and out !
    A short video that demonstrates the Unity Resolume texture sharing via Wyphon :

    Source code will come soon.

  8. I am lost : is Wyphon will be released as “Spout” ???
    Or is it a different project ?

    • We are in close contact with the people working on Spout. Spout currently uses its own communication protocol, but we will work together to merge both efforts into 1 single ‘standard’. The first version of Spout however, will not be compatible with what is currently built upon Wyphon.

      We’ll keep you posted.

  9. I try to run the unity3d with wyphon, but it display DllNotFoundException: C:/Users/Administrator/Downloads/Wyphon-Unity-master/Wyphon-Unity-master/WyphonUnity/Assets/Plugins/WyphonPlugin.dll
    WyphonManager.setNativeDebug () (at Assets/WyphonManager.cs:133)
    WyphonManager.Start () (at Assets/WyphonManager.cs:19) , I download it frome https://github.com/benkuper/Wyphon-Unity Can anyone tell me how to solve this? thank you!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s