@ -142,7 +142,7 @@ static void ui_draw_lane_line(UIState *s, const model_path_vertices_data *pvd, N
static void update_track_data ( UIState * s , bool is_mpc , track_vertices_data * pvd ) {
static void update_track_data ( UIState * s , bool is_mpc , track_vertices_data * pvd ) {
const UIScene * scene = & s - > scene ;
const UIScene * scene = & s - > scene ;
const PathData path = scene - > model . path ;
const float * points = scene - > path_points ;
const float * mpc_x_coords = & scene - > mpc_x [ 0 ] ;
const float * mpc_x_coords = & scene - > mpc_x [ 0 ] ;
const float * mpc_y_coords = & scene - > mpc_y [ 0 ] ;
const float * mpc_y_coords = & scene - > mpc_y [ 0 ] ;
@ -150,6 +150,7 @@ static void update_track_data(UIState *s, bool is_mpc, track_vertices_data *pvd)
float lead_d = scene - > lead_data [ 0 ] . getDRel ( ) * 2. ;
float lead_d = scene - > lead_data [ 0 ] . getDRel ( ) * 2. ;
float path_height = is_mpc ? ( lead_d > 5. ) ? fmin ( lead_d , 25. ) - fmin ( lead_d * 0.35 , 10. ) : 20.
float path_height = is_mpc ? ( lead_d > 5. ) ? fmin ( lead_d , 25. ) - fmin ( lead_d * 0.35 , 10. ) : 20.
: ( lead_d > 0. ) ? fmin ( lead_d , 50. ) - fmin ( lead_d * 0.35 , 10. ) : 49. ;
: ( lead_d > 0. ) ? fmin ( lead_d , 50. ) - fmin ( lead_d * 0.35 , 10. ) : 49. ;
path_height = fmin ( path_height , scene - > model . getPath ( ) . getValidLen ( ) ) ;
pvd - > cnt = 0 ;
pvd - > cnt = 0 ;
// left side up
// left side up
for ( int i = 0 ; i < = path_height ; i + + ) {
for ( int i = 0 ; i < = path_height ; i + + ) {
@ -160,7 +161,7 @@ static void update_track_data(UIState *s, bool is_mpc, track_vertices_data *pvd)
py = mpc_y_coords [ i ] - off ;
py = mpc_y_coords [ i ] - off ;
} else {
} else {
px = lerp ( i + 1.0 , i , i / 100.0 ) ;
px = lerp ( i + 1.0 , i , i / 100.0 ) ;
py = path . p oints [ i ] - off ;
py = points [ i ] - off ;
}
}
vec4 p_car_space = ( vec4 ) { { px , py , 0. , 1. } } ;
vec4 p_car_space = ( vec4 ) { { px , py , 0. , 1. } } ;
@ -182,7 +183,7 @@ static void update_track_data(UIState *s, bool is_mpc, track_vertices_data *pvd)
py = mpc_y_coords [ i ] + off ;
py = mpc_y_coords [ i ] + off ;
} else {
} else {
px = lerp ( i + 1.0 , i , i / 100.0 ) ;
px = lerp ( i + 1.0 , i , i / 100.0 ) ;
py = path . p oints [ i ] + off ;
py = points [ i ] + off ;
}
}
vec4 p_car_space = ( vec4 ) { { px , py , 0. , 1. } } ;
vec4 p_car_space = ( vec4 ) { { px , py , 0. , 1. } } ;
@ -207,7 +208,6 @@ static void update_all_track_data(UIState *s) {
}
}
}
}
static void ui_draw_track ( UIState * s , bool is_mpc , track_vertices_data * pvd ) {
static void ui_draw_track ( UIState * s , bool is_mpc , track_vertices_data * pvd ) {
if ( pvd - > cnt = = 0 ) return ;
if ( pvd - > cnt = = 0 ) return ;
@ -302,13 +302,12 @@ static void update_lane_line_data(UIState *s, const float *points, float off, mo
}
}
}
}
static void update_all_lane_lines_data ( UIState * s , const PathData & path , model_path_vertices_data * pstart ) {
static void update_all_lane_lines_data ( UIState * s , const cereal : : ModelData : : PathData : : Reader & path , const float * points , model_path_vertices_data * pstart ) {
update_lane_line_data ( s , path . points , 0.025 * path . prob , pstart , path . validLen ) ;
update_lane_line_data ( s , points , 0.025 * path . getProb ( ) , pstart , path . getValidLen ( ) ) ;
float var = fmin ( path . std , 0.7 ) ;
update_lane_line_data ( s , points , fmin ( path . getStd ( ) , 0.7 ) , pstart + 1 , path . getValidLen ( ) ) ;
update_lane_line_data ( s , path . points , var , pstart + 1 , path . validLen ) ;
}
}
static void ui_draw_lane ( UIState * s , const PathData * path , model_path_vertices_data * pstart , NVGcolor color ) {
static void ui_draw_lane ( UIState * s , model_path_vertices_data * pstart , NVGcolor color ) {
ui_draw_lane_line ( s , pstart , color ) ;
ui_draw_lane_line ( s , pstart , color ) ;
color . a / = 25 ;
color . a / = 25 ;
ui_draw_lane_line ( s , pstart + 1 , color ) ;
ui_draw_lane_line ( s , pstart + 1 , color ) ;
@ -318,20 +317,18 @@ static void ui_draw_vision_lanes(UIState *s) {
const UIScene * scene = & s - > scene ;
const UIScene * scene = & s - > scene ;
model_path_vertices_data * pvd = & s - > model_path_vertices [ 0 ] ;
model_path_vertices_data * pvd = & s - > model_path_vertices [ 0 ] ;
if ( s - > sm - > updated ( " model " ) ) {
if ( s - > sm - > updated ( " model " ) ) {
update_all_lane_lines_data ( s , scene - > model . left_lane , pvd ) ;
update_all_lane_lines_data ( s , scene - > model . getLeftLane ( ) , scene - > left_lane_points , pvd ) ;
update_all_lane_lines_data ( s , scene - > model . right_lane , pvd + MODEL_LANE_PATH_CNT ) ;
update_all_lane_lines_data ( s , scene - > model . getRightLane ( ) , scene - > right_lane_points , pvd + MODEL_LANE_PATH_CNT ) ;
}
}
// Draw left lane edge
// Draw left lane edge
ui_draw_lane (
ui_draw_lane (
s , & scene - > model . left_lane ,
s , pvd ,
pvd ,
nvgRGBAf ( 1.0 , 1.0 , 1.0 , scene - > model . getLeftLane ( ) . getProb ( ) ) ) ;
nvgRGBAf ( 1.0 , 1.0 , 1.0 , scene - > model . left_lane . prob ) ) ;
// Draw right lane edge
// Draw right lane edge
ui_draw_lane (
ui_draw_lane (
s , & scene - > model . right_lane ,
s , pvd + MODEL_LANE_PATH_CNT ,
pvd + MODEL_LANE_PATH_CNT ,
nvgRGBAf ( 1.0 , 1.0 , 1.0 , scene - > model . getRightLane ( ) . getProb ( ) ) ) ;
nvgRGBAf ( 1.0 , 1.0 , 1.0 , scene - > model . right_lane . prob ) ) ;
if ( s - > sm - > updated ( " radarState " ) ) {
if ( s - > sm - > updated ( " radarState " ) ) {
update_all_track_data ( s ) ;
update_all_track_data ( s ) ;