public virtual void Initialize() { this.IntersectionDevice = new DadeCudaIntersectionDevice(Scene, null); //new MCOpenClIntersectionDevice(Scene, lowLatency, 0); this.engine = EngineFactory.CreateEngine(engineType, Scene, lowLatency); this.Film = (ImageFilmBase)engine.CreateFilm(width, height); var renderThreadsCount = Math.Min(engine.MaxThreadCount, this.RenderThreadsCount); this.RenderThreads = new RenderThread[renderThreadsCount]; int ht = height / renderThreadsCount; var samplingContext = new SamplingContext() { LightSampler = new LightSampler(Scene), SurfaceSampler = new SurfaceSampler(Scene) }; for (int i = 0; i < renderThreadsCount; i++) { var sampler = engine.CreateSampler(width, height, Scene.MaxPathDepth, i, ht*i, ht); samplingContext.PrimarySpaceSampler = sampler; RenderThreads[i] = engine.CreateRenderThread(i, IntersectionDevice, Scene, Film, new StillFrameManager(), samplingContext); } Tracer.TraceLine("Starting {0}", engineType); }
public virtual void Initialize() { this.engine = EngineFactory.CreateEngine(engineType, Scene, lowLatency); this.ImageMeasurement = config.Get("AdaptiveFilm", false); this.Film = FilmFactory.CreateFilm(width, height, this.ImageMeasurement); //this.Film = new CudaFilm(width, height); SamplerFactory.Instance.SetFilm(this.Film); this.deviceManager = new DevicesManager(Scene, engine) { SingleFilm = this.SingleFilm }; this.frameManager = new FrameManager(this.OutputSettings, this.QualitySettings, Scene); this.deviceManager.Initialize(this.RenderThreadsCount, width, height, frameManager); this.frameManager.SetDevices(deviceManager, Film); //this.frameManager.OnFrameReady += (fm) => // { // this.frameManager // }; Tracer.TraceLine("Starting [{0}] ( Preprocessing : {1} )", engineType, engine.PreprocessRequired); Tracer.TraceLine("..Sampler Type [{0}]", deviceManager.RenderThreads.First().sampler.GetType().Name); Tracer.TraceLine("..Image Film Type [{0}]", Film.GetType().Name); if (engine.PreprocessRequired) { engine.Preprocess(Scene, deviceManager.IntersectionDevice); } }