README.md 2.62 KB
Newer Older
Gargaj's avatar
Gargaj committed
1
2
# Bonzomatic

Gargaj's avatar
Gargaj committed
3
4
5
## What's this?
This is a live-coding tool, where you can write a 2D fragment/pixel shader while it is running in the background.

Gargaj's avatar
Gargaj committed
6
![Screenshot](http://i.imgur.com/8K8IztLl.jpg)
Gargaj's avatar
Gargaj committed
7

Gargaj's avatar
Gargaj committed
8
The tool was originally conceived and implemented after the Revision 2014 demoscene party's live coding competition where two contestants improv-code an effect in 25 minutes head-to-head: https://www.youtube.com/watch?v=-5P9rRUXaR0
Gargaj's avatar
Gargaj committed
9
10
11
12
13
14

## Keys
- F5: recompile shader
- F11: hide shader overlay
- Alt-F4: exbobolate your planet

Gargaj's avatar
Gargaj committed
15
16
17
18
19
20
21
22
## Configuration
Create a ```config.json``` with e.g. the following contents: (all fields are optional)
``` javascript
{
  "font":{
    "file":"Input-Regular_(InputMono-Medium).ttf",
    "size":16,
  },
Gargaj's avatar
Gargaj committed
23
24
25
  "rendering":{
    "fftSmoothFactor": 0.9, // 0.0 means there's no smoothing at all, 1.0 means the FFT is completely smoothed flat
  },
Gargaj's avatar
Gargaj committed
26
27
28
29
  "textures":{ /* the keys below will become the shader variable names */
    "texChecker":"textures/checker.png",
    "texNoise":"textures/noise.png",
    "texTex1":"textures/tex1.jpg",
Gargaj's avatar
opos    
Gargaj committed
30
  },
Gargaj's avatar
Gargaj committed
31
32
  "gui":{
    "outputHeight": 200,
Gargaj's avatar
Gargaj committed
33
    "opacity": 192, // 255 means the editor occludes the effect completely, 0 means the editor is fully transparent
Gargaj's avatar
option    
Gargaj committed
34
    "texturePreviewWidth": 64,
35
36
37
    "spacesForTabs": false,
    "tabSize": 8,
    "visibleWhitespace": true,
Gargaj's avatar
Gargaj committed
38
39
40
  },
  "midi":{ /* the keys below will become the shader variable names, the values are the CC numbers */
    "fMidiKnob": 16, /* e.g. this would be CC#16, i.e. by default the leftmost knob on a nanoKONTROL 2 */
Gargaj's avatar
Gargaj committed
41
42
43
44
  }
}
```

Gargaj's avatar
Gargaj committed
45
46
47
48
## Building
Please use Visual C++ 2010 - nothing else is needed right now.

## Future features / todo / etc.
Gargaj's avatar
Gargaj committed
49
- Option for tab sizes / spaces
Gargaj's avatar
Gargaj committed
50

Gargaj's avatar
Gargaj committed
51
52
53
## Credits and acknowledgements
### Original / parent project authors
- "ScintillaGL" project by Mykhailo Parfeniuk (https://github.com/sopyer/ScintillaGL)
Gargaj's avatar
Gargaj committed
54
- Riverwash LiveCoding Tool by Michał Staniszewski and Michal Szymczyk (http://www.plastic-demo.org/)
Gargaj's avatar
Gargaj committed
55
56
57
58
59
60
61

### Libraries and other included software
- Scintilla editing component by the Scintilla Dev Team (http://www.scintilla.org/)
- GLee extension library by Ben Woodhouse (http://elf-stone.com/downloads/GLee/)
- BASS.DLL by Ian Luck (http://www.un4seen.com/)
- STB Image and Truetype libraries by Sean Barrett (http://nothings.org/)
- Simple DirectMedia Layer by the SDL dev team (https://www.libsdl.org/)
Gargaj's avatar
Gargaj committed
62
- JSON++ by Hong Jiang (https://github.com/hjiang/jsonxx)
Gargaj's avatar
Gargaj committed
63
 
Gargaj's avatar
Gargaj committed
64
These software are available under their respective licenses.
Gargaj's avatar
Gargaj committed
65

66
The remainder of this project code was (mostly, I guess) written by Gargaj / Conspiracy and is public domain.
Gargaj's avatar
Gargaj committed
67
68

## Contact / discussion forum
Gargaj's avatar
Gargaj committed
69
If you have anything to say, do it at http://www.pouet.net/topic.php?which=9881