Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //"High level" GLSL pseudolanguage framework
- uniform float time;
- uniform vec2 resolution;
- uniform sampler2D texture0;
- uniform sampler2D texture1;
- uniform sampler2D texture2;
- in VertexData
- {
- vec4 v_position;
- vec3 v_normal;
- vec2 v_texcoord;
- } inData;
- out vec4 fragColor;
- vec2 pow(vec2 q,float gamma){
- q.r = pow(q.r,gamma);
- q.g = pow(q.g,gamma);
- return q;
- }
- vec3 pow(vec3 q,float gamma){
- q.r = pow(q.r,gamma);
- q.g = pow(q.g,gamma);
- q.b = pow(q.b,gamma);
- return q;
- }
- #define canvas void main(void){ vec4 col = vec4(0.,0.,0.,1.); vec4 layers[10]; float t = time; vec2 uv = -1.+2.*inData.v_texcoord;uv.x*=resolution.x/resolution.y;
- #define end fragColor = col;}
- #define background(r,g,b,a) col = vec4(r,g,b,a);
- #define reset_uv uv = -1.+2.*inData.v_texcoord; uv.x*=resolution.x/resolution.y;
- #define reset_t t = 0.;
- #define move(x,y) uv+=vec2(x,y);
- #define scale(x,y) uv/=vec2(x,y);
- #define rotate(a) uv*=mat2(cos(a),sin(a),-sin(a),cos(a));
- #define move_t(a) t+=a;
- #define scale_t(a) t*=a;
- #define set(a,b) a=b;
- #define save_layer(i) layers[i]=col;
- #define load_layer(i) col=layers[i];
- #define tex(sample,alpha) col=vec4(texture(sample,uv).rgb,alpha);
- #define tex_tileable(sample,alpha) col=vec4(texture(sample,mix(fract(uv),1.-fract(uv),mod(floor(uv),2.))+floor(uv)).rgb,alpha);
- #define color(r,g,b,a) vec4(r,g,b,a)
- #define layers(i) layers[i]
- #define lin_gradient clamp(uv.x,0.,1.)
- #define rad_gradient 1.-clamp(length(uv),0.,1.)
- #define invert col = 1.-col;
- #define mixing(a,b,x) col = mix(a,b,x);
- #define tint(c) col.rgb*=c;
- #define tint_alpha(alpha) col.a*=alpha;
- #define power(gamma) col.rgb = pow(col.rgb,gamma);
- #define power_alpha(gamma) col.a = pow(col.a,gamma);
- #define repeat uv=fract(uv+0.5)-0.5;
- #define repeat_index uv=floor(uv+0.5);
- //Blend modes
- #define blend(src,dst) col.rgb = layers[dst].rgb*(1.-layers[src].a)+layers[src].rgb*layers[src].a; col.a =layers[dst].a*(1.-layers[src].a)+layers[src].a;
- #define blend_add(src,dst) col.rgb = layers[dst].rgb + layers[src].rgb*layers[src].a; col.a = layers[dst].a;
- #define blend_multiply(src,dst) col=layers[src]*layers[dst];
- #define blend_darken(src,dst) col =min(layers[src],layers[dst]);
- #define blend_lighten(src,dst) col =max(layers[src],layers[dst]);
- //Show background
- #define show_background vec4 bg = vec4(1.,1.,1.,1.); uv*=12.; bg.rgb *= (0.2+0.2*step(fract(0.5*uv.x+0.5*floor(uv.y)),0.5))*(1.-length(0.03*uv)); col = mix(bg,col,col.a);
- canvas
- rotate(0.1*t)
- scale(0.1,0.1)
- repeat_index
- background(0.5*sin(0.2*length(uv)+0.1*uv.x+t),0.,0.,0.2)
- save_layer(1)
- reset_uv
- rotate(0.1*t)
- scale(0.1,0.1)
- repeat
- scale(0.5*layers(1).x,0.5*layers(1).x)
- background(1.,0.2,0.,0.1)
- tint(rad_gradient)
- tint(10.)
- power(2.)
- reset_uv
- show_background
- end
Advertisement
Add Comment
Please, Sign In to add comment