コード例 #1
0
        static void Main()
        {
            int    w      = 622;
            int    h      = 381;
            Canvas canvas = new Canvas(w, h);

            CancellationTokenSource source = new CancellationTokenSource();

            try
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                var form = new MainForm(canvas);

                SceneData scene     = new SceneData();
                CacheData cacheData = new CacheData(scene);

                // new Vec(-20, 5, 18);
                var camera = new PerspectiveCamera(new Vector(-22, 5, 25), new Vector(-3, 4, 0));
                //var camera = new OrtogonalCamera(new Vector(-22+10, 5+4, 25-10), new Vector(-3+10, 4+4, 0-10));

                List <Tracer> tracers = new List <Tracer>();
                for (int i = 0; i < 3; i++)
                {
                    var rayMarchings = new List <IRayMarching>()
                    {
                        //new RayMarchingScene(scene, 0.02f),
                        //new RayMarchingScene(scene, 0.04f),
                        //new RayMarchingScene(scene, 0.08f),
                        new RayMarchingCache(scene, cacheData, 0.02f),
                        new RayMarchingCache(scene, cacheData, 0.04f),
                        new RayMarchingCache(scene, cacheData, 0.08f),
                    };
                    tracers.Add(new Tracer(canvas, camera, rayMarchings, scene.lights, i));
                }

                AsyncRun(form, cacheData, tracers, source.Token);

                Application.Run(form);
            }
            finally
            {
                source.Cancel();
            }
        }
コード例 #2
0
 public CacheData(SceneData scene)
 {
     this.scene = scene;
 }