stepping
[carveJwlIkooP6JGAAIwe30JlM.git] / shaders / scene_water.h
index 0fe4e1787cfe6e27f2fa332ddadc32bb0a07c589..a62842adb3fab234de5d81b4ddddfc1f4698ed51 100644 (file)
@@ -106,6 +106,7 @@ static struct vg_shader _shader_scene_water = {
 "\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"
@@ -202,7 +203,7 @@ static struct vg_shader _shader_scene_water = {
 "   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"
@@ -212,9 +213,8 @@ static struct vg_shader _shader_scene_water = {
 "\n"
 "float world_water_depth( vec3 pos )\n"
 "{\n"
-"   vec2 depth_coord = (pos.xz - g_depth_bounds.xy) * g_depth_bounds.zw; \n"
 "   float ref_depth = g_water_plane.y*g_water_plane.w;\n"
-"   return texture( g_world_depth, depth_coord ).g - ref_depth;\n"
+"   return world_depth_sample( pos ) - ref_depth;\n"
 "}\n"
 "\n"
 "float shadow_sample( vec3 vdir )\n"
@@ -287,13 +287,13 @@ static struct vg_shader _shader_scene_water = {
 "\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"
@@ -303,20 +303,17 @@ static struct vg_shader _shader_scene_water = {
 "\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"
@@ -464,7 +461,7 @@ static struct vg_shader _shader_scene_water = {
 "   vec2 ssuv = gl_FragCoord.xy*uInvRes;\n"
 "   \n"
 "   // Surface colour composite\n"
-"   float depthvalue = clamp( -world_water_depth( aCo )*(1.0/25.0), 0.0, 1.0 );\n"
+"   float depthvalue = clamp( -world_water_depth(aCo)*(1.0/25.0), 0.0,1.0 );\n"
 "\n"
 "   vec2 world_coord = aCo.xz * 0.008;\n"
 "   vec4 time_offsets = vec4( uTime ) * vec4( 0.008, 0.006, 0.003, 0.03 );\n"