Easily add a user interface elements for your shader uniforms.
First annotate your uniforms with a default value min and max, like this:
uniform float stickyness = 2.1; // 10.0-0.1
uniform float sizeMultiplier = 0.2;// 0.01 - 0.5
uniform vec2 distEdges = vec2(0.1, 0.9); // 0.0 - 1.0
uniform float coeff = 2; // 0.01 - 5
uniform float hole = 2.5; // 0 - 3
Then simply, use ofxUniformGuiShader
instead of ofShader
for your shaders. That's it, no update()
s, no draw()
s. Just use load()
, begin()
and end()
on your shader like you usually do.
Each shader with GUI uniforms will be displayed in a seperate parameter group, with the shader name as the group name. The visiblity of the GUI can be toggled with the u key by default.
Supported types are float
, int
, vec2
and vec3
.
To access the GUI managing object, use the static get
function, like:
ofxUniformGui::get()->setVisible(true);
ofxUniformGui::get()->setShowKey('s');
Tested on OSX 10.9, should work on all platforms.