1 个不稳定版本
| 0.1.0 | 2022 年 12 月 8 日 |
|---|
321 在 图形 API 中
5MB
4K SLoC
Radiance
Radiance 是 VJ 的视频艺术软件。它支持节拍检测、动画 GIF、YouTube 视频、OpenGL 着色器效果。它专为现场表演设计,并在 Linux 和 MacOS 上运行。
艺术品

下载
您可以从 发布页面 下载 Radiance for Linux 或 MacOS。
构建
依赖项
Qt 5.9或更高版本PortAudioFFTW3libsamplerate
可选依赖项
libmpvrtmidi
在 Ubuntu 上安装依赖项
$ sudo apt-add-repository ppa:beineri/opt-qt591-trusty
$ sudo apt-get update
$ sudo apt-get install qt59base qt59multimedia qt59quickcontrols qt59imageformats qt59quickcontrols2 qt59script libfftw3-dev libsamplerate0-dev libasound2-dev libmpv-dev libdrm-dev libgl1-mesa-dev
$ git clone https://github.com/EddieRingle/portaudio # build & install
$ git clone https://github.com/thestk/rtmidi # build & install
注意:您可能需要从 git 安装 portaudio 和 rtmidi,如上所述
构建 Radiance
git clone https://github.com/zbanks/radiance
git submodule update --init
cd radiance
mkdir build
cd build
cmake .. # -DCMAKE_PREFIX_PATH=/opt/qt59/ -DCMAKE_BUILD_TYPE=Debug
make
./radiance # Qt UI
./radiance_cli # Command line GIF generator
如果您有 git pull 变更,请确保您还执行 git submodule update 以拉取 BTrack/ 的变更。
youtube-dl
Radiance 使用 libmpv 加载视频,可以可选地使用 youtube-dl 从 YouTube 和许多其他网站流式传输视频。由于 youtube-dl 经常更新,我们避免将其与 Radiance 一起捆绑。相反,在 Linux
sudo pip install youtube-dl
或 Mac
brew install youtube-dl
上,您可以使用库中的 youtube 节点将 YouTube 视频加载到 Radiance 中。
鼠标控制
双击(在库中) - 添加瓦片点击(在瓦片上) - 选择瓦片Ctrl-点击(在瓦片上) - 选择多个- Shift-
click(在瓦片上) - 选择连续的 - 点击并拖动(在瓦片上) - 重新排序选定的瓦片
- 滚轮 - 改变选定瓦片的强度
- Ctrl-
scroll wheel- 缩放
键盘控制
:- 搜索库- Ctrl-
+- 放大 - Ctrl-
-- 缩小 - Ctrl-
0- 重置缩放 `,0-9- 设置选定的滑块。`= 0%;1= 10%;5= 50%;0= 100%j- 减少选定滑块 10%k- 增加选定滑块 10%Delete- 删除瓦片- Ctrl +
`,1-9- 将滑块分配给 MIDI 轮 r- 重新加载瓦片Esc- 关闭输出窗口
着色器效果
Radiance 通过一组连接的 "VideoNodes" 生成视频。这些节点通常基于 OpenGL 片段着色器,但也可能是静态图像、GIF 或视频。每个节点接受一个或多个输入并产生一个输出。
每个 OpenGL 片段着色器节点由一个位于 resources/library/effects 的 .glsl 文件描述。
这些文件主要是描述片段着色器的 GLSL 代码。这类似于 shadertoy.com 或 glslsandbox.com 上的设置。每个着色器定义一个函数 void main(void),它为给定的坐标 vec2 uv 设置像素颜色 vec4 fragColor。 fragColor 是一个预乘 alpha 的 RGBA 颜色:因此 40% 透明度的白色编码为 vec4(0.4, 0.4, 0.4, 0.4)。坐标 uv 的 x 和 y 值在 [0.0, 1.0] 的范围内,其中 vec2(0., 0.) 对应左下角。
着色器还可以通过 iInput(或 iInputs[])统一变量访问其输入。
此外,每个着色器还可以访问其他uniform变量,这些变量在resources/effects/*.glsl中有文档说明。其中最重要的是iIntensity,它是一个范围在[0.0, 1.0]的值,它映射到UI中的滑块,由用户控制。每个效果有一个限制:每个效果恰好有一个输入滑块:这是为了减少对最终用户的认知负担。其他变量包括有关当前音频或时间的信息。
不变性
每个着色器必须遵循以下属性
- 每个着色器设置的
fragColor必须是一个有效的、预乘的alpha,RGBA元组。每个vec4的分量必须在[0.0, 1.0]的范围内,并且RGB分量必须小于或等于A分量。(参见afixhighlight以突出显示此处的错误,颜色为粉红色) - 恒等性:当
iIntensity == 0.时,着色器必须完全不变地传递其第一个输入。这意味着在增加强度之前,插入新的着色器不应影响输出。
多缓冲区着色器效果
某些效果无法通过单个片段着色器传递完成。一个效果可以由一系列着色器组成,这些着色器通过#buffershader分隔。每个着色器渲染到iChannels[](例如,第一个渲染到iChannels[0])。着色器按反向顺序渲染,因此文件中的最后一个着色器首先渲染。仅显示文件中的第一个着色器的输出--其他缓冲区在帧之间持续存在,但不对其他节点公开。
使用此功能的示例是foh.glsl。它实现了一个(指数)"一阶保持" - 在节拍倍数上采样输入纹理并将其存储在iChannel[1]中。
版权 & 许可
在MIT/X11许可证下发布。版权所有2016年Zach Banks和Eric Van Albert。
依赖项
~22–57MB
~1M SLoC