All Projects → keijiro → Klakspout

keijiro / Klakspout

Licence: mit
Spout plugin for Unity

Projects that are alternatives of or similar to Klakspout

Unitypluginwithwsl
Unity native plugin with WSL (Windows Subsystem for Linux)
Stars: ✭ 39 (-88.25%)
Mutual labels:  unity, unity3d, plugin
Klakndi
NewTek NDI™ plugin for Unity
Stars: ✭ 401 (+20.78%)
Mutual labels:  unity, unity3d, plugin
Minimumaudioplugin
Minimum implementation of a native audio plugin for Unity
Stars: ✭ 33 (-90.06%)
Mutual labels:  unity, unity3d, plugin
Meshstreaminggrasshopper
Plugin for Grasshopper to stream mesh geometry through web socket.
Stars: ✭ 52 (-84.34%)
Mutual labels:  unity, unity3d, plugin
Klak
Creative coding library for Unity
Stars: ✭ 1,347 (+305.72%)
Mutual labels:  unity, unity3d, plugin
Klaksyphon
Syphon plugin for Unity
Stars: ✭ 149 (-55.12%)
Mutual labels:  unity, unity3d, plugin
Textureupdateexample
An example showing how to update textures from a native plugin in Unity.
Stars: ✭ 133 (-59.94%)
Mutual labels:  unity, unity3d, plugin
Hisocket
It is a lightweight client socket solution, you can used it in C# project or Unity3d
Stars: ✭ 275 (-17.17%)
Mutual labels:  unity, unity3d, plugin
Skyboxplus
Basic skybox extensions for Unity
Stars: ✭ 324 (-2.41%)
Mutual labels:  unity, unity3d
Unity Destruction
💥 An open-source script to destroy objects realistically in Unity3D.
Stars: ✭ 291 (-12.35%)
Mutual labels:  unity, unity3d
Depthinverseprojection
An example showing how to inverse-project depth samples into the view/world space in Unity.
Stars: ✭ 296 (-10.84%)
Mutual labels:  unity, unity3d
Zcode Assetbundlepacker
Unity的AssetBundle模块扩展插件,主要目的用于简化AssetBundle打包,提供AssetBundle管理,支持热更新、支持资源包下载、支持版本控制。
Stars: ✭ 291 (-12.35%)
Mutual labels:  unity, unity3d
Tutorial 2d Game Unity
Unity tutorial to learn how to make a complete 2D Shoot'em Up
Stars: ✭ 290 (-12.65%)
Mutual labels:  unity, unity3d
Libplanet
Blockchain core in C#/.NET for persistent peer-to-peer online games
Stars: ✭ 293 (-11.75%)
Mutual labels:  unity, unity3d
Ecsrx
A reactive take on the ECS pattern for .net game developers
Stars: ✭ 288 (-13.25%)
Mutual labels:  unity, unity3d
Knight
Knight is a game framework based on Unity3D engine. It includes a complete assetbundle manager, a c# hotfix module based on ILRuntime, and a UI module based on MVVM, and other basic functions support.
Stars: ✭ 302 (-9.04%)
Mutual labels:  unity, unity3d
Crystalai
A Utility AI for C# and Unity
Stars: ✭ 328 (-1.2%)
Mutual labels:  unity, unity3d
Unity Script Collection
A maintained collection of useful & free unity scripts / library's / plugins and extensions
Stars: ✭ 3,640 (+996.39%)
Mutual labels:  unity, unity3d
Proceduralmotiontrack
Simple procedural motion with Unity Timeline.
Stars: ✭ 300 (-9.64%)
Mutual labels:  unity, unity3d
Vcontainer
The extra fast, minimum code size, GC-free DI (Dependency Injection) library running on Unity Game Engine.
Stars: ✭ 308 (-7.23%)
Mutual labels:  unity, unity3d

KlakSpout

gif screenshot

KlakSpout is a Unity plugin that allows sharing video frames with other applications using the Spout system.

