Browse Source

refactor shader_live

micha 2 years ago
parent
commit
cf8e2300d9
4 changed files with 720 additions and 357 deletions
  1. 357 0
      vpu/shader1_live.py
  2. 362 0
      vpu/shader2_live.py
  3. 0 357
      vpu/shader_live.py
  4. 1 0
      vpu/shader_live.py

+ 357 - 0
vpu/shader1_live.py

@@ -0,0 +1,357 @@
+
+
+import moderngl_window as mglw
+import moderngl
+#import moderngl.window
+import time
+#print(dir(moderngl))
+
+#export DISPLAY=:99.0
+#Xvfb :99 -screen 0 640x480x24 &
+#redirects screen output to invisibel framebuffer 
+# python3 main.py --window glfw --fullscreen --samples 16 --cursor false --size 800x600
+
+vertex_shader = """
+#version 400
+
+in vec3 in_position;
+
+void main(){
+    gl_Position = vec4(in_position, 0.9);
+}
+"""
+
+
+
+fragment_shader = """
+#version 400
+
+#define PI 3.1415926538
+out vec4 fragColor;
+uniform vec4 col2 = vec4(1);
+uniform vec4 col3 = vec4(1,0,0,0);
+uniform vec4 col44 = vec4(0,1,0,0);
+uniform vec2 resolution;
+uniform float time;
+
+vec4 ring(vec4 col,vec2 uv,vec2 aa, int z,float ang, float speed,float scaleX, float scaleY){
+    //z =1; //count of star's
+    //ang = 270;
+    float t = time;
+    for( float i=0.0; i < z; i++){
+
+        float a = 0;
+        a = ang/z * i * (PI/180)  ;
+	    //a += time*speed;
+        a += time/100*speed;
+
+        float dy = cos(a) ;
+        float dx = sin(a) ;
+
+	    dy = dy * scaleY; // *.4; // scale y
+	    dx = dx * scaleX; //*.9; // scale x
+        dy += aa.y;
+        dx += aa.x;
+        if( i== 0){
+            //col = vec2(dx,dy);
+        }else{
+            col += .30  / length(uv+vec2(dx,dy) );
+        }
+    }
+        col *=  sin(vec4(0.4,0.8,0.9,1)  * time) * .35  +0.25;
+    fragColor = col ;//vec4(col, 1.0);
+    return col;
+    //return fragColor;
+}
+
+
+vec4 circle(vec2 uv,vec4 col,vec2 a, float r, vec4 col2){
+    if( distance( uv-a, vec2(0.5,0.5)) < r/2.0){
+            col = col2;
+    }
+    return col;
+}
+
+vec4 block(vec2 uv,vec4 col, vec2 a, vec2 b, vec4 col2){
+    float r1 = 0;
+    float boarder = 5;
+    float x1 = uv.x-a.x;
+    float x2 = uv.x-a.x+b.x;
+    if( uv.x > a.x-b.x/2 && uv.x < a.x+b.x/2 ){
+       
+        float y1 = uv.y-a.y;
+        float y2 = uv.y-a.y+b.y;
+
+        float r2 = 0;
+        if( uv.y > a.y-b.y/2 && uv.y < a.y+b.y/2 ){
+            col = col2;
+            //col.r = 1    ; //time ;//vec4(0,time, 0,1);
+            //col.g = 0.0  ;//time ;//vec4(0,time, 0,1);
+            //col.b = 1.1  ;//time ;//vec4(0,time, 0,1);
+            //col.a = 1.0;
+            //col *= 0.2+(r1*r2) ;//(r1 * r2);
+            //col[3] += time*10 ;//vec4(0,time, 0,1);
+            if( r2< 1){
+                r2 += 0.2;
+            }
+        }
+        if( r1 < 1){
+            r1 += 0.2;
+        }
+    }
+    if( uv.y == a.y ){ //|| uv.x == a.x ){
+        col.r = 1    ; //time ;//vec4(0,time, 0,1);
+        col.g = 1  ;//time ;//vec4(0,time, 0,1);
+        col.b = 0  ;//time ;//vec4(0,time, 0,1);
+        col.a = 1.0;
+    }
+    return col;
+}
+vec4 block1(vec2 uv,vec4 col, vec2 a, vec2 b){
+    if( uv.x > a.x && uv.x < a.x+b.x ){
+        if( uv.y > a.y && uv.y < a.y+b.y ){
+            col.r = 0 ;//time ;//vec4(0,time, 0,1);
+            col.g = 0.5 ;//time ;//vec4(0,time, 0,1);
+            col.b = 0.9 ;//time ;//vec4(0,time, 0,1);
+            col.a = 1.0;
+            //col[3] += time*10 ;//vec4(0,time, 0,1);
+        }
+    }
+    return col;
+}
+vec4 pulse(vec2 uv,vec4 col, vec2 a,vec4 col4){
+    float tt = sin(time*10)*1000;
+    col = circle(uv,col,a,tt,col4);
+    col4 = vec4(0,0,0,1);
+    col = circle(uv,col,a,tt-100,col4);
+
+    tt = cos(time)*1000;
+    col4 = vec4(1,0,0,1);
+    col = circle(uv,col,a,tt-300,col4);
+    col4 = vec4(0,0,0,1);
+    col = circle(uv,col,a,tt-310,col4);
+    return col;
+}
+
+void main1(){;
+    vec2 uv = gl_FragCoord.xy ; //vUV.st ;
+    //vec2 uv = (gl_FragCoord.xy - resolution.xy/2) / resolution.y;
+    uv -= resolution.xy/2;
+    float r = 0.17;
+
+    vec2 a = vec2(200,0);
+    vec2 b = vec2(50,50);
+
+    
+    int z = 10;
+    float ang = 360;
+    float speed = .9;
+    uv.x = uv.x * 2 -1;
+    uv.y = uv.y * 2 -1;
+    uv += vec2(0,1);
+    uv.x += 1;
+    vec4 col = vec4(0,0,0,1);
+    vec4 col4 = vec4(0,1,0,1);
+
+    //# background animation
+    float mysin = sin(uv.x/3.14/20*time);
+    float mysin2 = sin(uv.y/3.14/20*time*4);
+    float mycos = cos(uv.x/3.14/10*time);
+    //col += vec4(mysin2,0, 0,1);
+    //col += vec4(mysin-mysin2 ,0 ,0, 1);
+    //col += vec4((mysin-mysin2)*col44.r ,col44.g , col44.b, 1);
+    col += vec4((mysin-mysin2)*col44.r ,(mysin-mysin2)*col44.g , (mysin-mysin2)*col44.b, 1);
+
+
+    a = vec2(0,0);
+    col = pulse(uv,col,a,col4);
+
+    col4 = vec4(1,0,0,1);
+    a = vec2(600,0);
+    col = pulse(uv,col,a,col4);
+
+    if( uv.x > -100 && uv.x < 100 ){
+        col.r = 0;
+        col.b = 1 ;//length(uv+vec2(2.9,0.9) )/200;
+        col.g = 0;
+    }
+
+    col += 0.1 / length(uv+vec2(.6,.8) ); //sun
+
+
+
+    //# BOX
+    a.x += sin(time*2)*100*3;
+    a.y += cos(time*2)*100*3;
+    //b.y += 150+time*100;
+    b = vec2(100,200);
+    col = block(uv,col,a,b,col2);
+
+    a = vec2(0,0);
+    b = vec2(100,200);
+    
+    a.x += cos(time*2)*100*3;
+    a.y += sin(-1*time*2)*100*3;
+    //b.y += 150+time*100;
+    //col = block(uv,col,a,b,col2);
+    col = circle(uv,col,a,100,col3);
+
+    a.x += cos(time*2+.1)*100*3;
+    a.y += sin(-1*time*2+.1)*100*3;
+    col4 = vec4(1,0,1,0);
+    col4 = vec4(1,0,1,0);
+    col = circle(uv,col,a,100,col4);
+    //col.r -= 0.1; 
+
+    a.x = cos(time*2-.3)*100*4;
+    a.y = sin(-1*time*2-.3)*100*2;
+    a.y *=-1;
+    col4 = vec4(1,1,0,0);
+    col = circle(uv,col,a,100,col4);
+    
+    float dist = distance(uv , vec2(10,10));
+    float circle = smoothstep((10-0.01),(10+0.01),1.0-dist );
+
+    //# Planet's
+    a.x = -1000;
+    z = 20; //count of star's
+    ang = 360;
+    speed = 50;
+    a = vec2(500,100);
+    col = ring(col,uv,a, z, ang, speed, 180, 180)*4;
+
+    z = 80; //count of star's
+    ang = 360;
+    speed = 50;
+    col = ring(col,uv,a, z, ang, -speed, 280, 280/2)*2;
+
+    
+    //# blue background
+    
+    fragColor = col ;//vec4(col,1);
+}
+
+void main2(){
+    vec2 uv = gl_FragCoord.xy ; //vUV.st ;
+    uv -= resolution.xy/2;
+    vec4 col = vec4(0,0,0,1);
+
+    if( uv.x > -100 && uv.x < 100 ){
+        col.b = 1 ;//length(vec2(2.9,0.9) )/200;
+    }
+    fragColor = col ;//vec4(col,1);
+}
+
+void main(){
+    main1();
+    //main2();
+}
+"""
+
+
+import memcache
+mc = memcache.Client(['127.0.0.1:11211'], debug=0)
+
+mc.set("some_key", "Some value")
+value = mc.get("some_key")
+
+mc.set("another_key", 3)
+mc.delete("another_key")
+
+import time
+import json
+data = {}
+start = time.time()
+delta = start
+
+def mc_loop():
+    ch = 141
+    send = 0
+    #cmd="stats items" 
+    x=mc.get("index")#cmd)
+    if x:
+        #print(x)
+        print()
+        for k,v in x.items():
+            #print(k,v)
+            x=mc.get(k)
+            print(k,v,ch,"=",x[ch-1])
+    time.sleep(.13)
+
+
+
+import math
+
+class Screen(mglw.WindowConfig):
+    window_size = 600, 300
+    window_size = 900, 506
+    window_size = 1024, 768
+    #window_size = 1900, 1070
+    #resource_dir = 'programms'
+
+    def __init__(self,**args):
+        super().__init__(**args)
+
+        self.quad = mglw.geometry.quad_fs()
+        print(dir(self.quad))
+        # load shader's as string
+        self.prog = self.ctx.program(vertex_shader=vertex_shader,
+                                      fragment_shader=fragment_shader)
+        # load shader's form file
+        print(dir(self.prog))
+        #self.prog = self.load_program(vertex_shader='vertex_shader.gls1',
+        #                              #fragment_shader='fragment_shader.gls1')
+
+        self.set_uniform('resolution',self.window_size)
+        self.t = time.time()
+        self.ANG = 0
+        self.ANG_DIR = 1
+
+    def set_uniform(self,u_name, u_value):
+        try:
+            self.prog[u_name] = u_value
+        except KeyError:
+            print(f'uniform: {u_name} - not used in shader')
+
+    def render(self,_time,frame_time):
+        self.set_uniform('resolution',self.window_size)
+        self.ctx.clear()
+        _t = _time % 600 # max cycle time 10minutes 
+        
+        #self.set_uniform('time',_t)
+        if self.ANG_DIR:
+            self.ANG += 0.01
+        else:
+            self.ANG -= 0.01
+
+        if self.ANG <= -2:
+            self.ANG_DIR = 1
+            self.ANG = -2
+        elif self.ANG >= 3.1415:
+            #self.ANG_DIR = 0
+            self.ANG = 0
+        a = self.ANG
+        #a = math.sin(a ) #math.radians(a) )
+        x = mc.get("2.0.0.13:2")
+        r = 1#2155
+        g = 1
+        b = 1#255
+        if x:
+            #a = 1+x[141-1]/255.*10
+            r = x[141-1]/255
+            g = x[142-1]/255
+            b = x[143-1]/255
+        self.set_uniform('time',a)
+        x = time.time()/10%1
+        #self.set_uniform('col2',[r,g,b,1])
+        self.set_uniform('col44',[r,g,b,1])
+        self.set_uniform('col2',[1,x,0,1])
+        self.quad.render(self.prog)
+
+        if self.t+1 < time.time():
+            print(_time,_t,self.ANG)
+            self.t = time.time()
+
+if __name__ == "__main__":
+    mglw.run_window_config(Screen)
+

