|
@@ -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)
|
|
|
+
|