X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=fishladder_resources.h;h=4e48534bc82bcf2f6ff0a00d2eb891924d135f67;hb=294ad22bc27eae2ec8a1cbea97d08a2d45b554e9;hp=2bd1442d125e379b53eb589b77fc3f0b81ba8390;hpb=8a39a1bbac29228f650cef6c1d36f618f1c3c000;p=fishladder.git diff --git a/fishladder_resources.h b/fishladder_resources.h index 2bd1442..4e48534 100644 --- a/fishladder_resources.h +++ b/fishladder_resources.h @@ -4,10 +4,10 @@ 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_ball = { .path = "textures/ball.qoi", .flags = VG_TEXTURE_CLAMP }; vg_tex2d tex_background = { .path = "textures/background.qoi" }; +vg_tex2d tex_ball_noise = { .path = "textures/bnoise.qoi" }; -vg_tex2d *texture_list[] = { &tex_tile_detail, &tex_tile_data, &tex_wood, &tex_ball, &tex_background }; +vg_tex2d *texture_list[] = { &tex_tile_detail, &tex_tile_data, &tex_wood, &tex_background, &tex_ball_noise }; // AUDIO // =========================================================================================================== @@ -144,16 +144,16 @@ SHADER_DEFINE( shader_ball, "uniform vec2 uOffset;" "uniform mat3 uPv;" "" - "out vec2 aTexCoords;" + "out vec4 aTexCoords;" "" "void main()" "{" - // Create texture coords - "aTexCoords = a_co;" - // Vertex transform "vec3 worldpos = vec3( a_co * 0.5 - 0.25 + uOffset, 1.0 );" "gl_Position = vec4( uPv * worldpos, 1.0 );" + + // Create texture coords + "aTexCoords = vec4( a_co, worldpos.xy );" "}", // FRAGMENT @@ -161,16 +161,33 @@ SHADER_DEFINE( shader_ball, "" "uniform sampler2D uTexMain;" "uniform vec3 uColour;" + "uniform vec2 uTexOffset;" "" - "in vec2 aTexCoords;" + "in vec4 aTexCoords;" "" "void main()" "{" - "vec4 glyph = texture( uTexMain, aTexCoords );" - "FragColor = vec4( uColour + glyph.rgb * 0.2, glyph.a );" + "vec2 center_coords = aTexCoords.xy - 0.5;" + "vec2 center_coords_sqr = center_coords*center_coords;" + "float circle_factor = smoothstep( 0.07, 0.0625, center_coords_sqr.x+center_coords_sqr.y );" + + "float bulge_amt = center_coords_sqr.x+center_coords_sqr.y;" + "vec2 warped_coords = aTexCoords.zw+uTexOffset - center_coords;" + "vec4 noise_sample = texture( uTexMain, warped_coords );" + + "float rim_light = (center_coords_sqr.x+center_coords_sqr.y)*15.0;" + + "vec2 shadow_coords = center_coords + vec2(0.02,0.07);" + "vec2 shadow_coords_sqr = shadow_coords*shadow_coords;" + "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 );" + + "FragColor = colour_comp;" "}" , - UNIFORMS({ "uTexMain", "uColour", "uOffset", "uPv" }) + UNIFORMS({ "uTexMain", "uColour", "uOffset", "uPv", "uTexOffset" }) ) SHADER_DEFINE( shader_tile_main,