Exemple #1
0
Vec3d RayTracer::trace(double x, double y)
{
    // Clear out the ray cache in the scene for debugging purposes,
    if (TraceUI::m_debug) scene->intersectCache.clear();
    ray r(Vec3d(0,0,0), Vec3d(0,0,0), ray::VISIBILITY);
    scene->getCamera().rayThrough(x,y,r);
    Vec3d ret = traceRay(r, traceUI->getDepth());
    ret.clamp();
    return ret;
}
// Trace a top-level ray through normalized window coordinates (x,y)
// through the projection plane, and out into the scene.  All we do is
// enter the main ray-tracing method, getting things started by plugging
// in an initial ray weight of (0.0,0.0,0.0) and an initial recursion depth of 0.
Vec3d RayTracer::trace( double x, double y )
{
	// Clear out the ray cache in the scene for debugging purposes,
	if (!traceUI->isMultithreading())
		scene->intersectCache.clear();

    ray r( Vec3d(0,0,0), Vec3d(0,0,0), ray::VISIBILITY );

    scene->getCamera().rayThrough( x,y,r );
	Vec3d ret = traceRay( r, Vec3d(1.0,1.0,1.0), 0 );
	ret.clamp();
	return ret;
}