+ 362 - 0
vpu/shader2_live.py

@@ -0,0 +1,362 @@
+
+
+import moderngl_window as mglw
+import moderngl
+#import moderngl.window
+import time
+#print(dir(moderngl))
+
+#export DISPLAY=:99.0
+#Xvfb :99 -screen 0 640x480x24 &
+#redirects screen output to invisibel framebuffer 
+# python3 main.py --window glfw --fullscreen --samples 16 --cursor false --size 800x600
+
+vertex_shader = """
+#version 400
+
+in vec3 in_position;
+
+void main(){
+    gl_Position = vec4(in_position, 0.9);
+}
+"""
+
+
+
+fragment_shader = """
+#version 400
+
+#define PI 3.1415926538
+out vec4 fragColor;
+uniform vec4 col2 = vec4(1);
+uniform vec4 col3 = vec4(1,0,0,0);
+uniform vec4 col44 = vec4(0,1,0,0);
+uniform vec2 resolution;
+uniform float time;
+
+vec4 ring(vec4 col,vec2 uv,vec2 aa, int z,float ang, float speed,float scaleX, float scaleY){
+    //z =1; //count of star's
+    //ang = 270;
+    float t = time;
+    for( float i=0.0; i < z; i++){
+
+        float a = 0;
+        a = ang/z * i * (PI/180)  ;
+	    //a += time*speed;
+        a += time/100*speed;
+
+        float dy = cos(a) ;
+        float dx = sin(a) ;
+
+	    dy = dy * scaleY; // *.4; // scale y
+	    dx = dx * scaleX; //*.9; // scale x
+        dy += aa.y;
+        dx += aa.x;
+        if( i== 0){
+            //col = vec2(dx,dy);
+        }else{
+            col += .30  / length(uv+vec2(dx,dy) );
+        }
+    }
+        col *=  sin(vec4(0.4,0.8,0.9,1)  * time) * .35  +0.25;
+    fragColor = col ;//vec4(col, 1.0);
+    return col;
+    //return fragColor;
+}
+
+
+vec4 circle(vec2 uv,vec4 col,vec2 a, float r, vec4 col2){
+    if( distance( uv-a, vec2(0.5,0.5)) < r/2.0){
+            col = col2;
+    }
+    return col;
+}
+
+vec4 block(vec2 uv,vec4 col, vec2 a, vec2 b, vec4 col2){
+    float r1 = 0;
+    float boarder = 5;
+    float x1 = uv.x-a.x;
+    float x2 = uv.x-a.x+b.x;
+    if( uv.x > a.x-b.x/2 && uv.x < a.x+b.x/2 ){
+       
+        float y1 = uv.y-a.y;
+        float y2 = uv.y-a.y+b.y;
+
+        float r2 = 0;
+        if( uv.y > a.y-b.y/2 && uv.y < a.y+b.y/2 ){
+            col = col2;
+            //col.r = 1    ; //time ;//vec4(0,time, 0,1);
+            //col.g = 0.0  ;//time ;//vec4(0,time, 0,1);
+            //col.b = 1.1  ;//time ;//vec4(0,time, 0,1);
+            //col.a = 1.0;
+            //col *= 0.2+(r1*r2) ;//(r1 * r2);
+            //col[3] += time*10 ;//vec4(0,time, 0,1);
+            if( r2< 1){
+                r2 += 0.2;
+            }
+        }
+        if( r1 < 1){
+            r1 += 0.2;
+        }
+    }
+    if( uv.y == a.y ){ //|| uv.x == a.x ){
+        col.r = 1    ; //time ;//vec4(0,time, 0,1);
+        col.g = 1  ;//time ;//vec4(0,time, 0,1);
+        col.b = 0  ;//time ;//vec4(0,time, 0,1);
+        col.a = 1.0;
+    }
+    return col;
+}
+vec4 block1(vec2 uv,vec4 col, vec2 a, vec2 b){
+    if( uv.x > a.x && uv.x < a.x+b.x ){
+        if( uv.y > a.y && uv.y < a.y+b.y ){
+            col.r = 0 ;//time ;//vec4(0,time, 0,1);
+            col.g = 0.5 ;//time ;//vec4(0,time, 0,1);
+            col.b = 0.9 ;//time ;//vec4(0,time, 0,1);
+            col.a = 1.0;
+            //col[3] += time*10 ;//vec4(0,time, 0,1);
+        }
+    }
+    return col;
+}
+vec4 pulse(vec2 uv,vec4 col, vec2 a,vec4 col4){
+    float tt = sin(time*10)*1000;
+    col = circle(uv,col,a,tt,col4);
+    col4 = vec4(0,0,0,1);
+    col = circle(uv,col,a,tt-100,col4);
+
+    tt = cos(time)*1000;
+    col4 = vec4(1,0,0,1);
+    col = circle(uv,col,a,tt-300,col4);
+    col4 = vec4(0,0,0,1);
+    col = circle(uv,col,a,tt-310,col4);
+    return col;
+}
+
+void main1(){;
+    vec2 uv = gl_FragCoord.xy ; //vUV.st ;
+    //vec2 uv = (gl_FragCoord.xy - resolution.xy/2) / resolution.y;
+    uv -= resolution.xy/2;
+    float r = 0.17;
+
+    vec2 a = vec2(200,0);
+    vec2 b = vec2(50,50);
+
+    
+    int z = 10;
+    float ang = 360;
+    float speed = .9;
+    uv.x = uv.x * 2 -1;
+    uv.y = uv.y * 2 -1;
+    uv += vec2(0,1);
+    uv.x += 1;
+    vec4 col = vec4(0,0,0,1);
+    vec4 col4 = vec4(0,1,0,1);
+    
+    col = col44; 
+
+    //# background animation
+    float mysin = sin(uv.x/3.14/20*time);
+    float mysin2 = sin(uv.y/3.14/20*time*4);
+    float mycos = cos(uv.x/3.14/10*time);
+    //col += vec4(mysin2,0, 0,1);
+    //col += vec4(mysin-mysin2 ,0 ,0, 1);
+    //col += vec4((mysin-mysin2)*col44.r ,col44.g , col44.b, 1);
+    //col += vec4((mysin-mysin2)*col44.r ,(mysin-mysin2)*col44.g , (mysin-mysin2)*col44.b, 1);
+
+
+    a = vec2(0,0);
+    col = pulse(uv,col,a,col4);
+
+    col4 = vec4(1,0,0,1);
+    a = vec2(600,0);
+    col = pulse(uv,col,a,col4);
+
+    if( uv.x > -100 && uv.x < 100 ){
+        col.r = 0;
+        col.b = 1 ;//length(uv+vec2(2.9,0.9) )/200;
+        col.g = 0;
+    }
+
+    col += 0.1 / length(uv+vec2(.6,.8) ); //sun
+
+
+
+    //# BOX
+    a.x += sin(time*2)*100*3;
+    a.y += cos(time*2)*100*3;
+    //b.y += 150+time*100;
+    b = vec2(100,200);
+    col = block(uv,col,a,b,col2);
+
+    a = vec2(0,0);
+    b = vec2(100,200);
+    
+    a.x += cos(time*2)*100*3;
+    a.y += sin(-1*time*2)*100*3;
+    //b.y += 150+time*100;
+    //col = block(uv,col,a,b,col2);
+    col = circle(uv,col,a,100,col3);
+
+    a.x += cos(time*2+.1)*100*3;
+    a.y += sin(-1*time*2+.1)*100*3;
+    col4 = vec4(1,0,1,0);
+    col4 = vec4(1,0,1,0);
+    col = circle(uv,col,a,100,col4);
+    //col.r -= 0.1; 
+
+    a.x = cos(time*2-.3)*100*4;
+    a.y = sin(-1*time*2-.3)*100*2;
+    a.y *=-1;
+    col4 = vec4(1,1,0,0);
+    col = circle(uv,col,a,100,col4);
+    
+    float dist = distance(uv , vec2(10,10));
+    float circle = smoothstep((10-0.01),(10+0.01),1.0-dist );
+
+    //# Planet's
+    a.x = -1000;
+    z = 20; //count of star's
+    ang = 360;
+    speed = 50;
+    a = vec2(500,100);
+    //col = ring(col,uv,a, z, ang, speed, 180, 180)*4;
+
+    z = 80; //count of star's
+    ang = 360;
+    speed = 50;
+    //col = ring(col,uv,a, z, ang, -speed, 280, 280/2)*2;
+
+    
+    //# blue background
+    
+    fragColor = col ;//vec4(col,1);
+}
+
+void main2(){
+    vec2 uv = gl_FragCoord.xy ; //vUV.st ;
+    uv -= resolution.xy/2;
+    vec4 col = vec4(0,0,0,1);
+
+    if( uv.x > -100 && uv.x < 100 ){
+        col.b = 1 ;//length(vec2(2.9,0.9) )/200;
+    }
+    fragColor = col ;//vec4(col,1);
+}
+
+void main(){
+    main1();
+    //main2();
+}
+"""
+
+
+import memcache
+mc = memcache.Client(['127.0.0.1:11211'], debug=0)
+
+mc.set("some_key", "Some value")
+value = mc.get("some_key")
+
+mc.set("another_key", 3)
+mc.delete("another_key")
+
+import time
+import json
+data = {}
+start = time.time()
+delta = start
+
+def mc_loop():
+    ch = 141
+    send = 0
+    #cmd="stats items" 
+    x=mc.get("index")#cmd)
+    if x:
+        #print(x)
+        print()
+        for k,v in x.items():
+            #print(k,v)
+            x=mc.get(k)
+            print(k,v,ch,"=",x[ch-1])
+    time.sleep(.13)
+
+
+
+import math
+
+class Screen(mglw.WindowConfig):
+    window_size = 600, 300
+    window_size = 900, 506
+    window_size = 1024, 768
+    #window_size = 1900, 1070
+    #resource_dir = 'programms'
+
+    def __init__(self,**args):
+        super().__init__(**args)
+
+        self.quad = mglw.geometry.quad_fs()
+        print(dir(self.quad))
+        # load shader's as string
+        self.prog = self.ctx.program(vertex_shader=vertex_shader,
+                                      fragment_shader=fragment_shader)
+        # load shader's form file
+        print(dir(self.prog))
+        #self.prog = self.load_program(vertex_shader='vertex_shader.gls1',
+        #                              #fragment_shader='fragment_shader.gls1')
+
+        self.set_uniform('resolution',self.window_size)
+        self.t = time.time()
+        self.ANG = 0
+        self.ANG_DIR = 1
+
+    def set_uniform(self,u_name, u_value):
+        try:
+            self.prog[u_name] = u_value
+        except KeyError:
+            print(f'uniform: {u_name} - not used in shader')
+
+    def render(self,_time,frame_time):
+        self.set_uniform('resolution',self.window_size)
+        self.ctx.clear()
+        _t = _time % 600 # max cycle time 10minutes 
+        
+        #self.set_uniform('time',_t)
+        if self.ANG_DIR:
+            self.ANG += 0.01
+        else:
+            self.ANG -= 0.01
+
+        if self.ANG <= -2:
+            self.ANG_DIR = 1
+            self.ANG = -2
+        elif self.ANG >= 3.1415:
+            #self.ANG_DIR = 0
+            self.ANG = 0
+        a = self.ANG
+        #a = math.sin(a ) #math.radians(a) )
+        x = mc.get("2.0.0.13:2")
+        if not x:
+            x = mc.get("10.10.10.13:2")
+
+        r = 1#2155
+        g = 0
+        b = 1#255
+        if x:
+            #a = 1+x[141-1]/255.*10
+            r = x[141-1]/255
+            g = x[142-1]/255
+            b = x[143-1]/255
+        self.set_uniform('time',a)
+        x = time.time()/10%1
+        #self.set_uniform('col2',[r,g,b,1])
+        self.set_uniform('col44',[r,g,b,1])
+        self.set_uniform('col2',[1,x,0,1])
+        self.quad.render(self.prog)
+
+        if self.t+1 < time.time():
+            print("_time",round(_time,2),"_t",round(_t,2),"self.ANG",round(self.ANG,2))
+            self.t = time.time()
+
+if __name__ == "__main__":
+    mglw.run_window_config(Screen)
+

