README.md 2.58 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

## Keys
Gargaj's avatar
Gargaj committed
11
- F2: toggle texture preview
Gargaj's avatar
Gargaj committed
12
13
14
15
- F5: recompile shader
- F11: hide shader overlay
- Alt-F4: exbobolate your planet

Gargaj's avatar
Gargaj committed
16
17
18
19
20
21
22
23
## 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
24
25
26
  "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
27
28
29
30
  "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
31
  },
Gargaj's avatar
Gargaj committed
32
33
  "gui":{
    "outputHeight": 200,
Gargaj's avatar
Gargaj committed
34
    "opacity": 192, // 255 means the editor occludes the effect completely, 0 means the editor is fully transparent
Gargaj's avatar
option    
Gargaj committed
35
    "texturePreviewWidth": 64,
36
37
38
    "spacesForTabs": false,
    "tabSize": 8,
    "visibleWhitespace": true,
Gargaj's avatar
Gargaj committed
39
40
41
  },
  "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
42
43
44
45
  }
}
```

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

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

### 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
60
- JSON++ by Hong Jiang (https://github.com/hjiang/jsonxx)
Gargaj's avatar
Gargaj committed
61
 
Gargaj's avatar
Gargaj committed
62
These software are available under their respective licenses.
Gargaj's avatar
Gargaj committed
63

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

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