static void Main(string[] args) { var scene = new Scene { AmbientLight = new AmbientLight { Color = Color.FromColor4(Color4.Black) } }; scene.AddModel(new Cylinder(5) { Position = new Vector3(-5f, 0.5f, -1), Scale = 1, Rotation = new Vector3(1.15f, 0, 3.14f / 2), Material = new Diffuse(Color.FromColor4(Color4.Firebrick)) }); Camera camera = new LensCamera(new Vector3(0, 0, 8), 0.1f, 8f); scene.AddModel(new Cylinder(2) { Position = new Vector3(5f, 0.5f, 0), Scale = 1, Material = new Diffuse(Color.FromColor4(Color4.Chocolate)) }); scene.AddModel(new Sphere { Position = new Vector3(-1, 0.5f, -0.5f), Scale = 1, Material = new Diffuse(Color.FromColor4(Color4.Orange)) }); scene.AddModel(new Sphere { Position = new Vector3(0, 5.5f, 0), Scale = 1, Material = new Emissive(Color.FromColor4(Color4.White) * 10) }); scene.AddModel(new Sphere { Position = new Vector3(-2.5f, 0.5f, 1), Scale = 1, Material = new Reflective(Color.FromColor4(Color4.Azure), 0.1f) }); var matteGlass = new MasterMaterial(); matteGlass.Diffuse.Albedo = new SolidColor(Color.FromColor4(Color4.White)); matteGlass.Reflective.Albedo = new SolidColor(Color.FromColor4(Color4.White)); matteGlass.Refractive.Albedo = new SolidColor(Color.FromColor4(Color4.White)); matteGlass.Refractive.RefractiveIndex = 1.5f; matteGlass.Parts = (0, 2, 4, 4); scene.AddModel(new Sphere { Position = new Vector3(2.5f, 0.5f, 1), Scale = 1, Material = matteGlass }); scene.AddModel(new Plane { Position = new Vector3(0, -0.5f, 0), Scale = 1, Material = new Diffuse(Color.FromColor4(Color4.ForestGreen)) }); scene.AddModel(new Sphere { Position = new Vector3(5f, 0.5f, 1.5f), Scale = 1, Material = new Diffuse(new Texture("earthmap.jpg", false)) }); scene.AddModel(new Cuboid { Position = new Vector3(1.0f, 0.5f, -1.5f), Rotation = new Vector3(-0, 2f, 0), Material = new Diffuse(Color.FromColor4(Color4.Crimson)) }); scene.AddModel(new Sphere { Position = new Vector3(0f, 0.0f, 3.5f), Scale = 0.5f, Material = new Refractive(Color.FromColor4(Color4.White), 1.333f) }); var rayTracer = new FileRayTracer("RenderedScene.png", 10, 64, Vec2Sampling.Jittered, 1280); rayTracer.Render(scene, camera); Console.WriteLine("done"); }
private void lensCameraRadioButton_CheckedChanged(object sender, EventArgs e) { if (lensCameraRadioButton.Checked) { lensCameraLayoutPanel.Visible = true; var previous = _controller.Camera; var newCamera = new LensCamera(previous.Position); _controller.Camera = newCamera; lensRadiusUpDown.Value = (decimal)newCamera.LensRadius; focusDistanceUpDown.Value = (decimal)newCamera.FocusDistance; autoFocusCheckBox.Checked = newCamera.AutoFocus; UpdateCamera(previous, newCamera); } }