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.

0.7.1发布于 2026-01-12 00:01 UTC249star30fork同步于 2026-11-07 07:33 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/zbanks/radiance.git
cd radiance
cargo run
硬件要求按 README 说明

README 未说明具体显存或 GPU 型号要求,只说明所有渲染都经 GPU 加速,即使在笔记本上也能有良好性能;软件可在 Linux、Mac、Windows 上运行。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

面向 VJ 的实时视频艺术软件,用 GPU 着色器链和节拍检测做现场视觉

面向 VJ 的实时视频艺术软件,支持节拍检测、GIF 与 YouTube 视频播放及 OpenGL 着色器特效,专为 Linux 和 macOS 现场演出设计。

核心能力

  • 用 WGSL 片元着色器节点串联出视频效果,内置 150+ 个效果
  • 接入音频做节拍检测,并把节拍作为全局时间基准驱动动画
  • 通过 libmpv 播放本地视频、摄像头、直播流和 YouTube 链接
  • 内置投影映射编辑器,可输出到一个或多个屏幕
  • 支持多缓冲区着色器,用 #buffershader 保存跨帧状态

容易踩的坑

需要预先安装 libmpv(动态链接)以及 rust 和 cargo;播放 YouTube 等网络视频要自行安装 yt-dlp 并确保它在 PATH 中;Rust 重写版尚未达到功能对等,MIDI 控制器输入和 TCP 输出(用于 LED 屏)仍缺失。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本0.7.1
  1. 0.7.1最新正式版2026-01-12 · 2026-01-12 00:01 UTC

    这个版本没有写更新说明。

  2. 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)
  3. 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
  4. 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
  5. 0.5.02018-11-02 · 2018-11-02 03:03 UTC

    这个版本没有写更新说明。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Radiance

    Radiance is video art software designed for live performance. More information is available at radiance.video

    Build Status

    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

    • rust and cargo
    • libmpv (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 tile
    • Ctrl-click (on a tile) - select multiple
    • Shift-click (on a tile) - select contiguous
    • Click and drag (on a tile) - re-order selected tiles
    • Scroll wheel - change intensity of selected tiles

    Keyboard Control

    • A - Add a node from the library
    • Delete - Remove a tile
    • R - 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.