#version 330 core out vec4 color_out; #ifdef GL_ES precision mediump float; #endif // #extension GL_OES_standard_derivatives : enable uniform float time; uniform vec2 mouse; uniform vec2 resolution; //---------------------------------------------------------- // metaballss by pailhead in 2014-Jun-2 // original: https://www.shadertoy.com/view/4sXXWM // small modifications & antialiasing by I.G.P. 2016-09-24 // This must be nice in 3d too... //---------------------------------------------------------- // http://glslsandbox.com/e#35480.0 #define COUNT 55 #define SPEED 0.1 #define SIZE 44. //---------------------------------------------------------- float rn(float x) { return fract(sin(x*.4686)*3718.927); } //---------------------------------------------------------- void mainImage( out vec4 fragColor, in vec2 fragCoord ) { float ts = time * SPEED; // time scaled vec3 COLOR_MASKS[16]; // blob colors COLOR_MASKS[0] = vec3(1.00, 0.50, 0.00 ); COLOR_MASKS[1] = vec3(0.53, 0.85, 0.25 ); COLOR_MASKS[2] = vec3(1.00, 0.56, 0.15 ); COLOR_MASKS[3] = vec3(1.00, 0.00, 0.30 ); COLOR_MASKS[4] = vec3(0.05, 0.55, 0.30 ); COLOR_MASKS[5] = vec3(0.50, 1.00, 0.40 ); COLOR_MASKS[6] = vec3(1.00, 0.15, 1.00 ); COLOR_MASKS[7] = vec3(0.20, 0.30, 0.50 ); COLOR_MASKS[8] = vec3(0.35, 1.00, 0.50 ); COLOR_MASKS[9] = vec3(0.70, 0.60, 0.50 ); COLOR_MASKS[10]= vec3(0.34, 1.00, 0.50 ); COLOR_MASKS[11]= vec3(0.20, 0.50, 0.50 ); COLOR_MASKS[12]= vec3(0.60, 0.10, 0.65 ); COLOR_MASKS[13]= vec3(0.40, 0.40, 0.85 ); COLOR_MASKS[14]= vec3(1.00, 0.30, 0.35 ); COLOR_MASKS[15]= vec3(1.00, 0.00, 0.50 ); //screen space float aspect = resolution.x / resolution.y; vec2 fragPN = (fragCoord / resolution.xy) * 2.0 - 1.0; //-1 .. 1 fragPN.x *= aspect; float vH = 10.0; // camera disance - fov vec3 vD = normalize(vec3(-fragPN,vH)); // view dir //vec3 lD = normalize(vec3(cos(time),.750,sin(time))); // light dir vec3 lD = normalize(vec3(mouse.xy-vec2(0.5), 0.5)); // light dir vec3 ld = normalize(vec3(.7, .750,2.)); vec2 mbPos[COUNT]; // blob position vec3 nn = vec3(.0); vec3 cc = vec3(.0); for(int i=0; i