Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ikskuh/cg-workbench
Live shader and graphics coding tool
https://github.com/ikskuh/cg-workbench
glsl live-coding live-shader-editor qmake shaders
Last synced: about 1 month ago
JSON representation
Live shader and graphics coding tool
- Host: GitHub
- URL: https://github.com/ikskuh/cg-workbench
- Owner: ikskuh
- License: mit
- Created: 2017-12-27T09:28:31.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2020-12-02T11:04:47.000Z (almost 4 years ago)
- Last Synced: 2024-05-17T11:43:01.883Z (6 months ago)
- Topics: glsl, live-coding, live-shader-editor, qmake, shaders
- Language: C
- Homepage:
- Size: 17.3 MB
- Stars: 6
- Watchers: 3
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CG Workbench
The CG Workbench is a small GLSL coding environment which allows to rapidly prototype some shaders or shader pipelines.![](https://mq32.de/public/2801bead79cd300b41f6e983d8e4a7fbd7b134dc.png)
Live Shading Demo: [Youtube](https://www.youtube.com/watch?v=et6Kq0yJqxU)
## Controls / Usage
| Input | Action |
|-|-|
| Ctrl+Space, Rightclick on Background | Open *New Node* window |
| Right-Click on a node | Open node editor (save to template, rename node) |
| Ctrl + Left Mouse + Drag | Drag viewport window |
| Ctrl + R | Recompile current window |
| Ctrl + S | Save |
| Ctrl + Shift + S | Save As |
| Ctrl + N | New document |
| Ctrl + O | Open File |
| Alt + F4 | Exit |## Examples
### Gems
![](https://mq32.de/public/159cddca23a0d4e3055aa29b548bf243746661f6.png)
![](https://mq32.de/public/26c330536a3d48368ed26dca8d1267cf5d3cecd8.png)
## Build Instructions
CG Workbench uses [Zig](https://ziglang.org/) as a build system. Just call `zig build` to build your project, `zig-cache/bin` will contain the executable.
### Linux
Install the following libraries / packages:
- `sdl2`
- `gtk-3.0`### Windows
Should work out of the box## External Libraries
This project would be much harder without those great libraries:
- [SDL2](https://www.libsdl.org)
- [GLM](https://glm.g-truc.net/0.9.8/index.html)
- [github.com/nlohmann/json](https://github.com/nlohmann/json)
- [github.com/skaslev/gl3w](https://github.com/skaslev/gl3w)
- [github.com/ocornut/imgui](https://github.com/ocornut/imgui)
- [github.com/mlabbe/nativefiledialog](https://github.com/mlabbe/nativefiledialog)
- [github.com/nothings/stb](https://github.com/nothings/stb)
- [github.com/syoyo/tinyobjloader](https://github.com/syoyo/tinyobjloader)
- [github.com/cxong/tinydir](https://github.com/cxong/tinydir)
- [github.com/severin-lemaignan/webcam-v4l2](https://github.com/severin-lemaignan/webcam-v4l2)## Ideas / Missing Nodes
- Save query when creating new node with existing content
- Shader Common Node
- Provide "includes" for all shaders
- Graphic Nodes
- Geometry Node
- Primitives
- Sphere
- Cube
- Player-Modus (lädt jgraph-File und hat ein Haupt-Renderer)
- Event-Delay Visualisierung
- Buffer -> Texture
- 1D Input/Over → 1D Texture with *n* width
- 2 * 1D Input/Over → 2D Texture with *n* * *m* width
- Input Node
- Keyboard
- Mouse
- Joystick
- Lua Node
- SetUp
- Update
- Shutdown
- Sound Node
- Seek (?)
- Timeline Node
- Attach values to a timeline
- Time as input
- Synth-Kram mit T$
- LUT-Node
- Maps input→output by indexing a table
- Audio Nodes
- Signal Mixer Node
- Envelope Generator Node