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