oglc/shader/include/scene.glsl

30 lines
825 B
GLSL

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;
}