X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=fishladder_resources.h;h=b486ec6c93d5ea49a40376242db15e69fc2bff8f;hb=bb4cab005a763f086a41686b18fa00a39914226f;hp=ddc1f00926e05f19549a32aed40f8dd6c55dc413;hpb=7d33b1d4576c1e35cd03ee3034840b8053914ae1;p=fishladder.git diff --git a/fishladder_resources.h b/fishladder_resources.h index ddc1f00..b486ec6 100644 --- a/fishladder_resources.h +++ b/fishladder_resources.h @@ -119,13 +119,32 @@ vg_tex2d tex_ubuntu = { .path = "textures/ubuntu.qoi" }; vg_tex2d tex_tile_data = { .path = "textures/tileset.qoi" }; vg_tex2d tex_tile_detail = { .path = "textures/tile_overlays.qoi" }; -vg_tex2d tex_wood = { .path = "textures/wood.qoi" }; + +vg_tex2d tex_tiles_wood = { .path = "textures/tile_wood.qoi" }; +vg_tex2d tex_tiles_min = { .path = "textures/tile_minimal.qoi" }; +vg_tex2d tex_tiles_lab = { .path = "textures/tile_lab.qoi" }; + vg_tex2d tex_ball_noise = { .path = "textures/bnoise.qoi" }; vg_tex2d tex_monofur = { .path = "textures/ascii.qoi", .flags = VG_TEXTURE_NO_MIP }; vg_tex2d tex_unkown = { .path = "textures/unkown.qoi" }; vg_tex2d tex_buttons = { .path = "textures/buttons.qoi" }; +vg_tex2d tex_sprites = { .path = "textures/autocombine.qoi" }; + +vg_tex2d *texture_list[] = { + &tex_tile_detail, + &tex_tile_data, + &tex_tiles_wood, + &tex_tiles_min, + &tex_tiles_lab, + &tex_ball_noise, + &tex_monofur, + &tex_unkown, + &tex_buttons, + &tex_ubuntu, + &tex_sprites +}; -vg_tex2d *texture_list[] = { &tex_tile_detail, &tex_tile_data, &tex_wood, &tex_ball_noise, &tex_monofur, &tex_unkown, &tex_buttons, &tex_ubuntu }; +#include "sprites_autocombine.h" // AUDIO // =========================================================================================================== @@ -347,7 +366,8 @@ SHADER_DEFINE( shader_ball, "float shadow = exp(-((shadow_coords_sqr.x+shadow_coords_sqr.y)-0.0125)*15.0);" "vec3 marble_comp = uColour*0.9 + (noise_sample.x*0.7+pow(rim_light,3.0)*2.0) * 0.1;" - "vec4 colour_comp = mix( vec4(0.74,0.53,0.34,shadow), vec4(marble_comp,1.0), circle_factor );" + //"vec4 colour_comp = mix( vec4(0.74,0.53,0.34,shadow), vec4(marble_comp,1.0), circle_factor );" + "vec4 colour_comp = mix( vec4(0.2,0.2,0.2,shadow), vec4(marble_comp,1.0), circle_factor );" "FragColor = colour_comp;" "}" @@ -399,19 +419,23 @@ SHADER_DEFINE( shader_tile_main, "uniform float uForeground;" "uniform vec2 uMousePos;" "uniform vec4 uColour;" + "uniform vec3 uShadowing;" "" "in vec4 aTexCoords;" "in vec2 aWorldCoords;" "" "void main()" "{" - "vec3 shadowing_colour = vec3( 0.93, 0.88536, 0.8184 ) * 0.97;" + //"vec3 shadowing_colour = vec3( 0.93, 0.88536, 0.8184 ) * 0.97;" + //"vec3 shadowing_colour = vec3( 0.8, 0.8, 0.8 );" + "vec4 glyph = texture( uTexGlyphs, aTexCoords.xy );" "vec4 wood = texture( uTexWood, aTexCoords.zw );" "vec4 wood_secondary = texture( uTexWood, aTexCoords.zw + 0.25 );" - "vec3 wood_comp = mix( wood_secondary.rgb * shadowing_colour, wood.rgb, clamp( glyph.b * 2.0 - 1.0, 0.0, 1.0 ) );" + "vec3 wood_comp = mix( wood_secondary.rgb * uShadowing, wood.rgb, clamp( glyph.b*2.0-1.0, 0.0, 1.0 ) );" - "vec3 shadows = mix( vec3( 0.85, 0.7344, 0.561 ), vec3(1.0,1.0,1.0), glyph.r );" + //"vec3 shadows = mix( vec3( 0.85, 0.7344, 0.561 ), vec3(1.0,1.0,1.0), glyph.r );" + "vec3 shadows = mix( uShadowing, vec3(1.0,1.0,1.0), glyph.r );" "vec4 output_regular = vec4( wood_comp * shadows, mix( glyph.a, glyph.b, uForeground ) );" @@ -421,7 +445,8 @@ SHADER_DEFINE( shader_tile_main, "FragColor = mix( output_regular, output_ghost, uGhost ) * uColour;" "}" , - UNIFORMS({ "uPv", "uOffset", "uTexGlyphs", "uTexWood", "uSubTransform", "uGhost", "uMousePos", "uColour", "uForeground", "uVisibility" }) + UNIFORMS({ "uPv", "uOffset", "uTexGlyphs", "uTexWood", "uSubTransform", "uGhost", "uMousePos", + "uColour", "uForeground", "uVisibility", "uShadowing" }) ) SHADER_DEFINE( shader_background, @@ -463,6 +488,7 @@ SHADER_DEFINE( shader_background, "vec4 data_this_tile = texture( uTexMain, aTexCoords );" "ao_accum -= data_this_tile.r;" + "ao_accum *= uVisibility;" "vec3 colour_main = mix( vec3( 0.369768, 0.3654, 0.42 ), vec3( 0.275, 0.388, 0.553 ), data_this_tile.g * uVisibility );" @@ -599,7 +625,6 @@ SHADER_DEFINE( shader_sdf, "out vec4 FragColor;" "" "in vec2 aTexCoords;" - "in vec4 aColour;" "" "void main()" "{" @@ -611,6 +636,39 @@ SHADER_DEFINE( shader_sdf, UNIFORMS({ "uPv", "uTexGlyphs", "uColour" }) ) +SHADER_DEFINE( shader_sprite, + + // VERTEX + "layout (location=0) in vec2 a_co;" // quad mesh + "uniform vec4 uUv;" + "uniform vec3 uPos;" + "" + "uniform mat3 uPv;" + "" + "out vec2 aTexCoords;" + "" + "void main()" + "{" + "vec2 vertex_world = uUv.zw * (a_co-0.5) * uPos.z + uPos.xy;" + "gl_Position = vec4( uPv * vec3( vertex_world, 1.0 ), 1.0 );" + "aTexCoords = uUv.xy + a_co*uUv.zw;" + "}", + + // FRAGMENT + "uniform sampler2D uTexMain;" + "out vec4 FragColor;" + "" + "in vec2 aTexCoords;" + "" + "void main()" + "{" + "vec4 texture_sample = texture( uTexMain, aTexCoords );" + "FragColor = texture_sample;" + "}" + , + UNIFORMS({ "uPv", "uTexMain", "uUv", "uPos" }) +) + void vg_register(void) { SHADER_INIT( shader_tile_colour ); @@ -620,6 +678,7 @@ void vg_register(void) SHADER_INIT( shader_wire ); SHADER_INIT( shader_buttons ); SHADER_INIT( shader_sdf ); + SHADER_INIT( shader_sprite ); } /* @@ -899,18 +958,47 @@ static struct cmp_level cmp_levels_grad[] = .map_name = "cmp_grad", .description = "", - ._linked = 22 + ._linked = 22, + ._unlock = 23 }, // r2 GM { .serial_id = 22, .title = "SECRET CODE", .map_name = "cmp_secret", + .description = "", + + ._unlock = 23 + } +}; + +static struct cmp_level cmp_levels_computer[] = +{ + { + .serial_id = 23, + .title = "3 BIT BINARY", + .map_name = "cmp_binary", + .description = "", + + ._unlock = 24 + }, + { + .serial_id = 24, + .title = "3 BIT ADDITION", + .map_name = "cmp_add3b", + .description = "", + + ._unlock = 25 + }, + { + .serial_id = 25, + .title = "3x3 PLOT", + .map_name = "cmp_plot3x3", .description = "" } }; -#define NUM_CAMPAIGN_LEVELS (vg_list_size( cmp_levels_tutorials ) + vg_list_size( cmp_levels_basic ) + vg_list_size( cmp_levels_grad )) +#define NUM_CAMPAIGN_LEVELS (vg_list_size( cmp_levels_tutorials ) + vg_list_size( cmp_levels_basic ) + vg_list_size( cmp_levels_grad ) + vg_list_size( cmp_levels_computer ) ) static struct career_level_pack { @@ -935,14 +1023,21 @@ career_packs[] = .count = vg_list_size( cmp_levels_basic ), .primary_colour = { 0.304f, 0.245f, 0.553f }, .origin = { -3, 0 }, - .dims = { 3, 6 } + .dims = { 3, 5 } }, { .pack = cmp_levels_grad, .count = vg_list_size( cmp_levels_grad ), .primary_colour = { 0.553f, 0.345f, 0.204f }, - .origin = { -5, 7 }, + .origin = { -5, 6 }, .dims = { 4, 1 } + }, + { + .pack = cmp_levels_computer, + .count = vg_list_size( cmp_levels_computer ), + .primary_colour = { 0.75f, 0.23f, 0.39f }, + .origin = { -5, 8 }, + .dims = { 5, 1 } } };