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(); }
public override void Advance(RayBuffer rayBuffer, IPathSamplerAggregator consumer, Action<PathSampler> onRestart) { }