// Copyright 2011 Riccardo Monica

#version 120

varying float vmatshininess;
varying vec3 vmatspecular;

varying vec3 veyeposition;
varying vec3 vnormal;

uniform sampler3D random3d;

uniform int time;

varying vec3 oPosition;

vec4 ApplyLight(in vec4 oColor, in vec3 relativepos, in vec3 normal,in vec3 matspecular,in float matshininess);

void main()
  {
  float vartime = - float(time) / 10;

  float vartime1 = mod(vartime,20.0);
  float vartime2 = mod(vartime,10.0);
  float vartime3 = mod(vartime,5.0);

  float rdscale = texture3D(random3d,oPosition * 0.02).w * (oPosition.y + 5.0) * 0.3;

  vec3 noisevec;
  noisevec[0] = texture3D(random3d,(oPosition * rdscale + vec3(0.0,vartime1,0.0)) * 0.05).x;
  noisevec[1] = texture3D(random3d,(oPosition * rdscale + vec3(0.0,vartime2,0.0)) * 0.1).y;
  noisevec[2] = texture3D(random3d,(oPosition * rdscale + vec3(0.0,vartime3,0.0)) * 0.2).z;
  
  float r = noisevec[0] * 0.7 + noisevec[1] * 0.2 + noisevec[2] * 0.1;

  vec4 color = mix(vec4(0.8,0.1,0.0,1.0),vec4(0.9,0.6,0.0,1.0),r);
  
  gl_FragColor = ApplyLight(color,veyeposition,normalize(vnormal),vec3(0.0,0.0,0.0),1.0);
  }
