Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        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));
            }
        }
Esempio n. 5
0
        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));
 }