!!! SHADER FILES MUST BE SAVED AS PLAIN ASCII TEXT !!!

0. Each shader should explicitly declare at least 4 uniforms:

-- uniform vec4  iDate: year/month/day/time in seconds as floats (year/month/day not implemented for the time being)
-- uniform vec3  iMouse: mouse coords as floats are current on-screen x and y if LMB down, and z = 1.0f if LMB down; otherwise all 0.0f
-- uniform vec2  iResolution: current viewport x and y sizes in pixels as floats
-- uniform float iTime: (in seconds w/ decimal fractions) system time, or time since session start, or time since app start.

Those uniforms may be used or not used in the shader code as needed.

1. Additional uniforms as needed for a specific shader:

-- uniform sampler2D filename_ext|mip_filename_ext|nomip_filename_ext: for as many textures as the shader needs.
   mip_ prefix (optional) means the respective texture should be mipmapped; nomip_ means no mipmapping is allowed.
   Prefixes, if any, are removed automatically, and underscores, replaced with dots to load the respective textures.
   Consequently, all occurrences of iChannel0 to iChannel3 sampler names throughout the code should be replaced with
   those new sampler names.

2. Shader resources (textures, etc.) should be stored in the same folder as the shader.

3. Shaders should contain attribution blurbs wherever available to respect the original author's copyright.

4. The mainImage(...) sub should be re-declared as void main(void) with arguments omitted.

5. All fragCoord and fragColor built-in variables should be renamed gl_FragCoord and gl_FragColor, respectively, throughout the shader code
