struct a2v
	{
		float4 pos: POSITION;
	};
	struct v2f
	{
#ifndef FRAGMENT_SHADER
		float4 pos: POSITION;
#endif
		float3 vpos: TEXCOORD0;
	};

#ifdef VERTEX_SHADER
	float4x4  m_modelviewprojection;
	v2f main (a2v inp)
	{
		v2f outp;
		outp.pos = mul(m_modelviewprojection, inp.pos);
		outp.vpos = inp.pos;
		return outp;
	}
#endif

#ifdef FRAGMENT_SHADER
	float e_time;
	float3 e_eyepos;

	sampler s_diffuse; /*diffuse*/
	sampler s_fullbright; /*normal*/
	float4 main (v2f inp) : COLOR0
	{
		float2 tccoord;

		float3 dir = inp.vpos - e_eyepos;

		dir.z *= 3.0;
		dir.xy /= 0.5*length(dir);

		tccoord = (dir.xy + e_time*0.03125);
		float4 solid = tex2D(s_diffuse, tccoord);

		tccoord = (dir.xy + e_time*0.0625);
		float4 clouds = tex2D(s_fullbright, tccoord);

		return float4((solid.rgb*(1.0-clouds.a)) + (clouds.a*clouds.rgb), 1);
	}
#endif