turbo chaos
authorhgn <hgodden00@gmail.com>
Tue, 21 Nov 2023 16:03:48 +0000 (16:03 +0000)
committerhgn <hgodden00@gmail.com>
Tue, 21 Nov 2023 16:03:48 +0000 (16:03 +0000)
15 files changed:
ent_miniworld.c
ent_miniworld.h
gui.h
input.h
maps_src/dev_hub/main.mdl
menu.h
models_src/rs_icons.mdl
player.c
respawn.c
shaders/scene_override.fs
shaders/scene_override.h
skaterift.c
skaterift.h
world_render.c
world_render.h

index 0ceefdab1dfaad6f7e37c7cb94d75d05cce66e71..af4d66810164b8b98d054719608effa45bd09118 100644 (file)
@@ -5,27 +5,6 @@
 #include "gui.h"
 #include "menu.h"
 
-static void miniworld_helper_default(void){
-   gui_helper_clear();
-   vg_str text;
-
-   if( gui_new_helper( input_button_list[k_srbind_miniworld_teleport],&text))
-      vg_strcat( &text, "Teleport" );
-
-   if( gui_new_helper( input_button_list[k_srbind_miniworld_resume], &text ))
-      vg_strcat( &text, "Enter World" );
-}
-
-static void miniworld_helper_tele(void){
-   gui_helper_clear();
-   vg_str text;
-   if( gui_new_helper( input_button_list[k_srbind_miniworld_resume], &text ))
-      vg_strcat( &text, "Confirm" );
-
-   if( gui_new_helper( input_button_list[k_srbind_mback],&text))
-      vg_strcat( &text, "Cancel" );
-}
-
 static void ent_miniworld_call( world_instance *world, ent_call *call ){
    ent_miniworld *miniworld = mdl_arritm( &world->ent_miniworld, 
                                           mdl_entity_id_id(call->id) );
@@ -38,14 +17,15 @@ static void ent_miniworld_call( world_instance *world, ent_call *call ){
 
       mdl_transform_m4x3( &miniworld->transform, global_miniworld.mmdl );
       global_miniworld.active = miniworld;
-      global_miniworld.mode = 0;
-      global_miniworld.dest_spawn = NULL;
-      miniworld_helper_default();
+
+      gui_helper_clear();
+      vg_str text;
+
+      if( gui_new_helper( input_button_list[k_srbind_miniworld_resume], &text ))
+         vg_strcat( &text, "Enter World" );
    }
    else if( call->function == 1 ){
       global_miniworld.active = NULL;
-      global_miniworld.mode = 0;
-      global_miniworld.dest_spawn = NULL;
       gui_helper_clear();
 
       if( miniworld->proxy ){
@@ -107,7 +87,7 @@ static void ent_miniworld_render( world_instance *host_world, camera *cam ){
       return;
 
    render_world_override( dest_world, host_world, global_miniworld.mmdl, cam,
-                          global_miniworld.dest_spawn );
+                          NULL, 0.0f );
    render_world_routes( dest_world, host_world, 
                         global_miniworld.mmdl, cam, 0, 1 );
 
@@ -156,30 +136,15 @@ static void ent_miniworld_preupdate(void){
        (world_static.active_instance != k_world_purpose_hub) ||
        (!miniworld) ||
        (dest->status != k_world_status_loaded) ){
-      
-      if( global_miniworld.mode ){
-         global_miniworld.mode = 0;
-         global_miniworld.dest_spawn = 0;
-         menu.disable_open = 0;
-         srinput.state = k_input_state_resume;
-         gui_helper_clear();
-      }
       return;
    }
 
    if( button_down( k_srbind_miniworld_resume ) ){
-      global_miniworld.mode = 0;
       global_miniworld.transition = 1;
       global_miniworld.t = 0.0f;
       global_miniworld.cam = skaterift.cam;
-   
-      if( global_miniworld.dest_spawn ){
-         v3_copy( global_miniworld.dest_spawn->transform.co, 
-                  dest->player_co );
-      }
 
       world_switch_instance(1);
-      global_miniworld.dest_spawn = NULL;
       srinput.state = k_input_state_resume;
       menu.disable_open = 0;
       gui_helper_clear();
@@ -187,31 +152,6 @@ static void ent_miniworld_preupdate(void){
       audio_oneshot( &audio_ui[2], 1.0f, 0.0f );
       audio_unlock();
    }
-   else {
-      if( global_miniworld.mode == 1 ){
-         if( button_down(k_srbind_mback) ){
-            global_miniworld.mode = 0;
-            global_miniworld.dest_spawn = NULL;
-            menu.disable_open = 0;
-            srinput.state = k_input_state_resume;
-            miniworld_helper_default();
-         }
-         else {
-            m4x3f mmdl_inv;
-            m4x3_invert_full( global_miniworld.mmdl, mmdl_inv );
-            v3f lco;
-            m4x3_mulv( mmdl_inv, localplayer.rb.co, lco );
-            global_miniworld.dest_spawn = world_find_closest_spawn( dest, lco );
-         }
-      }
-      else {
-         if( button_down( k_srbind_miniworld_teleport ) ){
-            global_miniworld.mode = 1;
-            menu.disable_open = 1;
-            miniworld_helper_tele();
-         }
-      }
-   }
 }
 
 static void ent_miniworld_goback(void){
index 73d0c46d67d19b171b3c5b7c127629b8ad52f784..e963a09f549ce63dc822b6f0fa02767b691c7075 100644 (file)
@@ -6,13 +6,10 @@
 struct {
    ent_miniworld *active;
    int transition;
-   int mode;
    f32 t;
 
    m4x3f mmdl;
    camera cam;
-
-   ent_spawn *dest_spawn;
 }
 static global_miniworld;
 
diff --git a/gui.h b/gui.h
index 5b662b234f9164a60254b6fd8b042cdb4ab673c2..f3da9a406287533432149045a14cb1f71f755a88 100644 (file)
--- a/gui.h
+++ b/gui.h
@@ -7,11 +7,14 @@
 
 enum gui_icon {
    k_gui_icon_tick    = 0,
+   k_gui_icon_tick_2d,
    k_gui_icon_exclaim,
+   k_gui_icon_exclaim_2d,
    k_gui_icon_board,
    k_gui_icon_world,
    k_gui_icon_rift,
    k_gui_icon_rift_run,
+   k_gui_icon_rift_run_2d,
    k_gui_icon_friend,
    k_gui_icon_player,
 
@@ -314,11 +317,14 @@ static void gui_init(void){
    mdl_load_metadata_block( &gui.model_icons, alloc );
 
    gui.icons[ k_gui_icon_tick ] = gui_find_icon( "icon_tick" );
+   gui.icons[ k_gui_icon_tick_2d ] = gui_find_icon( "icon_tick2d" );
    gui.icons[ k_gui_icon_exclaim ] = gui_find_icon( "icon_exclaim" );
+   gui.icons[ k_gui_icon_exclaim_2d ] = gui_find_icon( "icon_exclaim2d" );
    gui.icons[ k_gui_icon_board ] = gui_find_icon( "icon_board" );
    gui.icons[ k_gui_icon_world ] = gui_find_icon( "icon_world" );
    gui.icons[ k_gui_icon_rift ] = gui_find_icon( "icon_rift" );
    gui.icons[ k_gui_icon_rift_run ] = gui_find_icon( "icon_rift_run" );
+   gui.icons[ k_gui_icon_rift_run_2d ] = gui_find_icon( "icon_rift_run2d" );
    gui.icons[ k_gui_icon_friend ] = gui_find_icon( "icon_friend" );
    gui.icons[ k_gui_icon_player ] = gui_find_icon( "icon_player" );
 
diff --git a/input.h b/input.h
index b742119bb783c915cd1fc63b1c55256ccb36a683..d60fece386d84e14bfe963c832ea23719a9b4869 100644 (file)
--- a/input.h
+++ b/input.h
@@ -125,13 +125,13 @@ static vg_input_op *input_axis_list[] = {
 [k_sraxis_mbrowse_h] = (vg_input_op[]){
    vg_mode_sub, vg_keyboard, SDLK_LEFT,
    vg_mode_add, vg_keyboard, SDLK_RIGHT,
-   vg_mode_absmax, vg_joy_axis, SDL_CONTROLLER_AXIS_LEFTX,
+   vg_mode_add, vg_joy_axis, SDL_CONTROLLER_AXIS_LEFTX,
    vg_end
 },
 [k_sraxis_mbrowse_v] = (vg_input_op[]){
    vg_mode_add, vg_keyboard, SDLK_UP,
    vg_mode_sub, vg_keyboard, SDLK_DOWN,
-   vg_mode_absmax, vg_joy_axis, SDL_CONTROLLER_AXIS_LEFTY,
+   vg_mode_sub, vg_joy_axis, SDL_CONTROLLER_AXIS_LEFTY,
    vg_end
 },
 [k_sraxis_replay_h] = (vg_input_op[]){
index 4798e481c3e9ff36daebffea9e7a389c7a62ba69..9274c3f08d193bbf3fd803eb2381610689407a8e 100644 (file)
Binary files a/maps_src/dev_hub/main.mdl and b/maps_src/dev_hub/main.mdl differ
diff --git a/menu.h b/menu.h
index 3bbaf7c56ce1dcb859e20eab04a97b0a523c00cb..0a49777e14e4b1c740e2d59cb34b9ffa0259c3c7 100644 (file)
--- a/menu.h
+++ b/menu.h
@@ -247,9 +247,18 @@ static void menu_trigger_item( ent_menuitem *item ){
       }
 
       else if( MDL_CONST_PSTREQ( &menu.model, q, "reset" ) ){
+
+         /* FIXME: Should only be availible in CLIENT WORLD */
+
+         menu_close();
+         respawn_begin_chooser();
+         
+         /* FIXME: Need a back to hub button */
+#if 0
          srinput.state = k_input_state_resume;
          menu_close();
          ent_miniworld_goback();
+#endif
       }
 
       else if( MDL_CONST_PSTREQ( &menu.model, q, "credits" ) ){
index 45dbefe8f8a12c99d223efa5d66de5965d220838..8e48c54223358472e50d294a7c25dd3927db125b 100644 (file)
Binary files a/models_src/rs_icons.mdl and b/models_src/rs_icons.mdl differ
index b6d6a8533a202545b8c89046c05ea36168bcb527..7a2dff5c01e491967b9dc6a25f15208274643432 100644 (file)
--- a/player.c
+++ b/player.c
@@ -202,6 +202,7 @@ static void player__im_gui(void){
                                        [k_skaterift_replay]    = "replay",
                                        [k_skaterift_ent_focus] = "ent_focus",
                                        [k_skaterift_default]   = "default",
+                                       [k_skaterift_respawning]= "map"
                      } [skaterift.activity] );
    player__debugtext( 1, "time_rate: %.4f", skaterift.time_rate );
 
index 0e1dc67cd5979893e34e501453b4ba270cf7b978..b0235202244ef2f14bd151341db747a195cbec33 100644 (file)
--- a/respawn.c
+++ b/respawn.c
@@ -1,7 +1,7 @@
 #ifndef RESPAWN_C
 #define RESPAWN_C
 
-#if 0
+#if 1
 #include "respawn.h"
 #include "skaterift.h"
 #include "world.h"
@@ -89,6 +89,7 @@ static void respawn_chooser_pre_update(void){
    if( skaterift.activity != k_skaterift_respawning ) return;
 
    if( button_down( k_srbind_mback ) ){
+      gui_helper_clear();
       srinput.state = k_input_state_resume;
       skaterift.activity = k_skaterift_menu;
       menu.page = 0xffffffff;
@@ -107,24 +108,6 @@ static void respawn_chooser_pre_update(void){
       return;
    }
 
-   if( button_down( k_srbind_world_left ) ){
-      if( respawn_chooser.world_id > 0 )
-         respawn_chooser_setworld( respawn_chooser.world_id-1 );
-   }
-
-   if( button_down( k_srbind_world_right ) ){
-      u32 next = respawn_chooser.world_id+1;
-      if( next < vg_list_size(world_static.instances) )
-         respawn_chooser_setworld( next );
-   }
-
-   if( button_down(k_srbind_home) ){
-      respawn_chooser.home_select ++;
-      if( respawn_chooser.home_select >= vg_list_size(respawn_homes) )
-         respawn_chooser.home_select = 0;
-      respawn_chooser_gohome();
-   }
-
    world_instance *world = &world_static.instances[ respawn_chooser.world_id ];
    v3f *bbx = world->scene_geo.bbx;
    f32 *pos = respawn_chooser.plane_pos;
@@ -190,9 +173,9 @@ static void respawn_chooser_pre_update(void){
    for( u32 i=0; i<mdl_arrcount(&world->ent_challenge); i++ ){
       ent_challenge *challenge = mdl_arritm( &world->ent_challenge, i );
 
-      enum gui_icon icon = k_gui_icon_exclaim;
+      enum gui_icon icon = k_gui_icon_exclaim_2d;
       if( challenge->status )
-         icon = k_gui_icon_tick;
+         icon = k_gui_icon_tick_2d;
 
       respawn_map_draw_icon( cam, icon, challenge->transform.co );
    }
@@ -214,7 +197,7 @@ static void respawn_chooser_pre_update(void){
       v4_copy( route->colour, colour );
       v3_muls( colour, 1.6666f, colour );
       gui_icon_setcolour( colour );
-      respawn_map_draw_icon( cam, k_gui_icon_rift_run, 
+      respawn_map_draw_icon( cam, k_gui_icon_rift_run_2d
                              route->board_transform[3] );
    }
 }
@@ -236,14 +219,11 @@ static void respawn_begin_chooser(void){
    if( gui_new_helper( input_joy_list[k_srjoystick_steer], &text ) )
       vg_strcat( &text, "move" );
 
-   if( gui_new_helper( input_button_list[k_srbind_mleft], &text ) )
-      vg_strcat( &text, "world" );
-
    if( gui_new_helper( input_button_list[k_srbind_maccept], &text ) )
       vg_strcat( &text, "spawn" );
 
-   if( gui_new_helper( input_button_list[k_srbind_home], &text ) )
-      vg_strcat( &text, "home" );
+   if( gui_new_helper( input_button_list[k_srbind_mback], &text ) )
+      vg_strcat( &text, "exit" );
 }
 
 #if 0
index 60bf90d9c962cf25ac5f2e38f48bad2e7f398f27..2ab8d8daccdc5d92c54130bb4cb4d77d01a15858 100644 (file)
@@ -6,6 +6,7 @@ uniform vec4 uPlane;
 uniform vec4 uPlayerPos; /* w: distance to uSpawnPos */
 uniform vec4 uSpawnPos;  /* w: inverse distance to uPlayerPos */
 uniform bool uAlphatest;
+uniform float uIsoAmt;
 
 #include "common_scene.glsl"
 #include "motion_vectors_fs.glsl"
@@ -64,6 +65,15 @@ void main(){
    float d3 = distance(p0,aCo);
    emit += vec3(fract(t*0.2-g_realtime+d3*0.2)*max(0.0,1.0-d3*0.2));
 
-   oColour = vec4( vfrag+emit, 1.0 );
+   vfrag += emit;
+
+   if( uIsoAmt > 0.0 ){
+      float height = fract( aCo.y * 0.1 );
+      float lg = 2.0*length(vec2(dFdx(height), dFdy(height)));
+      vfrag *= 1.0f+(lg*0.4*uIsoAmt);
+   }
+
+
+   oColour = vec4( vfrag, 1.0 );
    //oColour = vec4( vfrag, 1.0 );
 }
index d9f7be05e25325da8fce29c083345347946d87ee..b457233fd5cc433a512c9bab719516deefcecc1d 100644 (file)
@@ -71,6 +71,7 @@ static struct vg_shader _shader_scene_override = {
 "uniform vec4 uPlayerPos; /* w: distance to uSpawnPos */\n"
 "uniform vec4 uSpawnPos;  /* w: inverse distance to uPlayerPos */\n"
 "uniform bool uAlphatest;\n"
+"uniform float uIsoAmt;\n"
 "\n"
 "#line       1        1 \n"
 "// :D\n"
@@ -439,7 +440,7 @@ static struct vg_shader _shader_scene_override = {
 "   return world_compute_lighting( diffuse, normal, co, compute_board_shadow() );\n"
 "}\n"
 "\n"
-"#line     11        0 \n"
+"#line     12        0 \n"
 "#line       1        2 \n"
 "const float k_motion_lerp_amount = 0.01;\n"
 "\n"
@@ -459,7 +460,7 @@ static struct vg_shader _shader_scene_override = {
 "   oMotionVec = (vmotion1-vmotion0) * (1.0/k_motion_lerp_amount);\n"
 "}\n"
 "\n"
-"#line     12        0 \n"
+"#line     13        0 \n"
 "\n"
 "vec2 smin( float a, float b, float k ){\n"
 "   float h = max( k-abs(a-b), 0.0 )/k;\n"
@@ -515,6 +516,12 @@ static struct vg_shader _shader_scene_override = {
 "   float d3 = distance(p0,aCo);\n"
 "   emit += vec3(fract(t*0.2-g_realtime+d3*0.2)*max(0.0,1.0-d3*0.2));\n"
 "\n"
+"   if( uIsoAmt > 0.0 ){\n"
+"      float height = fract( aCo.y * 0.1 );\n"
+"      float lg = 2.0*length(vec2(dFdx(height), dFdy(height)));\n"
+"      emit += vec3(lg*0.1*uIsoAmt);\n"
+"   }\n"
+"\n"
 "   oColour = vec4( vfrag+emit, 1.0 );\n"
 "   //oColour = vec4( vfrag, 1.0 );\n"
 "}\n"
@@ -532,6 +539,7 @@ static GLuint _uniform_scene_override_uPlane;
 static GLuint _uniform_scene_override_uPlayerPos;
 static GLuint _uniform_scene_override_uSpawnPos;
 static GLuint _uniform_scene_override_uAlphatest;
+static GLuint _uniform_scene_override_uIsoAmt;
 static GLuint _uniform_scene_override_g_world_depth;
 static GLuint _uniform_scene_override_uLightsArray;
 static GLuint _uniform_scene_override_uLightsIndex;
@@ -568,6 +576,9 @@ static void shader_scene_override_uSpawnPos(v4f v){
 static void shader_scene_override_uAlphatest(int b){
    glUniform1i(_uniform_scene_override_uAlphatest,b);
 }
+static void shader_scene_override_uIsoAmt(float f){
+   glUniform1f(_uniform_scene_override_uIsoAmt,f);
+}
 static void shader_scene_override_g_world_depth(int i){
    glUniform1i(_uniform_scene_override_g_world_depth,i);
 }
@@ -587,6 +598,7 @@ static void shader_scene_override_link(void){
    _uniform_scene_override_uPlayerPos = glGetUniformLocation( _shader_scene_override.id, "uPlayerPos" );
    _uniform_scene_override_uSpawnPos = glGetUniformLocation( _shader_scene_override.id, "uSpawnPos" );
    _uniform_scene_override_uAlphatest = glGetUniformLocation( _shader_scene_override.id, "uAlphatest" );
+   _uniform_scene_override_uIsoAmt = glGetUniformLocation( _shader_scene_override.id, "uIsoAmt" );
    _uniform_scene_override_g_world_depth = glGetUniformLocation( _shader_scene_override.id, "g_world_depth" );
    _uniform_scene_override_uLightsArray = glGetUniformLocation( _shader_scene_override.id, "uLightsArray" );
    _uniform_scene_override_uLightsIndex = glGetUniformLocation( _shader_scene_override.id, "uLightsIndex" );
index 011fa268c3b1e4494c7b1a95f513a90cf74b5799..7da7109f0afb0ff4952cd8629d73369fa091836a 100644 (file)
@@ -294,7 +294,8 @@ static void vg_pre_update(void){
 
    /* time rate */
    f32 target = 1;
-   if( skaterift.activity & (k_skaterift_replay|k_skaterift_menu) ){
+   if( skaterift.activity & (k_skaterift_replay|k_skaterift_menu|
+                             k_skaterift_respawning) ){
       target = 0;
    }
 
@@ -310,6 +311,7 @@ static void vg_pre_update(void){
 
    world_update( world_current_instance(), localplayer.rb.co );
    audio_ambient_sprites_update( world_current_instance(), localplayer.rb.co );
+   respawn_chooser_pre_update();
 }
 
 static void vg_fixed_update(void){
@@ -451,6 +453,34 @@ static void render_scene(void){
       }
    }
 
+   if( skaterift.activity == k_skaterift_respawning ){
+      world_instance *world = world_current_instance();
+      glDrawBuffers( 1, (GLenum[]){ GL_COLOR_ATTACHMENT0 } );
+      
+      v3f bg;
+      v3_muls( world->ub_lighting.g_daysky_colour,
+                  world->ub_lighting.g_day_phase - 
+                  world->ub_lighting.g_sunset_phase*0.1f, bg );
+
+      v3_muladds( bg, world->ub_lighting.g_sunset_colour,
+                  (1.0f-0.5f)*world->ub_lighting.g_sunset_phase, bg );
+
+      v3_muladds( bg, world->ub_lighting.g_nightsky_colour,
+                  (1.0f-world->ub_lighting.g_day_phase), bg );
+
+      glClearColor( bg[0], bg[1], bg[2], 0.0f );
+      glClear( GL_COLOR_BUFFER_BIT );
+      glDrawBuffers( 2, (GLenum[]){ GL_COLOR_ATTACHMENT0, 
+                                    GL_COLOR_ATTACHMENT1 } );
+
+      m4x3f identity;
+      m4x3_identity( identity );
+      render_world_override( world, world, identity, &skaterift.cam, 
+                             respawn_chooser.spawn, 1.0f );
+      render_world_routes( world, world, identity, &skaterift.cam, 0, 1 );
+      return;
+   }
+
    render_world( world_current_instance(), &skaterift.cam, 0, 0, 1, 1 );
 
    world_instance *holdout_world = NULL;
@@ -499,6 +529,12 @@ static void skaterift_composite_maincamera(void){
    skaterift.cam.nearz = 0.1f;
    skaterift.cam.farz  = 2100.0f;
 
+   if( skaterift.activity == k_skaterift_respawning ){
+      camera_copy( &respawn_chooser.cam, &skaterift.cam );
+      skaterift.cam.nearz = 4.0f;
+      skaterift.cam.farz = 3100.0f;
+   }
+
    if( global_miniworld.transition ){
       f32 dt = vg.time_frame_delta / 2.0f,
           s  = vg_signf( global_miniworld.transition );
@@ -533,7 +569,8 @@ static void render_main_game(void){
    skaterift_composite_maincamera();
 
    /* --------------------------------------------------------------------- */
-   render_world_cubemaps( world_current_instance() );
+   if( skaterift.activity != k_skaterift_respawning )
+      render_world_cubemaps( world_current_instance() );
 
    /* variable res target */
    render_fb_bind( gpipeline.fb_main, 1 );
@@ -552,7 +589,8 @@ static void render_main_game(void){
                                    portals */
 
    /* continue with variable rate */
-   if( !global_miniworld.transition ){
+   if( !global_miniworld.transition && 
+         (skaterift.activity != k_skaterift_respawning) ){
       render_fb_bind( gpipeline.fb_main, 1 );
       render_world_gates( world_current_instance(), &skaterift.cam );
    }
@@ -614,8 +652,14 @@ static void vg_gui(void){
    render_view_framebuffer_ui();
    remote_player_network_imgui( vg.pv );
 
-   remote_players_chat_imgui(); /* TODO: conditional */
-   remote_players_imgui_world( world_current_instance(), vg.pv, 100.0f, 1 );
+   if( skaterift.activity == k_skaterift_respawning ){
+      remote_players_imgui_world( world_current_instance(), vg.pv, 2000.0f, 0 );
+      remote_players_imgui_lobby();
+   }
+   else {
+      remote_players_chat_imgui(); /* TODO: conditional */
+      remote_players_imgui_world( world_current_instance(), vg.pv, 100.0f, 1 );
+   }
 }
 
 
index 4cfc8744f3151a8e2df65f4609b8e985a5b543b6..96b9b901cc30237051b6848eee94e7fd65dbe81a 100644 (file)
@@ -51,7 +51,7 @@ struct{
       k_skaterift_replay     = 0x01,
       k_skaterift_ent_focus  = 0x02,
       k_skaterift_menu       = 0x04,
-      k_skaterift_respawning_DELETED = 0x08,
+      k_skaterift_respawning = 0x08,
    }
    activity;
 
index 8d7e546c7aeb666e8b1eb23d0c8450d30a5b0b98..1546429235fe10b36e8643aa2132417a306dcc94 100644 (file)
@@ -960,7 +960,7 @@ static void render_world_override( world_instance *world,
                                    world_instance *lighting_source,
                                    m4x3f mmdl,
                                    camera *cam,
-                                   ent_spawn *dest_spawn ){
+                                   ent_spawn *dest_spawn, f32 iso_amt ){
    struct world_pass pass = {
       .cam = cam,
       .fn_bind_textures = bindpoint_override,
@@ -974,6 +974,7 @@ static void render_world_override( world_instance *world,
    shader_scene_override_uTexGarbage(0);
    shader_scene_override_uTexMain(1);
    shader_scene_override_uPv( pass.cam->mtx.pv );
+   shader_scene_override_uIsoAmt( iso_amt );
 
    WORLD_BIND_LIGHT_BUFFERS_UB0_TEX234( lighting_source, scene_override );
    bind_terrain_noise();
index b02116e1dd57cd9828be10f4ca21472c2731ddf5..402ca60082f94cc69c7436b82b7e8600a590f896 100644 (file)
@@ -84,7 +84,7 @@ static void render_world_override( world_instance *world,
                                    world_instance *lighting_source,
                                    m4x3f mmdl,
                                    camera *cam,
-                                   ent_spawn *dest_spawn );
+                                   ent_spawn *dest_spawn, f32 iso_amt );
 
 #define WORLD_BIND_LIGHT_BUFFERS_UB0_TEX234( WORLD, SHADER )            \
    world_link_lighting_ub( WORLD, _shader_##SHADER.id );                \