Spout is a video sharing system for Windows that allows applications to share frames in real time without incurring significant performance overhead. It's supported by several applications (MadMapper, Resolume, etc.) and frameworks (Processing, openFrameworks, etc.). It works in a similar way to Syphon for Mac, and it's similarly useful for projection mapping and VJing.

System requirements

  • Unity 2019.3
  • KlakSpout only supports Direct3D 11 (DX11) graphics API mode. Other APIs (DX12, OpenGL, Vulkan) are not supported at the moment.

How to install

This package uses the scoped registry feature to resolve package dependencies. Please add the following sections to the manifest file (Packages/manifest.json).

To the scopedRegistries section:

{
  "name": "Keijiro",
  "url": "https://registry.npmjs.com",
  "scopes": [ "jp.keijiro" ]
}

To the dependencies section:

"jp.keijiro.klak.spout": "1.0.0"

After changes, the manifest file should look like below:

{
  "scopedRegistries": [
    {
      "name": "Keijiro",
      "url": "https://registry.npmjs.com",
      "scopes": [ "jp.keijiro" ]
    }
  ],
  "dependencies": {
    "jp.keijiro.klak.spout": "1.0.0",
...

Spout Sender component

The Spout Sender component (SpoutSender) is used to send frames to other Spout compatible applications.

There are two modes in Spout Sender:

Camera capture mode

inspector

The Spout Sender component runs in the camera capture mode when attached to a camera object. It automatically captures frames rendered by the camera and publishes them via Spout. The dimensions of the frames are dependent on the screen/game view size.

Note that the camera capture mode is not compatible with scriptable render pipelines. The render texture mode should be applied in case of using SRP.

Render texture mode

inspector

The Spout Sender component runs in the render texture mode when it's independent from any camera. In this mode, the sender publishes content of a render texture that is specified in the Source Texture property. This render texture should be updated in some way -- by attaching to a camera as a target texture, by custom render texture, etc.

Alpha channel support

This controls if the sender includes alpha channel to published frames. In most use-cases of Unity, the alpha channel in rendered frames is not used and only contains garbage data. It's generally recommended to turn off the Alpha Channel Support option to prevent causing wrong effects on a receiver side.

Spout Receiver component

inspector

The Spout Receiver component (SpoutReceiver) is used to receive frames published by other Spout compatible applications.

Source Name property

The Spout Receiver tries to connect to a sender which has a name specified in the Source Name property. Note that the search is done with exact match (case-sensitive). It can be manually edited with the text field, or selected from the drop-down labelled "Select" that shows currently available Spout senders.

Target Texture property

The Spout Receiver updates a render texture specified in the Target Texture property every frame. Note that the Spout Receiver doesn't care about aspect ratio; the dimensions of the render texture should be manually adjusted to avoid stretching.

Target Renderer property

When a renderer component (in most cases it may be a mesh renderer component) is specified in the Target Renderer property, the Spout Receiver sets the received frames to one of the texture properties of the material used in the renderer. This is a convenient way to display received frames when they're only used in a single renderer instance.

Script interface

The received frames are also accessible via the receivedTexture property of the SpoutReceiver class. Note that the receivedTexture object is destroyed/recreated when the settings (e.g. screen size) are changed. It's recommended to update the reference every frame.

Spout Manager class

The Spout Manager class (SpoutManager) only has one function: getting the list of sender names that are currently available in the system (GetSourceNames). This is useful for implementing a sender selection UI for run time use.

gif

Please check the Source Selector example for detailed use of this function.

Frequently Asked Questions

Can't send/receive more than 10 sources

See issue #33 in the Spout SDK. You can download the SpoutSettings app from the thread that allows changing the maximum number of Spout senders.

Spout vs NDI: Which one is better?

The answer is simple: If you're going to use a single computer, use Spout. If you need connecting multiple computers, use NDI.

Spout is a superior solution for local interoperation. It's faster, low latency, more memory efficient and better quality. It's recommended using Spout unless multiple computers are involved.

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].