Example #1
0
        public void OpenFrame(Frame frame) {
            this.config = frame;

            width = frame.Get<int>("ImageWidth");
            height = frame.Get<int>("ImageHeight");

            Directory.SetCurrentDirectory(frame.WorkingDir);
            foreach (var frameElement in frame.Elements.Where(frameElement => frameParsers.ContainsKey(frameElement.GetType()))) {
                frameParsers[frameElement.GetType()](frameElement);
            }

            if (Scene == null) {
                Scene = new RayEngineScene(scene, new DefaultMaterialContainer(new MaterialInfo(), mats), lights.ToArray()) {
                    DefaultLightGain = frame.Get("LightGain", new RgbSpectrum(1.75f)),
                    MaxPathDepth = frame.Get("MaxPathDepth", 15),
                    RussianRuletteImportanceCap = frame.Get("RRImportanceCap", 0.75f),
                    MaxPaths = frame.Get("PathBufferSize", 65536),
                    ShadowRayCount = frame.Get("ShadowRayCount", 1),
                    EnvironmentMap = envMap,
                    Camera = this.Camera,
                    AreaLightAsMesh = this.AreaLightAsMeshLight,
                    MatLib = new MaterialLibrary()
                };
                if (scene.Cameras != null) {
                    this.Scene.Cameras =
                        scene.Cameras.Select(
                            cameraItem =>
                            new BasicPerspectiveCamera(cameraItem.Position, cameraItem.Direction, cameraItem.Up, width,
                                                       height) {Fov = cameraItem.Fov}).Cast<ICamera>().ToList();
                }
                Scene.MatLib.Populate(this.mats);
                RenderThreadsCount = 1;
                Scene.VolumeIntegrator = new SingleScatteringIntegrator(new AABB(new Vector(-4f), new Vector(4f)),0.5f, 0.25f, RgbSpectrum.UnitSpectrum()*0.65f, RgbSpectrum.Black );
            }
            Film = new PMFilm(width, height);
                //new ImageFilm(width, height);

            this.Initialize();

        }
Example #2
0
 public override void Advance(RayBuffer rayBuffer, IPathSamplerAggregator consumer, Action<PathSampler> onRestart) {
 }