123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- 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)
|