X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_render.c;h=33814858c1eacc564be511b85718678b2bb6279e;hb=e311bbe2fa903a7e2a922f202f389b799193195d;hp=8c346b677606b832313031a891f474bcfa2b20a8;hpb=011d58eed52dab1ec6444b9a4d79365a66c38325;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_render.c b/world_render.c index 8c346b6..3381485 100644 --- a/world_render.c +++ b/world_render.c @@ -79,6 +79,7 @@ static void world_render_init(void) shader_scene_standard_register(); shader_scene_standard_alphatest_register(); + shader_scene_foliage_register(); shader_scene_override_register(); shader_scene_cubemapped_register(); shader_scene_fxglow_register(); @@ -453,6 +454,29 @@ static void render_world_alphatest( world_instance *world, camera *cam ){ glEnable(GL_CULL_FACE); } +static void render_world_foliage( world_instance *world, camera *cam ){ + shader_scene_foliage_use(); + shader_scene_foliage_uTexGarbage(0); + shader_scene_foliage_uTexMain(1); + shader_scene_foliage_uPv( cam->mtx.pv ); + shader_scene_foliage_uTime( vg.time ); + + WORLD_BIND_LIGHT_BUFFERS_UB0_TEX234( world, scene_foliage ); + bind_terrain_noise(); + + shader_scene_foliage_uCamera( cam->transform[3] ); + glDisable(GL_CULL_FACE); + struct world_pass pass = { + .shader = k_shader_foliage, + .cam = cam, + .fn_bind_textures = bindpoint_diffuse_texture1, + .fn_set_mdl = shader_scene_foliage_uMdl, + .fn_set_uPvmPrev = shader_scene_foliage_uPvmPrev, + }; + world_render_both_stages( world, &pass ); + glEnable(GL_CULL_FACE); +} + static void world_render_challenges( world_instance *world, struct world_pass *pass, v3f pos ){ if( !world ) return; @@ -920,6 +944,7 @@ static void render_world( world_instance *world, camera *cam, render_world_vb( world, cam ); render_world_alphatest( world, cam ); + render_world_foliage( world, cam ); render_terrain( world, cam ); if( !viewing_from_gate ){