public override bool FillRayBuffer(RayBuffer rayBuffer)
 {
     var leftSpace = rayBuffer.LeftSpace();
     if (((PathState == PathTracerPathState.EyeVertex) && (1 > leftSpace)) ||
     ((PathState == PathTracerPathState.ShadowRaysOnly) && (tracedShadowRayCount > leftSpace)) ||
     ((PathState == PathTracerPathState.NextVertex) && (tracedShadowRayCount + 1 > leftSpace)))
         return false;
     if (PathState != PathTracerPathState.ShadowRaysOnly)
         RayIndex = rayBuffer.AddRay(ref PathRay);
     if (PathState == PathTracerPathState.NextVertex || PathState == PathTracerPathState.ShadowRaysOnly)
     {
         for (int i = 0; i < tracedShadowRayCount; ++i)
             secRays[i].currentShadowRayIndex = rayBuffer.AddRay(ref secRays[i].shadowRay);
     }
     return true;
 }
Exemple #2
0
 public override bool FillRayBuffer(RayBuffer rayBuffer)
 {
     var leftSpace = rayBuffer.LeftSpace();
     if (leftSpace < MaxRaysPerPath)
         return false;
     RayIndex = rayBuffer.AddRay(ref PathRay);
     return true;
 }
Exemple #3
0
        public virtual bool FillRayBuffer(RayBuffer rayBuffer)
        {
            var leftSpace = rayBuffer.LeftSpace();
            if (leftSpace < 1)
                return false;

            RayIndex = rayBuffer.AddRay(ref PathRay);

            return true;
        }
Exemple #4
0
 public override bool FillRayBuffer(RayBuffer rayBuffer)
 {
     var leftSpace = rayBuffer.LeftSpace();
     if((1 > leftSpace))
     {
         return false;
     }
     RayIndex = rayBuffer.AddRay(PathRay);
     return true;
 }
Exemple #5
0
 public override bool FillRayBuffer(RayBuffer rayBuffer) {
     var leftSpace = rayBuffer.LeftSpace();
     if (((PathState == PathTracerPathState.EyeVertex) && (1 > leftSpace)) ||
     ((PathState == PathTracerPathState.ShadowRaysOnly) && (tracedShadowRayCount > leftSpace)) ||
     ((PathState == PathTracerPathState.NextVertex) && (tracedShadowRayCount + 1 > leftSpace)))
         return false;
     if (PathState != PathTracerPathState.ShadowRaysOnly)
         RayIndex = rayBuffer.AddRay(PathRay);
     return true;
 }
 public override bool FillRayBuffer(RayBuffer rayBuffer)
 {
     var leftSpace = rayBuffer.LeftSpace();
     if (((this.PathState == GenericPathSamplerState.Initialized) && (1 > leftSpace)) ||
         ((PathState == GenericPathSamplerState.Connection) && (tracedShadowRayCount > leftSpace)) ||
         ((this.PathState == GenericPathSamplerState.Sampling) && (1 > leftSpace)))
         return false;
     if (PathState == GenericPathSamplerState.Connection)
     {
         for (int i = 0; i < tracedShadowRayCount; ++i)
             connections[i].CurrentShadowRayIndex = rayBuffer.AddRay(connections[i].Ray);
     }
     else
     {
         RayIndex = rayBuffer.AddRay(PathRay);
     }
     return true;
 }
 public override bool FillRayBuffer(RayBuffer rayBuffer)
 {
     var leftSpace = rayBuffer.LeftSpace();
     if (((State == RayTracerPathState.Eye) && (1 > leftSpace)) ||
     ((State == RayTracerPathState.OnlyShadow) && (tracedShadowRayCount > leftSpace)) ||
     ((State == RayTracerPathState.Reflection || State == RayTracerPathState.Refraction) && (tracedShadowRayCount + 1 > leftSpace)))
         return false;
     if (State != RayTracerPathState.OnlyShadow)
         RayIndex = rayBuffer.AddRay(ref PathRay);
     if (State == RayTracerPathState.Reflection || State == RayTracerPathState.Refraction || State == RayTracerPathState.OnlyShadow)
     {
         for (int i = 0; i < tracedShadowRayCount; ++i)
             secRays[i].ShadowRayIndex = rayBuffer.AddRay(ref secRays[i].ShadowRay);
     }
     return true;
 }
Exemple #8
0
 public override bool FillRayBuffer(RayBuffer rayBuffer)
 {
     var leftSpace = rayBuffer.LeftSpace();
     if (((PathState == BDPTSamplerState.InitPath) && (2 > leftSpace)) ||
     ((PathState == BDPTSamplerState.ConnectOnly) && (tracedConnectRayCount > leftSpace)) ||
     ((PathState == BDPTSamplerState.PropagatePath) && (tracedConnectRayCount + 2 > leftSpace)))
         return false;
     if (PathState != BDPTSamplerState.ConnectOnly)
     {
         RayIndex = rayBuffer.AddRay(ref PathRay);
         LightRayIndex = rayBuffer.AddRay(ref LightRay);
     }
     if (PathState == BDPTSamplerState.PropagatePath || PathState == BDPTSamplerState.ConnectOnly)
     {
         for (int i = 0; i < tracedConnectRayCount; ++i)
             connectRays[i].ConnectRayIndex = rayBuffer.AddRay(ref connectRays[i].ConnectRay);
     }
     return true;
 }