#line 2

//////////////////////////////////
//
//   Available inputs
// 
// Uniforms: constant across the whole surface
// 
// float iGlobalTime;
// vec3 iWorldScale;
//
// Varyings: Per-pixel attributes that change for every pixel
// 
// vec3 _normal
// vec4 _position
// vec2 _texCoord0 // reserved for future use, currently always vec2(0)
// vec3 _color // reserved for future user, currently always vec3(1)
// 
/////////////////////////////////

//////////////////////////////////
//
//   Available functions
//
// All GLSL functions from GLSL version 4.10 and usable in fragment shaders
// See Page 8 of this document:  https://www.khronos.org/files/opengl41-quick-reference-card.pdf
//
// Additionally the snoise functions defined in WebGL-noise are available 
// See https://github.com/ashima/webgl-noise/tree/master/src
// 
// float snoise(vec2)
// float snoise(vec3)
// float snoise(vec4)
//

// Fade from black to white and back again
vec4 getProceduralColor() {
    // set intensity to a sine wave with a frequency of 1 Hz
    float intensity = sin(iGlobalTime * 3.14159 * 2.0);

    // Raise the wave to move between 0 and 2
    intensity += 1.0;
    
    // Reducce the amplitude to between 0 and 1
    intensity /= 2.0;
    
    // Set the base color to blue
    vec3 color = vec3(0.0, 0.0, 1.0);
    
    // Multiply by the intensity
    color *= intensity;

    // return the color as a vec 4
    return vec4(color, 1.0); 
}