float t(float minv, float maxv, float m) { float range = (maxv - minv); return (minv + range/2) + (range/2) * sin(iGlobalTime * m); } float pulse(float freq) { return 0.5 + 0.25 * sin(iGlobalTime * freq); } float getProceduralColors(inout vec3 diffuse, inout vec3 specular, inout float shininess) { diffuse = pulse(20.0) * vec3(1.0, 0.5, 0.8); diffuse = vec3(t(.5, 1, 5), t(.5, 1, 3), t(.5, 1, 2)); //float size = 0.5 + (1 + sin(iGlobalTime * 2)) * 0.14; float size = 0.3; if (abs(_modelNormal.y) > size) { discard; } return 1.0; }