Exemplo n.º 1
0
        /// <summary>
        /// Manages a scene to be rendered and updated.
        /// </summary>
        /// <param name="camera">camera of the scene</param>
        /// <param name="objects">objects to be rendered</param>
        public Scene(Camera camera, params SceneObject[] objects)
        {
            if (camera == null)
            { throw new ArgumentNullException(); }

            this.Camera = camera;
            var list = new SceneObjectList();
            list.AddRange(objects);
            this.ObjectList = list;
            this.UIRoot = new UIRoot();
        }
Exemplo n.º 2
0
            public static PathtracingScene Scene(Scene.AccelerationStructure accelerationStructure = Raytracing.Scene.AccelerationStructure.None)
            {
                Material whiteMaterial     = new Material(Colour.White * 0.9f, Colour.Black, Colour.Black);
                var      cornellBoxSpheres = new List <ISceneObject> {
                    new Sphere(new Vector3(1001, 0, 0), 1000, new Material(Colour.Red * 0.9f, Colour.Black)),
                    new Sphere(new Vector3(-1001, 0, 0), 1000, new Material(Colour.Blue * 0.9f, Colour.Black)),
                    new Sphere(new Vector3(0, 0, 1001), 1000, whiteMaterial),
                    new Sphere(new Vector3(0, -1001, 0), 1000, whiteMaterial),
                    new Sphere(new Vector3(0, 1001, 0), 1000, whiteMaterial),
                    new Sphere(new Vector3(0, 0, -1005), 1000, whiteMaterial),
                    new Sphere(new Vector3(0.6f, 0.7f, -0.6f), 0.3f, new Material(Colour.Yellow * 0.9f, Colour.Black)),
                    new Sphere(new Vector3(-0.3f, 0.4f, 0.3f), 0.6f, new Material(Colour.LightCyan * 0.9f, Colour.Black, Colour.Black)),
                    new Sphere(new Vector3(0, -10.99f, 0), 10, new Material(Colour.Black, Colour.Black, Colour.White * 0.6f))
                };
                SceneObjectList sceneObjects = new SceneObjectList(cornellBoxSpheres);

                return(new PathtracingScene(sceneObjects));
            }