X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=fishladder_resources.h;h=00cb199a780b3334f02ed0eb9201c46fc7939d0a;hb=a665a5167b297dfcf4a6d2dc5bf9f0368ae5ee23;hp=1f8c5454da860017005ac429a71fd2353df94cb3;hpb=026b67150e9bd238709a6aeab656f7d01f3765a8;p=fishladder.git diff --git a/fishladder_resources.h b/fishladder_resources.h index 1f8c545..00cb199 100644 --- a/fishladder_resources.h +++ b/fishladder_resources.h @@ -5,8 +5,9 @@ vg_tex2d tex_tile_data = { .path = "textures/tileset.png" }; vg_tex2d tex_tile_detail = { .path = "textures/tile_overlays.png" }; vg_tex2d tex_wood = { .path = "textures/wood.png" }; vg_tex2d tex_ball = { .path = "textures/ball.png", .flags = VG_TEXTURE_CLAMP }; +vg_tex2d tex_background = { .path = "textures/background.png" }; -vg_tex2d *texture_list[] = { &tex_tile_detail, &tex_tile_data, &tex_wood, &tex_ball }; +vg_tex2d *texture_list[] = { &tex_tile_detail, &tex_tile_data, &tex_wood, &tex_ball, &tex_background }; // AUDIO // =========================================================================================================== @@ -209,6 +210,7 @@ SHADER_DEFINE( shader_tile_main, "uniform sampler2D uTexGlyphs;" "uniform sampler2D uTexWood;" "uniform float uGhost;" + "uniform float uForeground;" "uniform vec2 uMousePos;" "uniform vec4 uColour;" "" @@ -225,7 +227,7 @@ SHADER_DEFINE( shader_tile_main, "vec3 shadows = mix( vec3( 0.85, 0.7344, 0.561 ), vec3(1.0,1.0,1.0), glyph.r );" - "vec4 output_regular = vec4( wood_comp * shadows, glyph.b );" + "vec4 output_regular = vec4( wood_comp * shadows, mix( glyph.a, glyph.b, uForeground ) );" "float ghost_dist = clamp( 1.5 - distance(uMousePos, aWorldCoords), 0.0, 1.0 );" "vec4 output_ghost = vec4( 1.0, 1.0, 1.0, glyph.g * ghost_dist );" @@ -233,7 +235,46 @@ SHADER_DEFINE( shader_tile_main, "FragColor = mix( output_regular, output_ghost, uGhost ) * uColour;" "}" , - UNIFORMS({ "uPv", "uOffset", "uTexGlyphs", "uTexWood", "uSubTransform", "uGhost", "uMousePos", "uColour" }) + UNIFORMS({ "uPv", "uOffset", "uTexGlyphs", "uTexWood", "uSubTransform", "uGhost", "uMousePos", "uColour", "uForeground" }) +) + +SHADER_DEFINE( shader_background, + // VERTEX + "layout (location=0) in vec2 a_co;" + "uniform mat3 uPv;" + "uniform vec3 uOffset;" + "" + "out vec2 aTexCoords;" + "" + "void main()" + "{" + "vec2 world_pos = a_co * uOffset.z + uOffset.xy;" + "gl_Position = vec4( uPv * vec3( world_pos, 1.0 ), 1.0 );" + "aTexCoords = world_pos * 0.25;" + "}", + + // FRAGMENT + "out vec4 FragColor;" + "" + "uniform sampler2D uTexMain;" + "" + "in vec2 aTexCoords;" + "" + "vec2 hash22(vec2 p)" + "{" + "vec3 p3 = fract(vec3(p.xyx) * vec3(.1031, .1030, .0973));" + "p3 += dot(p3, p3.yzx+33.33);" + "return fract((p3.xx+p3.yz)*p3.zy);" + "}" + "" + "void main()" + "{" + "vec2 random_offset = floor( hash22( floor( aTexCoords * 4.0 ) ) * 4.0 ) * 0.25;" + "vec4 background = texture( uTexMain, aTexCoords );" + "FragColor = vec4( background.rgb * (1.0+random_offset.r*0.015), 1.0 );" + "}" + , + UNIFORMS({ "uPv", "uOffset", "uTexMain" }) ) void vg_register(void) @@ -241,4 +282,5 @@ void vg_register(void) SHADER_INIT( shader_tile_colour ); SHADER_INIT( shader_tile_main ); SHADER_INIT( shader_ball ); + SHADER_INIT( shader_background ); }