/// <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(); }
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)); }