uniform sampler2D uTexGarbage; in vec4 aColour; in vec2 aUv; in vec3 aNorm; in vec3 aCo; in vec3 aWorldCo; #include "common_world.glsl" #include "motion_vectors_fs.glsl" #include "light_clearskies.glsl" void main() { compute_motion_vectors(); world_info world; scene_state( g_time, world ); vec3 rd = normalize(aNorm); float fmove = g_time * 0.004; vec2 cloudplane = (rd.xz / (rd.y*sign(rd.y))) * 0.025; vec4 clouds1 = texture( uTexGarbage, cloudplane + vec2(0.1,0.4)*fmove*2.0 ); vec4 clouds2 = texture( uTexGarbage, cloudplane*2.0 + vec2(0.3,0.1)*fmove ); float cloud_d = max(clouds1.b*clouds2.r -0.2 - clouds2.g*0.4,0.0); float cloud_e = pow(cloud_d,1.5)*pow(abs(rd.y),0.3)*2.0; oColour = vec4( scene_sky( -rd, world ) ,1.0); vec3 cloud_colour = mix( mix(NIGHTSKY_COLOUR,vec3(1.0),world.day_phase), SUNSET_COLOUR, world.sunset_phase ); oColour.rgb = mix( oColour.rgb, cloud_colour, cloud_e ); }