X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;ds=sidebyside;f=world_render.h;h=7eccc6e45518d9351722ea994146ee566dd3f745;hb=98b9bcf0e10bc02cf679d03fa269613e140ba878;hp=1926364c6b437fa03ba206a82ae74af47a620af4;hpb=409edea2cf6271956137918e4e0b4f1c2addf620;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_render.h b/world_render.h index 1926364..7eccc6e 100644 --- a/world_render.h +++ b/world_render.h @@ -92,6 +92,15 @@ VG_STATIC void world_bind_light_array( world_instance *world, glUniform1i( location, slot ); } +VG_STATIC void world_bind_light_index( world_instance *world, + GLuint shader, GLuint location, + int slot ) +{ + glActiveTexture( GL_TEXTURE0 + slot ); + glBindTexture( GL_TEXTURE_3D, world->tex_light_cubes ); + glUniform1i( location, slot ); +} + VG_STATIC void render_world_depth( world_instance *world, camera *cam ); /* @@ -168,6 +177,8 @@ VG_STATIC void render_world_vb( world_instance *world, camera *cam ) _uniform_scene_vertex_blend_g_world_depth, 2 ); world_bind_light_array( world, _shader_scene_vertex_blend.id, _uniform_scene_vertex_blend_uLightsArray, 3 ); + world_bind_light_index( world, _shader_scene_vertex_blend.id, + _uniform_scene_vertex_blend_uLightsIndex, 4 ); vg_tex2d_bind( &tex_terrain_noise, 0 ); @@ -198,6 +209,8 @@ VG_STATIC void render_world_standard( world_instance *world, camera *cam ) _uniform_scene_standard_g_world_depth, 2 ); world_bind_light_array( world, _shader_scene_standard.id, _uniform_scene_standard_uLightsArray, 3 ); + world_bind_light_index( world, _shader_scene_standard.id, + _uniform_scene_standard_uLightsIndex, 4 ); bind_terrain_noise(); @@ -226,6 +239,8 @@ VG_STATIC void render_world_alphatest( world_instance *world, camera *cam ) _uniform_scene_standard_alphatest_g_world_depth, 2 ); world_bind_light_array( world, _shader_scene_standard_alphatest.id, _uniform_scene_standard_alphatest_uLightsArray, 3 ); + world_bind_light_index( world, _shader_scene_standard_alphatest.id, + _uniform_scene_standard_alphatest_uLightsIndex, 4 ); bind_terrain_noise(); @@ -267,6 +282,8 @@ VG_STATIC void render_terrain( world_instance *world, camera *cam ) _uniform_scene_terrain_g_world_depth, 2 ); world_bind_light_array( world, _shader_scene_terrain.id, _uniform_scene_terrain_uLightsArray, 3 ); + world_bind_light_index( world, _shader_scene_terrain.id, + _uniform_scene_terrain_uLightsIndex, 4 ); vg_tex2d_bind( &tex_terrain_noise, 0 ); @@ -281,7 +298,7 @@ VG_STATIC void render_terrain( world_instance *world, camera *cam ) world_render_both_stages( world, k_shader_terrain_blend, bindpoint_terrain ); } -VG_STATIC void render_sky( camera *cam ) +VG_STATIC void render_sky( world_instance *world, camera *cam ) { /* * Modify matrix to remove clipping and view translation @@ -315,7 +332,7 @@ VG_STATIC void render_sky( camera *cam ) shader_model_sky_uPv( pv ); shader_model_sky_uPvmPrev( pv_prev ); shader_model_sky_uTexGarbage(0); - shader_model_sky_uTime( world_global.sky_time ); + world_link_lighting_ub( world, _shader_model_sky.id ); vg_tex2d_bind( &tex_terrain_noise, 0 ); @@ -379,7 +396,7 @@ VG_STATIC void render_world_gates( world_instance *world, camera *cam ) VG_STATIC void render_world( world_instance *world, camera *cam ) { - render_sky( cam ); + render_sky( world, cam ); render_world_routes( world, cam ); render_world_standard( world, cam );