예제 #1
0
 public void traceRefractionPhoton(ShadingState previous, Ray r, Color power)
 {
     if (previous.getRefractionDepth() >= maxRefractionDepth)
         return;
     IntersectionState istate = previous.getIntersectionState();
     scene.trace(r, istate);
     if (previous.getIntersectionState().hit())
     {
         // create a new shading context
         ShadingState state = ShadingState.createRefractionBounceState(previous, r, 0);
         shadePhoton(state, power);
     }
 }
예제 #2
0
 public void store(ShadingState state, Vector3 dir, Color power, Color diffuse)
 {
     if (((state.getDiffuseDepth() == 0) && (state.getReflectionDepth() > 0 || state.getRefractionDepth() > 0)))
     {
         // this is a caustic photon
         Photon p = new Photon(state.getPoint(), dir, power);
         lock (lockObj)
         {
             storedPhotons++;
             photonList.Add(p);
             bounds.include(new Point3(p.x, p.y, p.z));
             maxPower = Math.Max(maxPower, power.getMax());
         }
     }
 }
예제 #3
0
 public Color traceRefraction(ShadingState previous, Ray r, int i)
 {
     // limit path depth and disable caustic paths
     if (previous.getRefractionDepth() >= maxRefractionDepth || previous.getDiffuseDepth() > 0)
         return Color.BLACK;
     IntersectionState istate = previous.getIntersectionState();
     istate.numRefractionRays++;
     scene.trace(r, istate);
     return istate.hit() ? shadeHit(ShadingState.createRefractionBounceState(previous, r, i)) : Color.BLACK;
 }
예제 #4
0
 public void store(ShadingState state, Vector3 dir, Color power, Color diffuse)
 {
     if (((state.getDiffuseDepth() == 0) && (state.getReflectionDepth() > 0 || state.getRefractionDepth() > 0)))
     {
         // this is a caustic photon
         Photon p = new Photon(state.getPoint(), dir, power);
         lock (lockObj)
         {
             storedPhotons++;
             photonList.Add(p);
             bounds.include(new Point3(p.x, p.y, p.z));
             maxPower = Math.Max(maxPower, power.getMax());
         }
     }
 }