Browse Source

Fix camera culling by accounting for near cull plane in minimum distance calculation

main
cinnaboot 5 months ago
parent
commit
24dee13e42
  1. 5
      src/renderer.cpp

5
src/renderer.cpp

@ -27,6 +27,7 @@
#define MIN_DISTANCE_BODY_RADIUS_MULT 2.75f #define MIN_DISTANCE_BODY_RADIUS_MULT 2.75f
#define MIN_DISTANCE_SPACECRAFT_DEFAULT 0.5f #define MIN_DISTANCE_SPACECRAFT_DEFAULT 0.5f
#define MIN_DISTANCE_SPACECRAFT_PARENT_RADIUS_MULT 0.1f #define MIN_DISTANCE_SPACECRAFT_PARENT_RADIUS_MULT 0.1f
#define CAMERA_NEAR_CULL_DISTANCE 0.05f
// Zoom direction enumeration for improved readability // Zoom direction enumeration for improved readability
enum ZoomDirection { enum ZoomDirection {
@ -254,7 +255,9 @@ static float get_target_min_distance(RenderState* render_state, SimulationState*
return CAMERA_MIN_DISTANCE; return CAMERA_MIN_DISTANCE;
} }
return target_radius * MIN_DISTANCE_BODY_RADIUS_MULT; float radius_based_dist = target_radius * MIN_DISTANCE_BODY_RADIUS_MULT;
float cull_based_dist = target_radius + CAMERA_NEAR_CULL_DISTANCE + 0.001f;
return (radius_based_dist > cull_based_dist) ? radius_based_dist : cull_based_dist;
} }
static void zoom_camera(RenderState* render_state, SimulationState* sim, ZoomDirection zoom_dir) { static void zoom_camera(RenderState* render_state, SimulationState* sim, ZoomDirection zoom_dir) {

Loading…
Cancel
Save