需要预先安装 libmpv(动态链接)以及 rust 和 cargo;播放 YouTube 等网络视频要自行安装 yt-dlp 并确保它在 PATH 中;Rust 重写版尚未达到功能对等,MIDI 控制器输入和 TCP 输出(用于 LED 屏)仍缺失。
radiance
zbanks更新放缓面向 VJ 的实时视频艺术软件,支持节拍检测、GIF 与 YouTube 视频播放及 OpenGL 着色器特效,专为 Linux 和 macOS 现场演出设计。
Radiance is video art software for VJs. It supports beat detection, animated GIFs, YouTube video, OpenGL shader effects. It is designed for live performance and runs on Linux and MacOS.
git clone https://github.com/zbanks/radiance.git
cd radiance
cargo runREADME 未说明具体显存或 GPU 型号要求,只说明所有渲染都经 GPU 加速,即使在笔记本上也能有良好性能;软件可在 Linux、Mac、Windows 上运行。
面向 VJ 的实时视频艺术软件,用 GPU 着色器链和节拍检测做现场视觉
面向 VJ 的实时视频艺术软件,支持节拍检测、GIF 与 YouTube 视频播放及 OpenGL 着色器特效,专为 Linux 和 macOS 现场演出设计。
核心能力
- 用 WGSL 片元着色器节点串联出视频效果,内置 150+ 个效果
- 接入音频做节拍检测,并把节拍作为全局时间基准驱动动画
- 通过 libmpv 播放本地视频、摄像头、直播流和 YouTube 链接
- 内置投影映射编辑器,可输出到一个或多个屏幕
- 支持多缓冲区着色器,用 #buffershader 保存跨帧状态
容易踩的坑
- 0.7.1最新正式版2026-01-12 · 2026-01-12 00:01 UTC
这个版本没有写更新说明。
- 0.7.02025-12-19 · 2025-12-19 04:30 UTC
查看更新说明
- Rewrite in Rust
- Primitive projection mapping support
- Windows compatibility
Missing features from 0.6.1:
- MIDI controller input
- TCP output (for LED displays)
- 0.6.12019-07-29 · 2019-07-29 02:35 UTC
查看更新说明
- Prototype of "AutoDJ"
- Serious backend improvements regarding memory management
- Fix some font size issues
- Fix some Ubuntu window manager issues
- Qt 5.13 compatibility
- 0.6.02018-11-02 · 2018-11-02 03:48 UTC
查看更新说明
- Added a built-in GLSL editor (press "E" to edit an effect)
- LightOutputNode allows interfacing with your custom lighting setups (see light_output.md)
- Significantly improved console output (e.g. for when shaders don't compile)
- Added a "user library" in the user's home folder, which overrides the "system library"
- General path cleanup, no longer tries to write to system directories
- 0.5.02018-11-02 · 2018-11-02 03:03 UTC
这个版本没有写更新说明。
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Radiance
Radiance is video art software designed for live performance. More information is available at radiance.video
Features
GPU-based shader effects
Chain together simple building blocks to create fantastic video effects. All rendering is GPU-accelerated for good performance, even on laptops. Radiance comes pre-loaded with over 150 effects, which are written in WGSL and can be edited live.
Media
Bring your own video clips and images. Radiance integrates the powerful video player MPV. Open files, webcams, live streams, and even Youtube videos, straight into Radiance.
Beat detection
Connect Radiance to your sound system for music-reactive visuals. Radiance performs beat detection on the incoming audio, and uses this as the global timebase. This means that every effect will automatically be "on the beat" and will slow down or speed up along with the music.
Performance-ready
Radiance is designed with live performance in mind. Patterns are easy to create and tweak on the fly. Output to one or more screens or use the built-in projection mapping editor.
Project Status
Radiance has recently been completely rewritten in rust. The rewrite is not quite at feature-parity, but you should find that the experience is much improved.
Missing features from 0.6.1:
- MIDI controller input
- TCP output (for LED displays)
Download
You can download Radiance for Linux, Mac, or Windows from the releases page.
Build
Dependencies
rustandcargolibmpv(dynamically linked)
Building Radiance
git clone https://github.com/zbanks/radiance.git
cd radiance
cargo run
youtube-dl
Radiance uses libmpv to load videos, which can optionally use yt-dlp to stream videos from YouTube and many other sites. Since yt-dlp updates frequently, we have avoided bundling it with Radiance. Instead, on Linux or Windows:
pip install yt-dlp
or on Mac:
brew install yt-dlp
Radiance will look for yt-dlp in your path. Try launching it from the command line to make sure it is found. Once set installed, you can then load YouTube videos into Radiance by URL.
Mouse Control
Click(on a tile) - select tileCtrl-click(on a tile) - select multipleShift-click(on a tile) - select contiguousClick and drag(on a tile) - re-order selected tilesScroll wheel- change intensity of selected tiles
Keyboard Control
A- Add a node from the libraryDelete- Remove a tileR- Reload tile
Shader Effects
Radiance generates video from a set of connected nodes. Nodes are based on WGSL fragment shaders, but can also be static images or videos. Each node takes one or more inputs and produces exactly one output.
Each WGSL fragment shader node is described by a single .wgsl file in library/.
For the most part, these files are plain WGSL describing the fragment shader. This is similar to setups on shadertoy.com or glslsandbox.com . Each shader defines a function fn main(uv: vec2<f32>) -> vec4<f32> which returns a pixel color for a given coordinate. The return value should be a RGBA color with pre-multiplied alpha: so white with 40% opacity is encoded as vec4<f32>(0.4, 0.4, 0.4, 0.4). The coodinate uv has x and y values in the range [0.0, 1.0] with vec2<f32>(0., 0.) corresponding to the lower-left corner.
The shader also has access to its input(s) as textures through the iInputTex (or iInputsTex[]) bindings.
In addition, each shader has access to uniforms which are documented in library/*.wgsl. The most important is iIntensity, which is a value in the range [0.0, 1.0] and is set by the effect's slider in the UI. There is a limitation of having exactly one input slider per effect: this is intentional to reduce the cognitive overhead on the end user. Other variables include information about the current audio and time.
Invariants
Each shader must follow these properties:
- Identity: the shader must pass through its first input completely unchanged when
iIntensity == 0.This means that inserting a new shader should not affect the output until its intensity is increased. - Continuity: a smooth change in intensity should produce a smooth change in behavior. There should be no sudden jumps in behavior as the slider is dragged.
Additionally, the returned color must be a valid, pre-multiplied alpha, RGBA tuple. Each component of the vec4 must be in the range [0.0, 1.0], and the RGB components must be less than or equal to the A component. See afixhighlight for a shader that will highlight errors here in pink.
Multi-buffer Shader Effects
Some effects cannot be accomplished with a single fragment shader pass. An effect can consist of a series of shaders, separated by #buffershader. Each shader renders to a texture in iChannelsTex[] (e.g. the first shader renders to iChannelsTex[0], which, if accessed in the shader, contains the previous output frame.) The shaders are rendered in backwards-order, so the last shader in the file is rendered first. Only the output of the first shader in the file is displayed -- the other buffers persist between frames but are not exposed to other nodes.
An example that uses this feature is scramble.wgsl. This shader shifts around parts of the input. In order to persist the UV map of how much each pixel is shifted, it uses one buffer shader whose output persists in iChannelsTex[1].
Copyright & License
Released under the MIT/X11 License. Copyright 2025 Zach Banks and Eric Van Albert.