i hope your hapy
[carveJwlIkooP6JGAAIwe30JlM.git] / shaders / scene_route.h
index bd67ea51e8f6a07f6479af7c94f8388931715a05..3f41ecab6ebd8deb0b6805c4f07bcb65bc9115a6 100644 (file)
@@ -99,6 +99,7 @@ static struct vg_shader _shader_scene_route = {
 "\n"
 "   float g_water_fog;\n"
 "   float g_time;\n"
+"   float g_realtime;\n"
 "   float g_shadow_length;\n"
 "   float g_shadow_spread;\n"
 "\n"
@@ -195,7 +196,7 @@ static struct vg_shader _shader_scene_route = {
 "   return ambient + (light_sun + sky_reflection) * shadow;\n"
 "}\n"
 "\n"
-"#line     41        0 \n"
+"#line     42        0 \n"
 "\n"
 "float world_depth_sample( vec3 pos )\n"
 "{\n"
@@ -280,13 +281,13 @@ static struct vg_shader _shader_scene_route = {
 "\n"
 "   float falloff = max( 0.0, 1.0-(dist2*light_co.w) );\n"
 "\n"
-"   if( light_dir.w < 0.999999 )\n"
-"   {\n"
+"   if( light_dir.w < 0.999999 ){\n"
 "      float spot_theta = max( 0.0, dot( light_delta, -light_dir.xyz ) );\n"
 "      falloff *= max( 0.0, (spot_theta - light_dir.w) / (1.0-light_dir.w) );\n"
 "   }\n"
 "\n"
-"   return light_colour.rgb * attenuation * falloff;\n"
+"   return light_colour.rgb * attenuation * falloff \n"
+"            * step( g_day_phase, light_colour.w );\n"
 "}\n"
 "\n"
 "vec3 scene_calculate_packed_light_patch( uint packed_index, \n"
@@ -296,20 +297,17 @@ static struct vg_shader _shader_scene_route = {
 "\n"
 "   vec3 l = vec3(0.0);\n"
 "\n"
-"   if( light_count >= 1u )\n"
-"   {\n"
+"   if( light_count >= 1u ){\n"
 "      int index_0 = int( ((packed_index >>  2u) & 0x3ffu) * 3u );\n"
 "      int index_1 = int( ((packed_index >> 12u) & 0x3ffu) * 3u );\n"
 "      int index_2 = int( ((packed_index >> 22u) & 0x3ffu) * 3u );\n"
 "\n"
 "      l += scene_calculate_light( index_0, halfview, co, normal );\n"
 "\n"
-"      if( light_count >= 2u )\n"
-"      {\n"
+"      if( light_count >= 2u ){\n"
 "         l += scene_calculate_light( index_1, halfview, co, normal );\n"
 "\n"
-"         if( light_count >= 3u )\n"
-"         {\n"
+"         if( light_count >= 3u ){\n"
 "            l += scene_calculate_light( index_2, halfview, co, normal );\n"
 "         }\n"
 "      }\n"
@@ -428,6 +426,13 @@ static struct vg_shader _shader_scene_route = {
 "\n"
 "#line     10        0 \n"
 "\n"
+"float filtered_stripe( in float p, in float ddx, in float ddy )\n"
+"{\n"
+"   float w = max(abs(ddx), abs(ddy)) + 0.02;\n"
+"   float i = (abs(fract((p-0.5*w)/2.0)-0.5)-abs(fract((p+0.5*w)/2.0)-0.5))/w;\n"
+"   return 0.5 - i;\n"
+"}\n"
+"\n"
 "void main()\n"
 "{\n"
 "   compute_motion_vectors();\n"
@@ -452,9 +457,13 @@ static struct vg_shader _shader_scene_route = {
 "   vfrag = pow(uColour.rgb,vec3(1.0/2.2));\n"
 "   vfrag -= rgarbage.a*0.1;\n"
 "\n"
-"   if( wgarbage.g < 0.3 )\n"
+"   if( wgarbage.g < 0.1 )\n"
 "      discard;\n"
 "\n"
+"   float movep = (aUv.x + abs(aUv.y-0.5)*0.4 - g_realtime)*2.0;\n"
+"   float stripe = filtered_stripe( movep, dFdx(movep), dFdy(movep) );\n"
+"   vfrag *= 0.9+stripe*uColour.a; \n"
+"\n"
 "   if( g_light_preview == 1 )\n"
 "   {\n"
 "      vfrag = vec3(0.5);\n"