blob: 3e43db46a2a0946700be91a76ffe1cbb3529f866 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
glsl-view
=========
a minimal GLSL shader host with an OSC interface for setting uniforms in realtime.
OSC interface
-------------
GLSL uniforms are accessible as `/$UNIFORM_NAME`. The OSC type must match the GLSL type:
uniform float time = 0;
uniform dvec3 color;
----
/time f 123.56
/color ddd 0.5 0.1 0.1
Vectors and matrices can be indexed using integers or the GLSL swizzling keys (x/y/z/w, r/g/b/a, s/t/p/q):
uniform vec3 color;
uniform mat3 mat;
----
/color/r f 0.5
/mat/0/y f 123
### samplers
When built with ffmpeg, images and videos can be loaded as 2D or 3D textures:
uniform sampler2D image;
uniform sampler3D videoA;
uniform sampler2DArray videoB;
----
/image s "image.jpg"
/videoA s "subdir/video_a.mp4"
/videoB s "subdir/video_b.mov"
The filepaths are interpreted relative to the config file.
### commands
A message to `/-/reload` forces a reload of the shader source code.
configuration
-------------
Configuration is read from `config.yaml` or the only command line argument.
- `fragment` (`str`): path to GLSL fragment shader.
- `width` (`int`): horizontal rendering resolution. defaults to `1920`.
- `height` (`int`): vertical rendering resolution. defaults to `1080`.
- `outputs`: list of outputs. defaults to one 800x600 window.
each output is a dictionary with the following keys:
- `type` (`str`): currently always `window`.
- `width` (`int`): window width. defaults to `800`.
- `height` (`int`): window height. defaults to `600`.
- `filter` (`str`): one of `nearest` or `linear`.
- `osc`: either a 'liblo URL' or dictionary with the following keys:
- `protocol` (`str`): `udp`, `tcp` or `unix`. defaults to `udp`.
- `port` (`int`): port to bind to. defaults to `9000`.
### liblo URLs
Unfortunately undocumented by libio. The following formats are valid:
- `osc.udp://localhost:1234`
- `osc.udp://224.0.1.9:1234` (multicast IP)
- `osc.tcp://:1234`
- `osc.unix://localhost/tmp/mysocket`
|