Ejemplo n.º 1
0
        public static void Run()
        {
            var scene = SeeSharp.Scene.LoadFromFile("../Data/Scenes/HomeOffice/office.json");

            scene.FrameBuffer = new SeeSharp.Image.FrameBuffer(640, 480, "test.exr",
                                                               SeeSharp.Image.FrameBuffer.Flags.SendToTev);
            scene.Prepare();

            var integrator = new ClassicBidir()
            {
                NumIterations          = 512,
                MaxDepth               = 3,
                RenderTechniquePyramid = true,
                BaseSeedCamera         = 971612, BaseSeedLight = 175037
            };

            integrator.PathLogger = new(640, 480);
            integrator.Render(scene);

            var paths = integrator.PathLogger.GetAllInPixel(150, 253, RgbColor.White * 0.1f);

            paths.AddRange(integrator.PathLogger.GetAllInPixel(148, 127, RgbColor.White * 100.0f));

            scene.FrameBuffer = new SeeSharp.Image.FrameBuffer(640, 480, "test-paths.exr",
                                                               SeeSharp.Image.FrameBuffer.Flags.SendToTev);
            new PathVisualizer()
            {
                Radius      = 0.0025f, HeadHeight = 0.005f,
                TypeToColor = new Dictionary <int, RgbColor> {
                    { 1, new RgbColor(0.9f, 0.01f, 0.01f) }
                },
                Paths    = paths,
                TotalSpp = 4
            }.Render(scene);
        }
        float NextEventWeight()
        {
            var computer = new ClassicBidir();

            computer.LightPaths           = new LightPathCache();
            computer.LightPaths.PathCache = dummyPath.pathCache;
            computer.NumLightPaths        = dummyPath.numLightPaths;

            var cameraPath = new CameraPath {
                Vertices  = new List <PathPdfPair>(dummyPath.cameraVertices[1..3]),