summary refs log tree commit diff
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2017-07-24 18:17:27 +0200
committerChristoph Helma <helma@in-silico.ch>2017-07-24 18:17:27 +0200
commit1df0ff1d2612e533c85aa9b8f46043f597a4bd4d (patch)
treeaab126502a94a69041e4b40c2158329186bcbf78
parent7605f1ef06957a432c45311158493dbc9acc0c5c (diff)
shader source size limit increased
-rw-r--r--sv.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/sv.c b/sv.c
index 4475271..461e434 100644
--- a/sv.c
+++ b/sv.c
@@ -17,6 +17,7 @@ GLFWwindow* window;
 GLuint vertex;
 GLuint fragment;
 GLuint shaderProgram;
+int bars;
 
 typedef struct Shad {
   GLuint id;
@@ -38,7 +39,6 @@ typedef struct Img {
 Image images[4];
 
 typedef struct Param {
-  //char name[3];
   float value;
   int new;
 } Parameter;
@@ -54,7 +54,7 @@ static void key_callback(GLFWwindow* window, int key, int scancode, int action,
 const char * readShader(char * path) {
   FILE *file = fopen(path, "r");
   if (!file) { fprintf(stderr,"Cannot read %s\n",path); }
-  char source[2000];
+  char source[1000000];
   int res = fread(source,1,2000-1,file);
   source[res] = 0;
   fclose(file);
@@ -116,23 +116,8 @@ void createWindow() {
   glewInit();
 }
 
-void uniform1f(char * var, float f) {
-  int v = glGetUniformLocation(shader.id, var);
-  glUniform1f(v, f);
-}
-
-void uniform2f(char * var, float f0, float f1) {
-  int v = glGetUniformLocation(shader.id, var);
-  glUniform2f(v,f0,f1);
-}
-
 void imageUniforms(int i) {
-  //Image image = images[i];
-  //char name[2];
-  //sprintf(name,"i%i",i);
   glUniform1i(glGetUniformLocation(shader.id, "images")+i,i);
-  //char ratioName[7];
-  //sprintf(ratioName,"%sratio",name);
   glUniform1f(glGetUniformLocation(shader.id, "ratios")+i,images[i].ratio);
 }
 
@@ -169,6 +154,7 @@ void updateImages(int force) {
 }
 
 void updateParams(int force) {
+  glUniform1i(glGetUniformLocation(shader.id, "bars"), bars);
   for (int i = 0; i<32; i++) {
     if (parameters[i].new || force) {
       glUniform1f(glGetUniformLocation(shader.id, "params")+i, parameters[i].value);
@@ -192,6 +178,11 @@ void *readStdin() {
       strncpy(shader.fragment, strtok(NULL,"\n"),40);
       shader.new = 1;
     }
+    else if (n[0] == 'b') {
+      bars = atof(strtok (NULL,"\n"));
+      glfwSetTime(0);	
+      printf("%i\n",bars);
+    }
     else if (n[0] == 'p') {
       int i = atoi(strtok(NULL," "));
       parameters[i].value = atof(strtok (NULL,"\n"));
@@ -235,7 +226,7 @@ int main(int argc, char **argv) {
     glUniform1f(glGetUniformLocation(shader.id, "time"),glfwGetTime());
     if (shader.new) {
       createShader();
-      uniform2f("resolution", width,height); // important!!
+      glUniform2f(glGetUniformLocation(shader.id, "resolution"),width,height); // important!!
       for (int i = 0; i<4; i++) { imageUniforms(i); }
       updateParams(1);
       shader.new = 0;