RayHit trace(inout Ray ray) { RayHit hit = createRayHit(); // floor intersectPlane(ray, hit, vec3(0.0,-1.5,0.0),vec3(0.0,1.0,0.0)); // spheres for (int i = 0; i < _activeSpheres; i++) { intersectSphere(ray, hit, _spheres[i]); } Sphere s; s.cr = vec4(0.0,0.0,0.0,INF*2.0); s.material = MAT_GLOW; s.albedo = vec3(1.0,1.0,1.0); intersectInsideOutSphere(ray, hit, s); //ray.distance += hit.material == MAT_CHROME // ? hit.distance * length(ray.energy) * float(hit.distance < INF) // : hit.distance * float(hit.distance < INF); //ray.distance += hit.distance * float(hit.distance < INF); ray.distance += hit.distance; //ray.distance = clamp(ray.distance, 0, INF); //ray.distance += hit.distance * length(ray.energy); return hit; }