示例#1
0
        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);
        }
示例#2
0
        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);
            }
        }