+ 0 - 357
vpu/shader_live.py

@@ -1,357 +0,0 @@
-
-
-import moderngl_window as mglw
-import moderngl
-#import moderngl.window
-import time
-#print(dir(moderngl))
-
-#export DISPLAY=:99.0
-#Xvfb :99 -screen 0 640x480x24 &
-#redirects screen output to invisibel framebuffer 
-# python3 main.py --window glfw --fullscreen --samples 16 --cursor false --size 800x600
-
-vertex_shader = """
-#version 400
-
-in vec3 in_position;
-
-void main(){
-    gl_Position = vec4(in_position, 0.9);
-}
-"""
-
-
-
-fragment_shader = """
-#version 400
-
-#define PI 3.1415926538
-out vec4 fragColor;
-uniform vec4 col2 = vec4(1);
-uniform vec4 col3 = vec4(1,0,0,0);
-uniform vec4 col44 = vec4(0,1,0,0);
-uniform vec2 resolution;
-uniform float time;
-
-vec4 ring(vec4 col,vec2 uv,vec2 aa, int z,float ang, float speed,float scaleX, float scaleY){
-    //z =1; //count of star's
-    //ang = 270;
-    float t = time;
-    for( float i=0.0; i < z; i++){
-
-        float a = 0;
-        a = ang/z * i * (PI/180)  ;
-	    //a += time*speed;
-        a += time/100*speed;
-
-        float dy = cos(a) ;
-        float dx = sin(a) ;
-
-	    dy = dy * scaleY; // *.4; // scale y
-	    dx = dx * scaleX; //*.9; // scale x
-        dy += aa.y;
-        dx += aa.x;
-        if( i== 0){
-            //col = vec2(dx,dy);
-        }else{
-            col += .30  / length(uv+vec2(dx,dy) );
-        }
-    }
-        col *=  sin(vec4(0.4,0.8,0.9,1)  * time) * .35  +0.25;
-    fragColor = col ;//vec4(col, 1.0);
-    return col;
-    //return fragColor;
-}
-
-
-vec4 circle(vec2 uv,vec4 col,vec2 a, float r, vec4 col2){
-    if( distance( uv-a, vec2(0.5,0.5)) < r/2.0){
-            col = col2;
-    }
-    return col;
-}
-
-vec4 block(vec2 uv,vec4 col, vec2 a, vec2 b, vec4 col2){
-    float r1 = 0;
-    float boarder = 5;
-    float x1 = uv.x-a.x;
-    float x2 = uv.x-a.x+b.x;
-    if( uv.x > a.x-b.x/2 && uv.x < a.x+b.x/2 ){
-       
-        float y1 = uv.y-a.y;
-        float y2 = uv.y-a.y+b.y;
-
-        float r2 = 0;
-        if( uv.y > a.y-b.y/2 && uv.y < a.y+b.y/2 ){
-            col = col2;
-            //col.r = 1    ; //time ;//vec4(0,time, 0,1);
-            //col.g = 0.0  ;//time ;//vec4(0,time, 0,1);
-            //col.b = 1.1  ;//time ;//vec4(0,time, 0,1);
-            //col.a = 1.0;
-            //col *= 0.2+(r1*r2) ;//(r1 * r2);
-            //col[3] += time*10 ;//vec4(0,time, 0,1);
-            if( r2< 1){
-                r2 += 0.2;
-            }
-        }
-        if( r1 < 1){
-            r1 += 0.2;
-        }
-    }
-    if( uv.y == a.y ){ //|| uv.x == a.x ){
-        col.r = 1    ; //time ;//vec4(0,time, 0,1);
-        col.g = 1  ;//time ;//vec4(0,time, 0,1);
-        col.b = 0  ;//time ;//vec4(0,time, 0,1);
-        col.a = 1.0;
-    }
-    return col;
-}
-vec4 block1(vec2 uv,vec4 col, vec2 a, vec2 b){
-    if( uv.x > a.x && uv.x < a.x+b.x ){
-        if( uv.y > a.y && uv.y < a.y+b.y ){
-            col.r = 0 ;//time ;//vec4(0,time, 0,1);
-            col.g = 0.5 ;//time ;//vec4(0,time, 0,1);
-            col.b = 0.9 ;//time ;//vec4(0,time, 0,1);
-            col.a = 1.0;
-            //col[3] += time*10 ;//vec4(0,time, 0,1);
-        }
-    }
-    return col;
-}
-vec4 pulse(vec2 uv,vec4 col, vec2 a,vec4 col4){
-    float tt = sin(time*10)*1000;
-    col = circle(uv,col,a,tt,col4);
-    col4 = vec4(0,0,0,1);
-    col = circle(uv,col,a,tt-100,col4);
-
-    tt = cos(time)*1000;
-    col4 = vec4(1,0,0,1);
-    col = circle(uv,col,a,tt-300,col4);
-    col4 = vec4(0,0,0,1);
-    col = circle(uv,col,a,tt-310,col4);
-    return col;
-}
-
-void main1(){;
-    vec2 uv = gl_FragCoord.xy ; //vUV.st ;
-    //vec2 uv = (gl_FragCoord.xy - resolution.xy/2) / resolution.y;
-    uv -= resolution.xy/2;
-    float r = 0.17;
-
-    vec2 a = vec2(200,0);
-    vec2 b = vec2(50,50);
-
-    
-    int z = 10;
-    float ang = 360;
-    float speed = .9;
-    uv.x = uv.x * 2 -1;
-    uv.y = uv.y * 2 -1;
-    uv += vec2(0,1);
-    uv.x += 1;
-    vec4 col = vec4(0,0,0,1);
-    vec4 col4 = vec4(0,1,0,1);
-
-    //# background animation
-    float mysin = sin(uv.x/3.14/20*time);
-    float mysin2 = sin(uv.y/3.14/20*time*4);
-    float mycos = cos(uv.x/3.14/10*time);
-    //col += vec4(mysin2,0, 0,1);
-    //col += vec4(mysin-mysin2 ,0 ,0, 1);
-    //col += vec4((mysin-mysin2)*col44.r ,col44.g , col44.b, 1);
-    col += vec4((mysin-mysin2)*col44.r ,(mysin-mysin2)*col44.g , (mysin-mysin2)*col44.b, 1);
-
-
-    a = vec2(0,0);
-    col = pulse(uv,col,a,col4);
-
-    col4 = vec4(1,0,0,1);
-    a = vec2(600,0);
-    col = pulse(uv,col,a,col4);
-
-    if( uv.x > -100 && uv.x < 100 ){
-        col.r = 0;
-        col.b = 1 ;//length(uv+vec2(2.9,0.9) )/200;
-        col.g = 0;
-    }
-
-    col += 0.1 / length(uv+vec2(.6,.8) ); //sun
-
-
-
-    //# BOX
-    a.x += sin(time*2)*100*3;
-    a.y += cos(time*2)*100*3;
-    //b.y += 150+time*100;
-    b = vec2(100,200);
-    col = block(uv,col,a,b,col2);
-
-    a = vec2(0,0);
-    b = vec2(100,200);
-    
-    a.x += cos(time*2)*100*3;
-    a.y += sin(-1*time*2)*100*3;
-    //b.y += 150+time*100;
-    //col = block(uv,col,a,b,col2);
-    col = circle(uv,col,a,100,col3);
-
-    a.x += cos(time*2+.1)*100*3;
-    a.y += sin(-1*time*2+.1)*100*3;
-    col4 = vec4(1,0,1,0);
-    col4 = vec4(1,0,1,0);
-    col = circle(uv,col,a,100,col4);
-    //col.r -= 0.1; 
-
-    a.x = cos(time*2-.3)*100*4;
-    a.y = sin(-1*time*2-.3)*100*2;
-    a.y *=-1;
-    col4 = vec4(1,1,0,0);
-    col = circle(uv,col,a,100,col4);
-    
-    float dist = distance(uv , vec2(10,10));
-    float circle = smoothstep((10-0.01),(10+0.01),1.0-dist );
-
-    //# Planet's
-    a.x = -1000;
-    z = 20; //count of star's
-    ang = 360;
-    speed = 50;
-    a = vec2(500,100);
-    col = ring(col,uv,a, z, ang, speed, 180, 180)*4;
-
-    z = 80; //count of star's
-    ang = 360;
-    speed = 50;
-    col = ring(col,uv,a, z, ang, -speed, 280, 280/2)*2;
-
-    
-    //# blue background
-    
-    fragColor = col ;//vec4(col,1);
-}
-
-void main2(){
-    vec2 uv = gl_FragCoord.xy ; //vUV.st ;
-    uv -= resolution.xy/2;
-    vec4 col = vec4(0,0,0,1);
-
-    if( uv.x > -100 && uv.x < 100 ){
-        col.b = 1 ;//length(vec2(2.9,0.9) )/200;
-    }
-    fragColor = col ;//vec4(col,1);
-}
-
-void main(){
-    main1();
-    //main2();
-}
-"""
-
-
-import memcache
-mc = memcache.Client(['127.0.0.1:11211'], debug=0)
-
-mc.set("some_key", "Some value")
-value = mc.get("some_key")
-
-mc.set("another_key", 3)
-mc.delete("another_key")
-
-import time
-import json
-data = {}
-start = time.time()
-delta = start
-
-def mc_loop():
-    ch = 141
-    send = 0
-    #cmd="stats items" 
-    x=mc.get("index")#cmd)
-    if x:
-        #print(x)
-        print()
-        for k,v in x.items():
-            #print(k,v)
-            x=mc.get(k)
-            print(k,v,ch,"=",x[ch-1])
-    time.sleep(.13)
-
-
-
-import math
-
-class Screen(mglw.WindowConfig):
-    window_size = 600, 300
-    window_size = 900, 506
-    window_size = 1024, 768
-    #window_size = 1900, 1070
-    #resource_dir = 'programms'
-
-    def __init__(self,**args):
-        super().__init__(**args)
-
-        self.quad = mglw.geometry.quad_fs()
-        print(dir(self.quad))
-        # load shader's as string
-        self.prog = self.ctx.program(vertex_shader=vertex_shader,
-                                      fragment_shader=fragment_shader)
-        # load shader's form file
-        print(dir(self.prog))
-        #self.prog = self.load_program(vertex_shader='vertex_shader.gls1',
-        #                              #fragment_shader='fragment_shader.gls1')
-
-        self.set_uniform('resolution',self.window_size)
-        self.t = time.time()
-        self.ANG = 0
-        self.ANG_DIR = 1
-
-    def set_uniform(self,u_name, u_value):
-        try:
-            self.prog[u_name] = u_value
-        except KeyError:
-            print(f'uniform: {u_name} - not used in shader')
-
-    def render(self,_time,frame_time):
-        self.set_uniform('resolution',self.window_size)
-        self.ctx.clear()
-        _t = _time % 600 # max cycle time 10minutes 
-        
-        #self.set_uniform('time',_t)
-        if self.ANG_DIR:
-            self.ANG += 0.01
-        else:
-            self.ANG -= 0.01
-
-        if self.ANG <= -2:
-            self.ANG_DIR = 1
-            self.ANG = -2
-        elif self.ANG >= 3.1415:
-            #self.ANG_DIR = 0
-            self.ANG = 0
-        a = self.ANG
-        #a = math.sin(a ) #math.radians(a) )
-        x = mc.get("2.0.0.13:2")
-        r = 1#2155
-        g = 1
-        b = 1#255
-        if x:
-            #a = 1+x[141-1]/255.*10
-            r = x[141-1]/255
-            g = x[142-1]/255
-            b = x[143-1]/255
-        self.set_uniform('time',a)
-        x = time.time()/10%1
-        #self.set_uniform('col2',[r,g,b,1])
-        self.set_uniform('col44',[r,g,b,1])
-        self.set_uniform('col2',[1,x,0,1])
-        self.quad.render(self.prog)
-
-        if self.t+1 < time.time():
-            print(_time,_t,self.ANG)
-            self.t = time.time()
-
-if __name__ == "__main__":
-    mglw.run_window_config(Screen)
-

+ 1 - 0
vpu/shader_live.py

@@ -0,0 +1 @@
+shader2_live.py