コード例 #1
0
        protected override void LoadContent()
        {
            _spriteBatch = new SpriteBatch(GraphicsDevice);

            _outputTexture = new Texture2D(_graphics.GraphicsDevice, width: CurrentScreenSize.Width, height: CurrentScreenSize.Height);
            _screenBuffer  = new ImageBuffer(CurrentScreenSize);

            _world  = TestScene.CreateTestWorld();
            _camera = TestScene.CreateCamera(_screenBuffer);

            Task.Factory.StartNew(RayTracingLoop, TaskCreationOptions.LongRunning);
            StartRenderingScene();
        }
コード例 #2
0
        static async Task Main(string[] args)
        {
            var image             = new ImageBuffer(1980, 1200);
            var cancelTokenSource = new CancellationTokenSource();

            using (var progress = new ProgressBar(image.Dimensions.Height, "Tracing image..."))
            {
                await Renderer.TraceSceneByRows(
                    TestScene.CreateCamera(image),
                    TestScene.CreateTestWorld(),
                    image.SetPixel,
                    maximumReflections : 5,
                    cancelTokenSource.Token,
                    () => progress.Tick());
            }

            image.Save("output.png");
        }