Example #1
0
            public static Scene Scene(Scene.AccelerationStructure accelerationStructure = Raytracing.Scene.AccelerationStructure.BVH)
            {
                int n = 20;
                List <ISceneObject> sceneObjects = new List <ISceneObject>();
                Random random = new Random();

                for (int k = 0; k < 3; k++)
                {
                    for (int i = 0; i < n; i++)
                    {
                        for (int j = 0; j < n; j++)
                        {
                            Vector3  diffuse  = random.NextVector3();
                            Vector3  specular = new Vector3(0.1f, 0.1f, 0.1f);
                            Material material = new Material(diffuse, specular);
                            Vector3  position = new Vector3((6f / n) * i - 2f, (6f / n) * j - 2f, k * 0.5f - 0.5f);
                            float    r        = (6f / n) * (0.95f / 2);

                            sceneObjects.Add(new Sphere(position, r, material));
                        }
                    }
                }
                sceneObjects.Add(new Sphere(new Vector3(0, 0, 1003f), 1000, new Material(Colour.White, new Vector3(0.1f, 0.1f, 0.1f))));

                LightSource[] lightSources = new LightSource[] {
                    new LightSource(new Vector3(-1, -1, -2), Colour.White)
                };

                return(new Scene(sceneObjects, lightSources, accelerationStructure));
            }
Example #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));
            }