public Color traceReflection(ShadingState previous, Ray r, int i) { // limit path depth and disable caustic paths if (previous.getReflectionDepth() >= maxReflectionDepth || previous.getDiffuseDepth() > 0) { return(Color.BLACK); } IntersectionState istate = previous.getIntersectionState(); scene.trace(r, istate); return(istate.hit() ? shadeHit(ShadingState.createReflectionBounceState(previous, r, i)) : Color.BLACK); }
public void traceReflectionPhoton(ShadingState previous, Ray r, Color power) { if (previous.getReflectionDepth() >= maxReflectionDepth) { return; } IntersectionState istate = previous.getIntersectionState(); scene.trace(r, istate); if (previous.getIntersectionState().hit()) { // create a new shading context ShadingState state = ShadingState.createReflectionBounceState(previous, r, 0); shadePhoton(state, power); } }