Windows x64 Spout2 input/output bindings prepared and tested for Redot 26.2. This package is a Redot-focused rebuild of you-win/spout-gd, with a narrow compatibility and diagnostics patch for reliable SpoutViewport output.
Version: 0.1.0-alpha.1
This fork preserves the upstream history and contains the patched C++ source, pinned submodules, prebuilt Windows binaries, demo project, smoke test, build provenance, and release packaging. It is based on upstream commit 867b32d.
Download the installable ZIP from the v0.1.0-alpha.1 prerelease.
- Tested with Redot
26.2.stable.official.4f5b14abaon Windows x64. - Forward+/D3D12 output works through synchronous GPU-to-CPU image readback.
- Verified in a local portable OBS 32.1.2 copy at 1920x1080 RGBA and 60 FPS using the Spout2 OBS plugin.
- Live animation, alpha, same-GPU operation, and sender reconnect were verified.
- Direct OpenGL texture sharing is experimental and disabled by default because Spout's GL/DX interop terminates the tested Redot/NVIDIA configuration.
- Spout carries video only. Capture application audio separately in OBS.
This is an alpha package. The readback path is functional but is not zero-copy, and end-to-end latency still needs comparison against OBS Game/Window Capture under representative load.
- Download the Windows x64 release ZIP.
- Extract it into the root of a Redot project.
- Confirm this file exists:
res://addons/spout-gd/spout_gd.gdextension. - Restart the Redot editor so it imports and loads the GDExtension.
- Confirm
ClassDB.class_exists(&"SpoutViewport")from GDScript.
This is a runtime GDExtension, not an EditorPlugin; there is no plugin.cfg checkbox to enable. Redot discovers the .gdextension descriptor automatically.
extends Node
var program: SubViewport
func _ready() -> void:
assert(ClassDB.class_exists(&"SpoutViewport"))
program = ClassDB.instantiate(&"SpoutViewport") as SubViewport
program.name = "ProgramOutput"
program.size = Vector2i(1920, 1080)
program.transparent_bg = true
program.render_target_update_mode = SubViewport.UPDATE_ALWAYS
program.set("sender_name", "MyRedotProgram")
add_child(program)
# Add the 2D/3D content to publish as children of program.For the tested path, use Forward+ with the D3D12 rendering driver and leave prefer_direct_texture disabled.
The repository checkout includes a demo project and smoke test. Open its root as a Redot project and run it. The demo publishes RedotSpoutDemo, displays the same animated RGBA viewport locally, and writes user://redot_spout_demo_report.json.
Headless bridge smoke check:
& $env:REDOT_BIN --headless --path . --script res://tests/smoke_spout_bridge.gdThe install ZIP intentionally omits project.godot, demo, and tests so extracting it cannot replace a target project's settings or add sample content. Those files remain available in the repository checkout.
The repository also retains the native source under src/. The tested DLLs in addons/spout-gd are checked in so users do not need a C++ toolchain. Contributors can reproduce them using docs/BUILDING.md.
See docs/API.md, docs/BUILDING.md, THIRD_PARTY.md, and CHANGELOG.md.
Spout-GD and this derivative patch are distributed under MPL-2.0. Spout2 is distributed under the BSD 2-Clause license. Exact license texts are retained under addons/spout-gd, with pinned revisions and binary hashes in THIRD_PARTY.md.
I vibe coded this in GPT Sol 5.6. Use at your own risk.
Greetings! I am Dominic Bytes, the synth walker. I hail from the distant future. Where brains occupy robot bodies, time travel is a trip to the corner store, and the neon glow of our attire is powered by the light of our souls. Join me on a 1.21 gigawatt powered journey of chill vibes with gaming, anime, movies, and more!