public RGBScene() : base(ambient: RGBColor.FromRGB(0.15)) { int n = 3; float r = 0.2f; var lightMaterials = new List <Material>() { Materials.RedLight, Materials.GreenLight, Materials.BlueLight }; foreach (var material in lightMaterials) { material.Intensity = 2.0; } for (int i = 0; i < n; i++) { var theta = 2.0 * Math.PI * i / n + Math.PI / 2; (var x, var y) = (r * Math.Cos(theta), r *Math.Sin(theta)); AddShape(new Circle(new Vector2(x, y), radius: 0.15, lightMaterials[i])); } n = 12; r = 0.65f; for (int i = 0; i < n; i++) { var theta = 2.0 * Math.PI * i / n + Math.PI / 2; var material = Materials.Default; material.DiffuseColor = RGBColor.FromRGB(0.5); (var x, var y) = (r * Math.Cos(theta), r *Math.Sin(theta)); AddShape(new Circle(new Vector2(x, y), radius: 0.025, material)); } }
public SingleShapeScene() : base(ambient: RGBColor.FromRGB(0.15)) { // var circle = new Circle(new Vector2(0), 0.5, Materials.WhiteLight); // AddShape(circle); // var rectangle = new Rectangle(new Vector2(0), new Vector2(0.5), Materials.WhiteLight); // AddShape(rectangle); var triangle = new Triangle(new Vector2(0), 0.5, Materials.WhiteLight); AddShape(triangle); }
public ReflectionScene() : base(ambient: RGBColor.FromRGB(0.15)) { var lightMaterial = Materials.WhiteLight; lightMaterial.Intensity = 2; AddShape(new Circle(new Vector2(-0.5, 0.5), 0.2, lightMaterial)); var material = Materials.Default; AddShape(new Rectangle(new Vector2(-0.3, -0.5), new Vector2(0.2), material)); AddShape(new Rectangle(new Vector2(0.5, -0.3), new Vector2(0.3), material)); }
public HelloWorldScene() : base(ambient: RGBColor.FromRGB(0.15)) { AddShape(new Circle(new Vector2(0), 0.15, Materials.WhiteLight)); int n = 6; float r = 0.5f; for (float i = 0; i < 6; i++) { var theta = 2.0 * Math.PI * i / n; (var x, var y) = (r * Math.Cos(theta), r *Math.Sin(theta)); AddShape(new Circle(new Vector2(x, y), radius: 0.08, Materials.Default)); } }
private void RenderNormalMap(Camera camera, Scene scene) { var film = new Film(camera.DevicePixelWidth, camera.DevicePixelHeight); for (int x = 0; x < camera.DevicePixelWidth; x++) { for (int y = 0; y < camera.DevicePixelHeight; y++) { var uv = camera.GetUV(x, y); var normal = scene.NormalAtPoint(uv); film.SetPixel(x, y, RGBColor.FromRGB(normal.X, normal.Y, 0)); } } film.SaveToFile("images/normal.png"); }
public MandelbrotScene() : base(ambient: RGBColor.FromRGB(0)) { AddShape(new Mandelbrot(new Vector2(-0.5, 0), 2.0, Materials.WhiteLight)); }