X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=shaders%2Fscene_font.h;h=f0a982997b5422d53ae795feca64d698d69ba746;hb=2c91a71533b4ce86b9e7fd708420ae05c74d8f52;hp=7c338a5b60fdafde8b9ac5b432f43cf900e6666b;hpb=c2b59441df0383807ba093295af2e4400e552f39;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/shaders/scene_font.h b/shaders/scene_font.h index 7c338a5..f0a9829 100644 --- a/shaders/scene_font.h +++ b/shaders/scene_font.h @@ -56,7 +56,7 @@ static struct vg_shader _shader_scene_font = { "\n" " aUv = a_uv;\n" " aNorm = vec4( mat3(uMdl) * a_norm, 0.0 );\n" -" aCo = a_co;\n" +" aCo = co;\n" " aWorldCo = world_pos0;\n" "}\n" ""}, @@ -65,9 +65,11 @@ static struct vg_shader _shader_scene_font = { .orig_file = "shaders/scene_font.fs", .static_src = "uniform sampler2D uTexGarbage; // unused\n" -"uniform sampler2D uTexMain;\n" +"uniform sampler2D uTexMain; // unused\n" "uniform vec3 uCamera;\n" -"uniform vec4 uPlane;\n" +"uniform float uTime;\n" +"uniform float uOpacity;\n" +"uniform float uColourize;\n" "\n" "#line 1 1 \n" "// :D\n" @@ -212,19 +214,15 @@ static struct vg_shader _shader_scene_font = { " return world_depth_sample( pos ) - ref_depth;\n" "}\n" "\n" -"float shadow_sample( vec3 vdir )\n" -"{\n" -" vec3 sample_pos = aWorldCo + vdir;\n" -" float height_sample = world_depth_sample( sample_pos );\n" +"float shadow_sample( vec3 co ){\n" +" float height_sample = world_depth_sample( co );\n" "\n" -" float fdelta = height_sample - sample_pos.y;\n" +" float fdelta = height_sample - co.y;\n" " return clamp( fdelta, 0.2, 0.4 )-0.2;\n" "}\n" "\n" -"float newlight_compute_sun_shadow( vec3 dir )\n" -"{\n" -" if( g_shadow_samples == 0 )\n" -" {\n" +"float newlight_compute_sun_shadow( vec3 co, vec3 dir ){\n" +" if( g_shadow_samples == 0 ){\n" " return 1.0;\n" " }\n" "\n" @@ -232,15 +230,15 @@ static struct vg_shader _shader_scene_font = { " float flength = g_shadow_length;\n" "\n" " float famt = 0.0;\n" -" famt += shadow_sample((dir+vec3(-0.56,0.55, 0.30)*fspread)*flength*0.1);\n" -" famt += shadow_sample((dir+vec3( 0.80,0.68, 0.34)*fspread)*flength*0.2);\n" -" famt += shadow_sample((dir+vec3( 0.78,0.07,-0.06)*fspread)*flength*0.3);\n" -" famt += shadow_sample((dir+vec3(-0.59,0.07,-0.42)*fspread)*flength*0.4);\n" +" famt += shadow_sample(co+(dir+vec3(-0.56,0.55, 0.30)*fspread)*flength*0.1);\n" +" famt += shadow_sample(co+(dir+vec3( 0.80,0.68, 0.34)*fspread)*flength*0.2);\n" +" famt += shadow_sample(co+(dir+vec3( 0.78,0.07,-0.06)*fspread)*flength*0.3);\n" +" famt += shadow_sample(co+(dir+vec3(-0.59,0.07,-0.42)*fspread)*flength*0.4);\n" "\n" -" //famt+=shadow_sample((dir+vec3(-0.790,-0.933,-0.875)*fspread)*flength*0.5);\n" -" //famt+=shadow_sample((dir+vec3( 0.807,-0.690, 0.472)*fspread)*flength*0.6);\n" -" //famt+=shadow_sample((dir+vec3( 0.522,-0.379, 0.350)*fspread)*flength*0.7);\n" -" //famt+=shadow_sample((dir+vec3( 0.483, 0.201, 0.306)*fspread)*flength*0.8);\n" +" //famt+=shadow_sample(co+(dir+vec3(-0.790,-0.933,-0.875)*fspread)*flength*0.5);\n" +" //famt+=shadow_sample(co+(dir+vec3( 0.807,-0.690, 0.472)*fspread)*flength*0.6);\n" +" //famt+=shadow_sample(co+(dir+vec3( 0.522,-0.379, 0.350)*fspread)*flength*0.7);\n" +" //famt+=shadow_sample(co+(dir+vec3( 0.483, 0.201, 0.306)*fspread)*flength*0.8);\n" "\n" " return 1.0 - famt;\n" "}\n" @@ -277,7 +275,7 @@ static struct vg_shader _shader_scene_font = { " light_delta = normalize( light_delta );\n" "\n" " float quadratic = dist2*100.0;\n" -" float attenuation = 1.0f/( 1.0f + quadratic );\n" +" float attenuation = 1.0/( 1.0 + quadratic );\n" " attenuation *= max( dot( light_delta, normal ), 0.0 );\n" "\n" " float falloff = max( 0.0, 1.0-(dist2*light_co.w) );\n" @@ -328,8 +326,8 @@ static struct vg_shader _shader_scene_font = { " float fdist = length(halfview);\n" " halfview /= fdist;\n" "\n" -" float world_shadow = newlight_compute_sun_shadow( g_sun_dir.xyz \n" -" * (1.0/(max(g_sun_dir.y,0.0)+0.2)) );\n" +" float world_shadow = newlight_compute_sun_shadow( \n" +" co, g_sun_dir.xyz * (1.0/(max(g_sun_dir.y,0.0)+0.2)) );\n" "\n" " vec3 total_light = clearskies_lighting( \n" " normal, min( light_mask, world_shadow ), halfview );\n" @@ -406,7 +404,7 @@ static struct vg_shader _shader_scene_font = { " return world_compute_lighting( diffuse, normal, co, compute_board_shadow() );\n" "}\n" "\n" -"#line 7 0 \n" +"#line 9 0 \n" "#line 1 2 \n" "const float k_motion_lerp_amount = 0.01;\n" "\n" @@ -426,20 +424,45 @@ static struct vg_shader _shader_scene_font = { " oMotionVec = (vmotion1-vmotion0) * (1.0/k_motion_lerp_amount);\n" "}\n" "\n" -"#line 8 0 \n" +"#line 10 0 \n" "\n" -"void main()\n" -"{\n" -" compute_motion_vectors();\n" +"vec3 pal( float t ){\n" +" vec3 a = vec3(0.30,0.3,0.3);\n" +" vec3 b = vec3(0.8);\n" +" vec3 c = vec3(0.28,0.3,0.4);\n" +" vec3 d = vec3(0.00,0.1,0.1);\n" +" return a + b*cos( 6.28318*(c*t+d) );\n" +"}\n" "\n" +"void main(){\n" +" compute_motion_vectors();\n" " vec3 vfrag = vec3(0.5,0.5,0.5);\n" -" vec4 vsamplemain = texture( uTexMain, aUv );\n" " vec3 qnorm = aNorm.xyz;\n" "\n" -" vfrag = vsamplemain.rgb;\n" +" //vec4 vsamplemain = texture( uTexMain, aUv );\n" +" //vfrag = vsamplemain.rgb;\n" "\n" -" if( g_light_preview == 1 )\n" -" {\n" +" vec4 spread0 = uTime*0.0002*vec4( 17.3,-19.6, 23.2,-47.7 );\n" +" vec4 spread1 = uTime*0.0002*vec4( -13.3, 12.6,-28.2, 14.7 );\n" +"\n" +" vec2 p = aCo.xy + vec2(0.3);\n" +" float a = atan( p.y/p.x );\n" +" vec4 v0 = step( vec4(0.5), fract(vec4(a) + spread0) );\n" +" vec4 v1 = step( vec4(0.5), fract(vec4(a) + spread1) );\n" +"\n" +" float d = ( v0.x+v0.y+v0.z+v0.w +\n" +" v1.x+v1.y+v1.z+v1.w ) * 0.125;\n" +" \n" +" float dither = fract(dot(vec2(171.0,231.0),gl_FragCoord.xy)/71.0);\n" +" float x = d*0.8+length(p)*0.3;\n" +" x = (floor(x*8.0) + step(dither, fract(x * 8.0))) / 8.0;\n" +"\n" +" if( x + (uOpacity*2.0-1.0) < 0.5 ) \n" +" discard;\n" +"\n" +" vfrag = mix( vec3(x), pal( x ), uColourize );\n" +"\n" +" if( g_light_preview == 1 ){\n" " vfrag = vec3(0.5);\n" " }\n" "\n" @@ -456,7 +479,9 @@ static GLuint _uniform_scene_font_uOffset; static GLuint _uniform_scene_font_uTexGarbage; static GLuint _uniform_scene_font_uTexMain; static GLuint _uniform_scene_font_uCamera; -static GLuint _uniform_scene_font_uPlane; +static GLuint _uniform_scene_font_uTime; +static GLuint _uniform_scene_font_uOpacity; +static GLuint _uniform_scene_font_uColourize; static GLuint _uniform_scene_font_g_world_depth; static GLuint _uniform_scene_font_uLightsArray; static GLuint _uniform_scene_font_uLightsIndex; @@ -481,8 +506,14 @@ static void shader_scene_font_uTexMain(int i){ static void shader_scene_font_uCamera(v3f v){ glUniform3fv(_uniform_scene_font_uCamera,1,v); } -static void shader_scene_font_uPlane(v4f v){ - glUniform4fv(_uniform_scene_font_uPlane,1,v); +static void shader_scene_font_uTime(float f){ + glUniform1f(_uniform_scene_font_uTime,f); +} +static void shader_scene_font_uOpacity(float f){ + glUniform1f(_uniform_scene_font_uOpacity,f); +} +static void shader_scene_font_uColourize(float f){ + glUniform1f(_uniform_scene_font_uColourize,f); } static void shader_scene_font_g_world_depth(int i){ glUniform1i(_uniform_scene_font_g_world_depth,i); @@ -499,7 +530,9 @@ static void shader_scene_font_link(void){ _uniform_scene_font_uTexGarbage = glGetUniformLocation( _shader_scene_font.id, "uTexGarbage" ); _uniform_scene_font_uTexMain = glGetUniformLocation( _shader_scene_font.id, "uTexMain" ); _uniform_scene_font_uCamera = glGetUniformLocation( _shader_scene_font.id, "uCamera" ); - _uniform_scene_font_uPlane = glGetUniformLocation( _shader_scene_font.id, "uPlane" ); + _uniform_scene_font_uTime = glGetUniformLocation( _shader_scene_font.id, "uTime" ); + _uniform_scene_font_uOpacity = glGetUniformLocation( _shader_scene_font.id, "uOpacity" ); + _uniform_scene_font_uColourize = glGetUniformLocation( _shader_scene_font.id, "uColourize" ); _uniform_scene_font_g_world_depth = glGetUniformLocation( _shader_scene_font.id, "g_world_depth" ); _uniform_scene_font_uLightsArray = glGetUniformLocation( _shader_scene_font.id, "uLightsArray" ); _uniform_scene_font_uLightsIndex = glGetUniformLocation( _shader_scene_font.id, "uLightsIndex" );