public override RenderThread CreateRenderThread(int threadIndex, IntersectionEngine intersectionDevice, RayEngineScene scene, 
     IImageFilm flm,IFrameManager manager, SamplingContext samplingContext)
 {
     if (this.film == null)
         film = flm;
     return new SpectralRenderThread(threadIndex, intersectionDevice, scene, samplingContext.LowLatency, this.film, samplingContext, manager,sceneManager);
 }
        protected void Init(IIntersectionEngine device, bool lowLatency, IImageFilm pixelDevice, ISampler sampler,
                            SurfaceSampler ss)
        {
            this.intersectionDevice = device;
            // Sample buffer
            var sampleBufferSize = lowLatency ? (this.SAMPLE_BUFFER_SIZE / 4) : this.SAMPLE_BUFFER_SIZE;
            this.sampleBuffer = new SampleBuffer(sampleBufferSize);

            this.width = sampler.Width;
            this.height = sampler.Height;
            var rayBufferSize = lowLatency ? (RayBuffer.RayBufferSize / 8) : RayBuffer.RayBufferSize;
            this.sampler = sampler;
            this._pathRayProcessors = new PathBufferBase[DeviceRenderBufferCount];
            this.rayBuffers = new RayBuffer[DeviceRenderBufferCount];
            this.pixelDevice = pixelDevice;
            for (int i = 0; i < DeviceRenderBufferCount; i++)
            {
                this.rayBuffers[i] = new RayBuffer(rayBufferSize);
                this.rayBuffers[i].UserData = this.threadIndex;

                this._pathRayProcessors[i] = this.CreatePathBuffer(this.scene.MaxPaths, this.scene, pixelDevice, sampler, ss);
                this._pathRayProcessors[i].ThreadId = this.threadIndex;
            }

            this.renderThread = null;
        }
Esempio n. 3
0
 public override RenderThread CreateRenderThread(int threadIndex, IntersectionEngine intersectionDevice,
                                                 RayEngineScene scene, IImageFilm film, IFrameManager frameManager, SamplingContext samplingContext)
 {
     if (this.Context == null)
     {
         Context = new PhotonMappingContext() { Film = film, surfaceSampler = (SurfaceSampler)samplingContext.SurfaceSampler };
     }
     return new PhotonMappingRenderThread(threadIndex, intersectionDevice, scene, LowLatencySampling, film, Context, samplingContext ,frameManager);
 }
 protected DeviceRenderThreadBase(int index,
                                  IIntersectionEngine device,
                                  RayEngineScene scn,
                                  bool lowLatency,
                                  IImageFilm pixelDevice,
                                  ISampler sampler, SurfaceSampler ss)
     : base(index, scn)
 {
     this.Init(device, lowLatency, pixelDevice, sampler, ss);
 }
Esempio n. 5
0
        public void OpenFrame(FrameDescription frameDescription)
        {
            this.config = frameDescription;
            if (GlobalConfiguration.Instance.AdaptiveFilm)
                this.film = new AdaptiveImageFilm(this.Width, this.Height);
            else 
                this.film = new ImageFilm(this.Width, this.Height);
            this.integrator = 
                //new PathTracerIntegrator()
                //new PathTracerDL()
                //new RayTracer()
                new SpectralRayTracer()

                //new SingleRandomWavelengthPathTracerIntegrator()
                //new WavelengthClusterPathTracerIntegrator()
            {
                Scene = new SceneManager() { w = this.Width, h = this.Height },
                film = this.film,
                rnd = new FastRandom()
            };
        }
 public override Core.Threads.RenderThread CreateRenderThread(int threadIndex, Core.Devices.IntersectionEngine intersectionDevice, RayEngineScene scene, IImageFilm film, Managers.IFrameManager manager, Core.SamplingContext samplingContext)
 {
     return new DeviceRenderThread<PathBuffer<AptPathSampler>>(threadIndex, intersectionDevice, scene,
         GlobalConfiguration.Instance.LowLatency, film, samplingContext, manager);
 }
 public override RenderThread CreateRenderThread(int threadIndex, IntersectionEngine intersectionDevice, RayEngineScene scene, IImageFilm film, IFrameManager frameManager, SamplingContext samplingContext)
 {
     return new DeviceRenderThread<PathBuffer<VolumePathTracerPath>> (threadIndex, intersectionDevice, scene, LowLatencySampling, film, samplingContext, frameManager);
 }
Esempio n. 8
0
 public void SetFilm(IImageFilm f)
 {
     this.film = f;
 }
 public override RenderThread CreateRenderThread(int threadIndex, IntersectionEngine intersectionDevice, RayEngineScene scene, IImageFilm film, IFrameManager manager, SamplingContext samplingContext)
 {
     return new DeviceRenderThread(threadIndex, intersectionDevice, scene, this.LowLatencySampling, film, samplingContext, manager);
 }
 public override RenderThread CreateRenderThread(int threadIndex, IntersectionEngine intersectionDevice, RayEngineScene scene,
                                                 IImageFilm film, IFrameManager manager, SamplingContext samplingContext)
 {
     return new DeviceRenderThread<PathBuffer<UnidirectionalSpectralPathSampler>>(threadIndex, intersectionDevice, scene,
                                                             LowLatencySampling, film, samplingContext, manager);
 }
Esempio n. 11
0
 public abstract RenderThread CreateRenderThread(int threadIndex, IntersectionEngine intersectionDevice, RayEngineScene scene, IImageFilm film, IFrameManager manager, SamplingContext samplingContext);
Esempio n. 12
0
 protected abstract PathBufferBase CreatePathBuffer(int maxPath, IRayEngineScene scene, IImageFilm pixelDevice,
                                                    ISampler sampler, SurfaceSampler ss);
Esempio n. 13
0
 public void SetDevices(DevicesManager dev, IImageFilm flm)
 {
     this.devices = dev;
     this.film = flm;
     this.RenderThreadsCount = this.devices.RenderThreads.Length;
 }
Esempio n. 14
0
 protected override PathBufferBase CreatePathBuffer(int maxPath, IRayEngineScene scene, IImageFilm pixelDevice, ISampler sampler, SurfaceSampler ss)
 {
     var pathBuffer = new  PPMPathBuffer(context);
     pathBuffer.Init(maxPath, (RayEngineScene)scene, pixelDevice, new SamplingContext() { SurfaceSampler = ss, PrimarySpaceSampler = sampler, LightSampler = new LightSampler((RayEngineScene)scene)});
     return pathBuffer;
 }
Esempio n. 15
0
 public PPMDeviceRenderThread(int index, IIntersectionEngine device, RayEngineScene scn, bool lowLatency, IImageFilm pixelDevice, ISampler sampler, SurfaceSampler ss, PPMContext ctx, IFrameManager frameManager)
     : base(index, scn)
 {
     this.context = ctx;
     Init(device, lowLatency, pixelDevice, sampler, ss);
 }