X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=shaders%2Fscene_font.h;h=eec4b6ce75a025d58297256e7d20dc98a5eec437;hb=eb28dee29482c7ffe8bc0203d302e3ee6dbfd943;hp=7c338a5b60fdafde8b9ac5b432f43cf900e6666b;hpb=c2b59441df0383807ba093295af2e4400e552f39;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/shaders/scene_font.h b/shaders/scene_font.h index 7c338a5..eec4b6c 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" @@ -277,7 +279,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" @@ -406,7 +408,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 +428,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 +483,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 +510,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 +534,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" );