What is Spout?
Spout is a Windows-only system for sharing textures between applications via shared GPU memory. It provides:- Zero-copy texture sharing: Textures stay in GPU memory
- Real-time performance: No encoding/decoding overhead
- Multiple senders/receivers: Many applications can share textures simultaneously
- Resolution independent: Automatically handles resolution changes
Spout Output
HNode’s Spout output sends rendered DMX textures to other applications like OBS Studio.Configuration
The Spout output name is configured in your show configuration:Set Output Name
In the HNode interface or your
.shwcfg file, set the spoutOutputName field to a unique identifier.Configure Output Resolution
Set your desired output resolution in the show configuration:The output resolution determines the size of the texture sent via Spout.
Output Resolution Guidelines
Standard HD
1920x1080Best for most use cases. Provides good quality while maintaining performance.
High Resolution
2560x1440 or 3840x2160Use for high-density pixel mappings or large-scale displays. Requires powerful GPU.
Low Resolution
1280x720 or 1024x768Use for simple setups or when performance is critical.
Custom Aspect
1920x480, 2048x1024, etc.Match your specific gridnode or display requirements.
Spout Input
HNode can receive textures from other applications via Spout input, enabling advanced workflows like:- Deserialization of textures from other HNode instances
- Processing pre-rendered content
- Transcoding between different serializer formats
Configuration
The Spout input name is configured in your show configuration:Set Input Name
In your
.shwcfg file, set the spoutInputName to match the sender you want to receive from:Use Cases for Spout Input
Format Transcoding
Format Transcoding
Convert between different DMX serialization formats:
- Set
deserializerto the input format (e.g., VRSL) - Set
serializerto the output format (e.g., Binary) - Enable
transcode: true - HNode will convert the incoming VRSL texture to Binary format
Multi-Instance Processing
Multi-Instance Processing
Chain multiple HNode instances together:
- Instance 1: Receives ArtNet, outputs VRSL via Spout
- Instance 2: Receives Instance 1’s Spout output, applies effects, outputs Binary
- Instance 3: Receives Instance 2’s output, sends to OBS
Pre-rendered Content
Pre-rendered Content
Process pre-rendered DMX textures:
- Render DMX textures in a VJ application like Resolume
- Send via Spout to HNode
- HNode deserializes and optionally processes the texture
- Output to MIDIDMX or another Spout sender
Testing and Development
Testing and Development
Create a test pattern generator:
- One HNode instance generates test patterns (using generators)
- Another instance receives the patterns via Spout
- Use for testing serializer implementations without ArtNet
Transcoding Workflow
Transcoding allows you to convert between different serializer formats in real-time.Enable Transcoding
transcodeUniverseCount limits how many universes are transcoded, which can improve performance if you don’t need all universes.Performance Considerations
Resolution Matching
Match input and output resolutions when possible to avoid unnecessary scaling.
Universe Limits
Use
transcodeUniverseCount and serializeUniverseCount to limit processing to only the universes you need.GPU Usage
Spout uses GPU memory. Monitor GPU memory usage when running multiple instances or high resolutions.
Framerate
Set
targetFramerate appropriately. Higher framerates increase GPU load but provide smoother output.Troubleshooting
Spout sender not appearing
Spout sender not appearing
- Ensure HNode is running and outputting
- Restart the receiving application
- Restart your PC (Spout registration sometimes requires a reboot)
- Check Windows Graphics settings haven’t disabled GPU sharing
Black or corrupted input
Black or corrupted input
- Verify the input resolution matches the sender’s output
- Check the deserializer format matches the incoming texture format
- Ensure the sender is actively transmitting (not paused or stopped)
- Try disabling gamma correction in the deserializer
Poor transcoding performance
Poor transcoding performance
- Lower the
transcodeUniverseCount - Reduce input and output resolutions
- Lower the target framerate
- Close other GPU-intensive applications
Input and output names conflict
Input and output names conflict
Ensure Using the same name for both will cause conflicts.
spoutInputName and spoutOutputName are different:Advanced: Multiple HNode Instances
You can run multiple HNode instances simultaneously for complex workflows:Each instance requires separate configuration files and will use additional system resources.
Next Steps
- Set up OBS Studio to capture HNode’s Spout output
- Configure streaming to send the output to VRChat
- Learn about show configurations to save your Spout setup
- Explore MIDIDMX for direct VRChat integration