// Requirements: // #define MAX_STEPS 100 // #define MAX_DIST 100. // GetDist: (vec3 position) => float // GetDist should return the closest object point distance from position (in the whole scene) /** * Ray Marching algorithm * Please take a look at: https://www.youtube.com/watch?v=PGtv-dBi2wE&t=1367s * This function return the distance reached by the ray: * - If dist=MAX_STEPS) // We move the ray: vec3 ray_position = ray_origin + ray_direction*dist_origin; // We find the next closest point: float closest_point = GetDist(ray_position); // Increase the ray distance dist_origin += closest_point; // Check if we went to far or we are too close from a point (we hit a surface) if(dist_origin>MAX_DIST || closest_point