get achievements working again
[fishladder.git] / fishladder_resources.h
index 2bd1442d125e379b53eb589b77fc3f0b81ba8390..4e48534bc82bcf2f6ff0a00d2eb891924d135f67 100644 (file)
@@ -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,