public void Convert_ScreenPointToViewportPoint_ReturnsViewportVector3d(int screenX, int screenY, Vector3d expected) { var cameraConverter = new CameraConverter(_screenParameters, _viewportParameters); var viewportPoint = cameraConverter.ScreenToViewport(screenX, screenY); Assert.Equal(expected, viewportPoint); }
/// <summary> Renders the given scene. </summary> public IDrawing Render(Scene scene) { var drawing = new ImageSharpDrawing(_screenParameters.Width, _screenParameters.Height); var rayTracer = new RayTracer(scene, _renderParameters); Parallel.For(0, _screenParameters.Height, (y) => { for (var x = 0; x < _screenParameters.Width; ++x) { var direction = _viewportParameters.CameraRotation * _cameraConverter.ScreenToViewport(x, y); var ray = new Ray(_viewportParameters.CameraPosition, direction); var pixelColor = rayTracer.Trace(ray); drawing.SetPixel(x, y, pixelColor); } }); return(drawing); }