@@ -79,8 +79,6 @@ void init_fred_colors() {
7979int grid_colors_inited = 0 ;
8080color Fred_grid_bright;
8181color Fred_grid_dark;
82- color Fred_grid_bright_aa;
83- color Fred_grid_dark_aa;
8482
8583void draw_asteroid_field () {
8684 int i, j;
@@ -327,24 +325,13 @@ void FredRenderer::render_grid(grid* gridp) {
327325 if (!grid_colors_inited) {
328326 grid_colors_inited = 1 ;
329327
330- gr_init_alphacolor (&Fred_grid_dark_aa, 64 , 64 , 64 , 255 );
331- gr_init_alphacolor (&Fred_grid_bright_aa, 128 , 128 , 128 , 255 );
332328 gr_init_color (&Fred_grid_dark, 64 , 64 , 64 );
333329 gr_init_color (&Fred_grid_bright, 128 , 128 , 128 );
334330 }
335331
336332 ncols = gridp->ncols ;
337333 nrows = gridp->nrows ;
338- if (double_fine_gridlines) {
339- ncols *= 2 ;
340- nrows *= 2 ;
341- }
342-
343- if (view ().Aa_gridlines ) {
344- gr_set_color_fast (&Fred_grid_dark_aa);
345- } else {
346- gr_set_color_fast (&Fred_grid_dark);
347- }
334+ gr_set_color_fast (&Fred_grid_dark);
348335
349336 // Draw the column lines.
350337 for (i = 0 ; i <= ncols; i++) {
@@ -359,11 +346,7 @@ void FredRenderer::render_grid(grid* gridp) {
359346 nrows = gridp->nrows / 2 ;
360347
361348 // now draw the larger, brighter gridlines that is x10 the scale of smaller one.
362- if (view ().Aa_gridlines ) {
363- gr_set_color_fast (&Fred_grid_bright_aa);
364- } else {
365- gr_set_color_fast (&Fred_grid_bright);
366- }
349+ gr_set_color_fast (&Fred_grid_bright);
367350
368351 for (i = 0 ; i <= ncols; i++) {
369352 g3_draw_htl_line (&gridp->gpoints5 [i], &gridp->gpoints6 [i]);
@@ -905,6 +888,10 @@ void FredRenderer::render_one_model_htl(object* objp,
905888
906889 uint debug_flags = 0 ;
907890 if (view ().Show_dock_points ) {
891+ debug_flags |= MR_DEBUG_DOCK_POINTS ;
892+ }
893+
894+ if (view ().Show_bay_paths ) {
908895 debug_flags |= MR_DEBUG_BAY_PATHS ;
909896 }
910897
@@ -924,21 +911,27 @@ void FredRenderer::render_one_model_htl(object* objp,
924911 flags |= MR_FULL_DETAIL ;
925912 }
926913
914+ g3_done_instance (false );
915+
916+ // Outline pass: use a dedicated pass with MR_NO_POLYS so is_outlines_only_htl fires
917+ // in the renderer. Modern HTL models don't have outline_buffer, so relying on
918+ // MR_SHOW_OUTLINE_HTL alone (without MR_NO_POLYS) silently does nothing.
927919 if (Fred_outline) {
928- flags |= MR_SHOW_OUTLINE_HTL ;
920+ model_render_params outline_info;
921+ outline_info.set_color (Fred_outline >> 16 , (Fred_outline >> 8 ) & 0xff , Fred_outline & 0xff );
922+ outline_info.set_flags (flags | MR_SHOW_OUTLINE_HTL | MR_NO_POLYS | MR_NO_LIGHTING | MR_NO_TEXTURING );
923+ model_render_immediate (&outline_info, Ship_info[Ships[z].ship_info_index ].model_num , Ships[z].model_instance_num , &objp->orient , &objp->pos );
929924 }
930925
931- model_render_params render_info;
932- render_info.set_debug_flags (debug_flags);
933- render_info.set_color (Fred_outline >> 16 , (Fred_outline >> 8 ) & 0xff , Fred_outline & 0xff );
934- render_info.set_replacement_textures (model_get_instance (Ships[z].model_instance_num )->texture_replace );
935- render_info.set_flags (flags);
936-
937- g3_done_instance (0 );
938-
939- model_render_immediate (&render_info, Ship_info[Ships[z].ship_info_index ].model_num , Ships[z].model_instance_num , &objp->orient , &objp->pos );
926+ if (view ().Show_ship_models ) {
927+ model_render_params render_info;
928+ render_info.set_debug_flags (debug_flags);
929+ render_info.set_replacement_textures (model_get_instance (Ships[z].model_instance_num )->texture_replace );
930+ render_info.set_flags (flags);
931+ model_render_immediate (&render_info, Ship_info[Ships[z].ship_info_index ].model_num , Ships[z].model_instance_num , &objp->orient , &objp->pos );
932+ }
940933
941- if (view ().Draw_outline_at_warpin_position
934+ if (view ().Draw_outline_at_warpin_position
942935 && (Ships[z].arrival_cue != Locked_sexp_true || Ships[z].arrival_delay > 0 )
943936 && Ships[z].arrival_cue != Locked_sexp_false
944937 && !Ships[z].flags [Ship::Ship_Flags::No_arrival_warp])
@@ -951,9 +944,10 @@ void FredRenderer::render_one_model_htl(object* objp,
951944 vec3d warpin_pos;
952945 vm_vec_scale_add (&warpin_pos, &objp->pos , &objp->orient .vec .fvec , warpin_dist);
953946
954- render_info.set_color (65 , 65 , 65 ); // grey; see rgba_defaults
955- render_info.set_flags (flags | MR_SHOW_OUTLINE_HTL | MR_NO_LIGHTING | MR_NO_POLYS | MR_NO_TEXTURING );
956- model_render_immediate (&render_info, Ship_info[Ships[z].ship_info_index ].model_num , Ships[z].model_instance_num , &objp->orient , &warpin_pos);
947+ model_render_params warpin_info;
948+ warpin_info.set_color (65 , 65 , 65 ); // grey; see rgba_defaults
949+ warpin_info.set_flags (flags | MR_SHOW_OUTLINE_HTL | MR_NO_LIGHTING | MR_NO_POLYS | MR_NO_TEXTURING );
950+ model_render_immediate (&warpin_info, Ship_info[Ships[z].ship_info_index ].model_num , Ships[z].model_instance_num , &objp->orient , &warpin_pos);
957951 }
958952 }
959953 } else {
@@ -1146,10 +1140,8 @@ void FredRenderer::render_frame(int cur_object_index,
11461140 g3_draw_horizon_line ();
11471141 }
11481142
1149- if (view ().Show_asteroid_field ) {
1150- gr_set_color (192 , 96 , 16 );
1151- draw_asteroid_field ();
1152- }
1143+ gr_set_color (192 , 96 , 16 );
1144+ draw_asteroid_field ();
11531145
11541146 if (view ().Show_grid ) {
11551147 render_grid (_viewport->The_grid );
0 commit comments