X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=fishladder_resources.h;h=00cb199a780b3334f02ed0eb9201c46fc7939d0a;hb=a665a5167b297dfcf4a6d2dc5bf9f0368ae5ee23;hp=841cf93ffb366d43a16aaa09f9e4d25290edb3f1;hpb=e0e759c11d13aa83b2621268fb3f41b2dfc5033d;p=fishladder.git diff --git a/fishladder_resources.h b/fishladder_resources.h index 841cf93..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 // =========================================================================================================== @@ -19,7 +20,6 @@ sfx_system audio_system_sfx = .vol = 1.f, .ch = 1, .vol_src = &audio_volume_sfx, - .fadeout_length = FADEOUT_LENGTH, .name = "sfx" }; @@ -35,6 +35,60 @@ sound/mod_06.ogg\0", .flags = 0 }; +sfx_set audio_splitter = +{ + .sources = "\ +sound/splitter_01.ogg\0" +}; + +sfx_set audio_rolls = +{ + .sources = "\ +sound/rolling_01.ogg\0\ +sound/rolling_02.ogg\0" +}; + +sfx_set audio_random = +{ + .sources = "\ +sound/random_01.ogg\0\ +sound/random_02.ogg\0\ +sound/random_03.ogg\0\ +sound/random_04.ogg\0\ +sound/random_05.ogg\0\ +sound/random_06.ogg\0\ +sound/random_07.ogg\0\ +sound/random_08.ogg\0" +}; + +// One two or three layers of rolling noise +sfx_system audio_system_balls_rolling = +{ + .vol = 1.f, .ch = 1, .vol_src = &audio_volume_sfx, + .name = "Balls Rolling", .flags = SFX_FLAG_REPEAT +}; + +// Various oneshots +sfx_system audio_system_balls_switching = +{ + .vol = 1.f, .ch = 1, .vol_src = &audio_volume_sfx, + .name = "Balls Switching" +}; + +// Gameplay critical sounds eg. splitter sound rocking +sfx_system audio_system_balls_important = +{ + .vol = 1.f, .ch = 1, .vol_src = &audio_volume_sfx, + .name = "Balls Gameplay" +}; + +// Suplemental sounds +sfx_system audio_system_balls_extra = +{ + .vol = 1.f, .ch = 1, .vol_src = &audio_volume_sfx, + .name = "Balls Extra" +}; + static void resource_load_main(void) { // Textures @@ -42,12 +96,19 @@ static void resource_load_main(void) // Audio sfx_set_init( &audio_tile_mod, NULL ); + sfx_set_init( &audio_splitter, NULL ); + sfx_set_init( &audio_rolls, NULL ); + sfx_set_init( &audio_random, NULL ); } static void resource_free_main(void) { - vg_tex2d_free( texture_list, vg_list_size( texture_list ) ); + vg_tex2d_free( texture_list, vg_list_size( texture_list ) ); + sfx_set_free( &audio_tile_mod ); + sfx_set_free( &audio_splitter ); + sfx_set_free( &audio_rolls ); + sfx_set_free( &audio_random ); } // SHADERS @@ -149,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;" "" @@ -165,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 );" @@ -173,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) @@ -181,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 ); }