Example #1
0
        public Window()
        {
            InitializeComponent();
            Raytracer raytracer = new Raytracer();

            Scene scene = new Scene();

            scene.SetTest();
            pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            Bitmap   bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            Graphics g      = Graphics.FromImage(bitmap);
            DateTime t      = DateTime.Now;

            pictureBox1.Image = bitmap;

            raytracer.RayTraceScene(g, bitmap, scene);
            pictureBox1.Image = bitmap;
        }
Example #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Initializing Raytracer...");
            int    width = 1200, height = 800, frames = 24;
            float  length = 1.0f;
            string fname  = "out";

            if (args.Length > 1)
            {
                try
                {
                    width  = int.Parse(args[0]);
                    height = int.Parse(args[1]);
                    if (args.Length > 2)
                    {
                        frames = int.Parse(args[2]);
                    }
                    if (args.Length > 3)
                    {
                        if (frames > 1)
                        {
                            length = float.Parse(args[3]);
                        }
                        else
                        {
                            fname = args[3];
                        }
                    }
                    if (args.Length > 4)
                    {
                        fname = args[4];
                    }
                }
                catch
                {
                    foreach (string s in args)
                    {
                        System.Console.WriteLine(s);
                    }
                    width  = 600;
                    height = 400;
                    length = 1.0f;
                    frames = 24;
                    System.Console.WriteLine("Error parsing command line args");
                    System.Console.WriteLine("correct format 'dotnet run [<width> <height> [<frames>] [<output file name>]]'");
                    System.Console.WriteLine("...continuing using default width/height...");
                }
            }
            Raytracer raytracer = new Raytracer(width, height);
            var       watch     = System.Diagnostics.Stopwatch.StartNew();

            if (frames > 1)
            {
                raytracer.RenderAnimation(filename: fname, frames: frames, length: length);
            }
            else
            {
                System.Console.WriteLine("Rendering single image...");
                raytracer.Render(fname + ".png", samples: 1);
            }
            watch.Stop();
            var time = watch.Elapsed;

            Console.WriteLine("Done!");
            Console.WriteLine("Rendered in: " + time.PrettyPrint());
        }