X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=shaders%2Fscene_route.h;h=eea0c75bd0211b544ac9a43f78cebd4ed4a24046;hb=5f5d02725031cad23f1cab3290b8a9d661c89728;hp=ecaf5fe5f3357aae9d69fb76da751cebf27e5e68;hpb=63fe317d7db724162561da52aa382c82ac3c29be;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/shaders/scene_route.h b/shaders/scene_route.h index ecaf5fe..eea0c75 100644 --- a/shaders/scene_route.h +++ b/shaders/scene_route.h @@ -7,7 +7,7 @@ static struct vg_shader _shader_scene_route = { .link = shader_scene_route_link, .vs = { -.orig_file = "shaders/scene.vs", +.orig_file = "shaders/scene_override.vs", .static_src = "layout (location=0) in vec3 a_co;\n" "layout (location=1) in vec4 a_norm;\n" @@ -36,6 +36,7 @@ static struct vg_shader _shader_scene_route = { "uniform mat4x3 uMdl;\n" "uniform mat4 uPv;\n" "uniform mat4 uPvmPrev;\n" +"uniform mat3 uNormalMtx;\n" "\n" "out vec2 aUv;\n" "out vec4 aNorm;\n" @@ -53,7 +54,7 @@ static struct vg_shader _shader_scene_route = { " gl_Position = vproj0;\n" "\n" " aUv = a_uv;\n" -" aNorm = vec4( mat3(uMdl) * a_norm.xyz, a_norm.w );\n" +" aNorm = vec4( uNormalMtx * a_norm.xyz, a_norm.w );\n" " aCo = a_co;\n" " aWorldCo = world_pos0;\n" "}\n" @@ -205,14 +206,18 @@ static struct vg_shader _shader_scene_route = { " vec3 sun_colour = mix( vec3(1.0), g_sunset_colour.rgb, g_sunset_phase*0.5 );\n" " sun_colour *= sun_shape;\n" "\n" -"\n" +" \n" " float star = 0.0;\n" -" for( float j = 1.0; j <= 4.1; j += 1.0 ){\n" -" float m = mix(0.6, 0.9, smoothstep(1.0, 2.0, j));\n" -" star += stars( ray_dir, 1.94 * pow( 1.64, j ), m ) * (1.0 / pow(4.0, j));\n" +" float star_blend = 10.0*max(0.0,(1.0-g_day_phase*2.0));\n" +"\n" +" if( star_blend > 0.001 ){\n" +" for( float j = 1.0; j <= 4.1; j += 1.0 ){\n" +" float m = mix(0.6, 0.9, smoothstep(1.0, 2.0, j));\n" +" star += stars( ray_dir, 1.94 * pow( 1.64, j ), m ) * (1.0/pow(4.0, j));\n" +" }\n" " }\n" " \n" -" vec3 composite = sky_colour + sun_colour + star*10.0*max(0.0,(1.0-g_day_phase*2.0));\n" +" vec3 composite = sky_colour + sun_colour + star*star_blend;\n" " return composite;\n" "}\n" "\n" @@ -504,6 +509,7 @@ static struct vg_shader _shader_scene_route = { static GLuint _uniform_scene_route_uMdl; static GLuint _uniform_scene_route_uPv; static GLuint _uniform_scene_route_uPvmPrev; +static GLuint _uniform_scene_route_uNormalMtx; static GLuint _uniform_scene_route_uTexGarbage; static GLuint _uniform_scene_route_uTexGradients; static GLuint _uniform_scene_route_uCamera; @@ -520,6 +526,9 @@ static void shader_scene_route_uPv(m4x4f m){ static void shader_scene_route_uPvmPrev(m4x4f m){ glUniformMatrix4fv(_uniform_scene_route_uPvmPrev,1,GL_FALSE,(float*)m); } +static void shader_scene_route_uNormalMtx(m3x3f m){ + glUniformMatrix3fv(_uniform_scene_route_uNormalMtx,1,GL_FALSE,(float*)m); +} static void shader_scene_route_uTexGarbage(int i){ glUniform1i(_uniform_scene_route_uTexGarbage,i); } @@ -543,6 +552,7 @@ static void shader_scene_route_link(void){ _uniform_scene_route_uMdl = glGetUniformLocation( _shader_scene_route.id, "uMdl" ); _uniform_scene_route_uPv = glGetUniformLocation( _shader_scene_route.id, "uPv" ); _uniform_scene_route_uPvmPrev = glGetUniformLocation( _shader_scene_route.id, "uPvmPrev" ); + _uniform_scene_route_uNormalMtx = glGetUniformLocation( _shader_scene_route.id, "uNormalMtx" ); _uniform_scene_route_uTexGarbage = glGetUniformLocation( _shader_scene_route.id, "uTexGarbage" ); _uniform_scene_route_uTexGradients = glGetUniformLocation( _shader_scene_route.id, "uTexGradients" ); _uniform_scene_route_uCamera = glGetUniformLocation( _shader_scene_route.id, "uCamera" );