X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=water.h;h=81d709e47956e56e992110f2eb8c945c51ee601a;hb=4fccea589f00c06c570cc4ea3e7a69d191328ffb;hp=957f2021c3cfedc7b34513dd8b503ad027b31f96;hpb=7758c7efec3956c68294bc914e7524045a2b1bd7;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/water.h b/water.h index 957f202..81d709e 100644 --- a/water.h +++ b/water.h @@ -7,6 +7,7 @@ #include "model.h" #include "render.h" #include "shaders/water.h" +#include "scene.h" vg_tex2d tex_water_surf = { .path = "textures/water_surf.qoi" }; @@ -15,6 +16,10 @@ static struct GLuint fb, rgb, rb; glmesh mdl; + GLuint depthmap; + boxf depthbounds; + int depth_computed; + float height; } wrender; @@ -29,6 +34,64 @@ static void water_init(void) create_renderbuffer_std( &wrender.fb, &wrender.rgb, &wrender.rb ); } +static int ray_world( v3f pos, v3f dir, ray_hit *hit ); +static void water_compute_depth( boxf bounds ) +{ +#ifdef VG_RELEASE + int const kres = 512; +#else + int const kres = 64; +#endif + + vg_info( "Computing depth map\n" ); + u8 *img = malloc( kres*kres ); + + v3f volume; + v3_sub( bounds[1], bounds[0], volume ); + box_copy( bounds, wrender.depthbounds ); + + for( int y=0; y