Add support for modifiable parameters
This commit is contained in:
parent
ecbb66b21e
commit
fdb86173bc
2 changed files with 54 additions and 2 deletions
|
@ -5,6 +5,9 @@ out vec4 fragColor;
|
||||||
uniform vec2 res;
|
uniform vec2 res;
|
||||||
uniform float time;
|
uniform float time;
|
||||||
|
|
||||||
|
uniform int param_l;
|
||||||
|
uniform int param_m;
|
||||||
|
|
||||||
const float sharpness = 300;
|
const float sharpness = 300;
|
||||||
|
|
||||||
const float PI = 3.14159265358979323846;
|
const float PI = 3.14159265358979323846;
|
||||||
|
@ -31,8 +34,8 @@ void main(void) {
|
||||||
|
|
||||||
float scene = 0;
|
float scene = 0;
|
||||||
|
|
||||||
int n = 32;
|
int n = param_l + 32;
|
||||||
float k = 0;
|
float k = param_m;
|
||||||
for (int i = 0; i < n; i++) {
|
for (int i = 0; i < n; i++) {
|
||||||
float c = square(vec2(0.5, 0) * rot(PI/2*(4.0*i/n)) * vec2(1, 1), 0.3, -PI/2*(k*i/n + time/1500), p);
|
float c = square(vec2(0.5, 0) * rot(PI/2*(4.0*i/n)) * vec2(1, 1), 0.3, -PI/2*(k*i/n + time/1500), p);
|
||||||
scene = abs(scene - c);
|
scene = abs(scene - c);
|
||||||
|
|
49
glslview.c
49
glslview.c
|
@ -53,6 +53,14 @@
|
||||||
static float speed = 1.0;
|
static float speed = 1.0;
|
||||||
static unsigned previous_ticks = 0;
|
static unsigned previous_ticks = 0;
|
||||||
|
|
||||||
|
static GLint param_k = 0;
|
||||||
|
static GLint param_l = 0;
|
||||||
|
static GLint param_m = 0;
|
||||||
|
|
||||||
|
static GLint param_k_loc;
|
||||||
|
static GLint param_l_loc;
|
||||||
|
static GLint param_m_loc;
|
||||||
|
|
||||||
#ifdef USE_INOTIFY
|
#ifdef USE_INOTIFY
|
||||||
static int inotify_fd = -1;
|
static int inotify_fd = -1;
|
||||||
static int inotify_watch = -1;
|
static int inotify_watch = -1;
|
||||||
|
@ -141,6 +149,12 @@ static void load(void) {
|
||||||
time_loc = glGetUniformLocation(program, "time");
|
time_loc = glGetUniformLocation(program, "time");
|
||||||
res_loc = glGetUniformLocation(program, "res");
|
res_loc = glGetUniformLocation(program, "res");
|
||||||
|
|
||||||
|
#ifndef GLSLWRITE
|
||||||
|
param_k_loc = glGetUniformLocation(program, "param_k");
|
||||||
|
param_l_loc = glGetUniformLocation(program, "param_l");
|
||||||
|
param_m_loc = glGetUniformLocation(program, "param_m");
|
||||||
|
#endif
|
||||||
|
|
||||||
glUseProgram(program);
|
glUseProgram(program);
|
||||||
|
|
||||||
free(shader);
|
free(shader);
|
||||||
|
@ -250,6 +264,10 @@ static void render(int width, int height) {
|
||||||
unsigned ticks = SDL_GetTicks();
|
unsigned ticks = SDL_GetTicks();
|
||||||
current_time += speed * (ticks - previous_ticks);
|
current_time += speed * (ticks - previous_ticks);
|
||||||
previous_ticks = ticks;
|
previous_ticks = ticks;
|
||||||
|
|
||||||
|
glUniform1i(param_k_loc, param_k);
|
||||||
|
glUniform1i(param_l_loc, param_l);
|
||||||
|
glUniform1i(param_m_loc, param_m);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
glUniform1f(time_loc, current_time);
|
glUniform1f(time_loc, current_time);
|
||||||
|
@ -278,6 +296,10 @@ static void handle_input(const char *input) {
|
||||||
current_time = 0;
|
current_time = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'R':
|
||||||
|
param_k = param_l = param_m = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
case '+':
|
case '+':
|
||||||
speed *= 1.1;
|
speed *= 1.1;
|
||||||
break;
|
break;
|
||||||
|
@ -341,6 +363,33 @@ int main(int argc, char *argv[]) {
|
||||||
switch (e.type) {
|
switch (e.type) {
|
||||||
case SDL_KEYDOWN:
|
case SDL_KEYDOWN:
|
||||||
switch (e.key.keysym.sym) {
|
switch (e.key.keysym.sym) {
|
||||||
|
#ifndef GLSLWRITE
|
||||||
|
case SDLK_PAGEDOWN:
|
||||||
|
param_k++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SDLK_PAGEUP:
|
||||||
|
param_k--;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SDLK_RIGHT:
|
||||||
|
param_l++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SDLK_LEFT:
|
||||||
|
param_l--;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SDLK_DOWN:
|
||||||
|
param_m++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SDLK_UP:
|
||||||
|
param_m--;
|
||||||
|
break;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
case SDLK_ESCAPE:
|
case SDLK_ESCAPE:
|
||||||
goto quit;
|
goto quit;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue