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(); }
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"); }