+VG_STATIC void render_world_cubemapped( world_instance *world, camera *cam,
+ int layer_depth ){
+ if( !mdl_arrcount( &world->ent_cubemap ) )
+ return;
+
+ if( layer_depth == -1 ){
+ world_shader_standard_bind( world, cam );
+
+ struct world_pass pass = {
+ .shader = k_shader_cubemap,
+ .cam = cam,
+ .fn_bind_textures = bindpoint_diffuse_texture1,
+ .fn_set_mdl = shader_scene_standard_uMdl,
+ .fn_set_uPvmPrev = shader_scene_standard_uPvmPrev,
+ };
+
+ world_render_both_stages( world, &pass );
+ }
+ else {
+ shader_scene_cubemapped_use();
+ shader_scene_cubemapped_uTexGarbage(0);
+ shader_scene_cubemapped_uTexMain(1);
+ shader_scene_cubemapped_uTexCubemap(10);
+ shader_scene_cubemapped_uPv( cam->mtx.pv );
+
+ world_link_lighting_ub( world, _shader_scene_cubemapped.id );
+ world_bind_position_texture( world, _shader_scene_cubemapped.id,
+ _uniform_scene_cubemapped_g_world_depth, 2 );
+ world_bind_light_array( world, _shader_scene_cubemapped.id,
+ _uniform_scene_cubemapped_uLightsArray, 3 );
+ world_bind_light_index( world, _shader_scene_cubemapped.id,
+ _uniform_scene_cubemapped_uLightsIndex, 4 );
+
+ bind_terrain_noise();
+ shader_scene_cubemapped_uCamera( cam->transform[3] );
+
+ struct world_pass pass = {
+ .shader = k_shader_cubemap,
+ .cam = cam,
+ .fn_bind_textures = bindpoint_diffuse1_and_cubemap10,
+ .fn_set_mdl = shader_scene_cubemapped_uMdl,
+ .fn_set_uPvmPrev = shader_scene_cubemapped_uPvmPrev,
+ };
+
+ world_render_both_stages( world, &pass );
+ }
+}
+
+VG_STATIC void render_world_alphatest( world_instance *world, camera *cam ){