void build12() { int ns = 256; world.ViewPlane.HRes = 400; world.ViewPlane.VRes = 400; world.ViewPlane.SetSampler(new Regular(ns)); world.ViewPlane.MaxDepth = 10; world.Tracer = new Whitted(world); AmbientOccluder occ = new AmbientOccluder(); occ.RadianceScale = 1.0f; occ.MinAmount = 0f; occ.Shadows = true; occ.Color = Vector3.One; occ.SetSampler(new MultiJittered(ns)); world.AmbientLight = occ; Pinhole cam = new Pinhole(); cam.Position = new Vector3(10, 20, 40); cam.Target = new Vector3(0, 0, 0); cam.Distance = 200; cam.Zoom = 3f; world.Camera = cam; Matte matte2 = new Matte(0.75f, 0.5f, new Vector3(1, 1, 1)); matte2.Shadows = true; Plane p = new Plane(Vector3.Zero, new Vector3(0, 1, 0)); p.Shadows = true; p.SetMaterial(matte2); world.Objects.Add(p); Transparent smatte2 = new Transparent(); smatte2.SetIndexOfRefraction(1.37896f); smatte2.SetReflectiveRC(0.1f); smatte2.SetExp(2000); smatte2.SetTransmissionCoefficient(0.9f); smatte2.SetSpecularColor(new Vector3(1)); smatte2.SetSpecularRC(0.5f); Sphere s = new Sphere(new Vector3(0, 7, 0), 5); s.SetMaterial(smatte2); world.Objects.Add(s); Matte stage_m = new Matte(0.5f, 0.5f, new Vector3(1, 0, 0)); PointLight light = new PointLight(); light.Color = Vector3.One; light.Position = new Vector3(12, 12, 12); light.RadianceScale = 1.0f; world.Lights.Add(light); Matte wall_m = new Matte(0.75f, 0.75f, new Vector3(1)); Box b = getbox(new Vector3(-20, 5, 0), new Vector3(2, 50, 50)); b.SetMaterial(wall_m); Box b2 = getbox(new Vector3(0, 5, -20), new Vector3(50, 50, 2)); b2.SetMaterial(wall_m); world.Objects.Add(b2); world.Objects.Add(b); Box stage = getbox(new Vector3(0, 1, 0), new Vector3(5, 2, 5)); stage.SetMaterial(stage_m); world.Objects.Add(stage); }
void build10() { int ns = 49; world.ViewPlane.HRes = 800; world.ViewPlane.VRes = 700; world.ViewPlane.SetSampler(new Regular(ns)); world.ViewPlane.MaxDepth = 10; world.Tracer = new Whitted(world); AmbientOccluder occ = new AmbientOccluder(); occ.RadianceScale = 1.0f; occ.MinAmount = 0f; occ.Shadows = true; occ.Color = Vector3.One; occ.SetSampler(new MultiJittered(ns)); world.AmbientLight = occ; Pinhole cam = new Pinhole(); cam.Position = new Vector3(40, 30, 20); cam.Target = new Vector3(0, 0, 0); cam.Distance = 5000; cam.Zoom = 1.5f; world.Camera = cam; Sphere ss = new Sphere(new Vector3(2f, 0.5f, 1f), 0.5f); ss.Shadows = true; ss.SetMaterial(new Matte(0.25f, 0.5f, new Vector3(1f, 1f, 1f)) { Shadows = true }); world.Objects.Add(ss); Matte matte = new Matte(0.25f, 0.5f, new Vector3(0.5f, 0, 0.5f)); matte.Shadows = true; Box s = new Box(new Vector3(0, 0, 1), new Vector3(1, 1, 2)); s.Shadows = true; s.SetMaterial(matte); world.Objects.Add(s); Matte m2 = new Matte(0.25f, 0, new Vector3(1, 1, 0)); m2.Shadows = true; Box b2 = new Box(new Vector3(1, 1, 0), new Vector3(2, 2, 1)); b2.SetMaterial(m2); b2.Shadows = true; //world.Objects.Add(b2); Matte matte2 = new Matte(0.75f, 0.5f, new Vector3(1, 1, 1)); matte2.Shadows = true; Plane p = new Plane(Vector3.Zero, new Vector3(0, 1, 0)); p.Shadows = true; p.SetMaterial(matte2); world.Objects.Add(p); Matte m5 = new Matte(0.75f, 0.1f, new Vector3(0, 0.5f, 1)); m5.Shadows = true; Annulus an = new Annulus(new Vector3(1, 1.2f, 0), Vector3.Up, 0.4f, 0.2f); an.SetMaterial(m5); an.Shadows = true; world.Objects.Add(an); Matte m6 = new Matte(0.75f, 0.1f, new Vector3(1, 0, 0.4f)); m6.Shadows = true; SolidCylinder sc = new SolidCylinder(0, 1, 0.5f); sc.Shadows = true; sc.SetMaterial(m6); world.Objects.Add(sc); PointLight pl = new PointLight(); pl.Color = Vector3.One; pl.Position = new Vector3(4, 4, 0); pl.RadianceScale = 1.0f; pl.Shadows = true; world.Lights.Add(pl); float exp = 2000; Transparent sphere_material = new Transparent(); sphere_material.SetSpecularRC(0.5f); sphere_material.SetExp(exp); sphere_material.SetIndexOfRefraction(1.5f); sphere_material.SetReflectiveRC(0.1f); sphere_material.SetTransmissionCoefficient(0.9f); Sphere sph = new Sphere(new Vector3(2f, 0.5f, 0f), 0.5f); sph.SetMaterial(sphere_material); world.Objects.Add(sph); Reflective smatte2 = new Reflective(); smatte2.SetAmbientRC(0.25f); smatte2.SetDiffuseRC(0.5f); smatte2.SetRColor(new Vector3(1)); smatte2.SetSpecularRC(0.15f); smatte2.SetExp(100); smatte2.SetReflectiveRC(0.75f); smatte2.SetCD(new Vector3(1)); Sphere sphere = new Sphere(new Vector3(0, 2, 0), 0.4f); sphere.SetMaterial(smatte2); world.Objects.Add(sphere); }
void build11() { int ns = 100; world.ViewPlane.HRes = 600; world.ViewPlane.VRes = 600; world.ViewPlane.SetSampler(new Regular(ns)); world.ViewPlane.MaxDepth = 10; world.Tracer = new Whitted(world); AmbientOccluder occ = new AmbientOccluder(); occ.RadianceScale = 1.0f; occ.MinAmount = 0f; occ.Shadows = true; occ.Color = Vector3.One; occ.SetSampler(new Regular(ns)); world.AmbientLight = occ; Pinhole cam = new Pinhole(); cam.Position = new Vector3(-6, 6, 45); cam.Target = new Vector3(0, 0, 0); cam.Distance = 5000; cam.Zoom = 1.7f; world.Camera = cam; Matte plane_material = new Matte(0.9f, 0.9f, Vector3.One); XRectangle pl = new XRectangle(new Vector3(-2.5f, 0, -2.5f), new Vector3(0, 0, 5), new Vector3(5, 0, 0), Vector3.Up); //Plane pl = new Plane(new Vector3(0), Vector3.Up); pl.SetMaterial(plane_material); world.Objects.Add(pl); PointLight light = new PointLight(); light.Color = Vector3.One; light.Position = new Vector3(-3, 3, 0); light.RadianceScale = 2.0f; float refl = 0.18f; float spec = 0.8f; float amb = 0.5f; float diff = 1f; float exp = 100; Group tree = new Group(); world.Lights.Add(light); { ImageTexture im = new ImageTexture(); Disque.Raytracer.Textures.Image imm = Extensions.CreateFromBitmap(@"C:\Users\Belal\Downloads\Earth_Diffuse_2.jpg"); im.SetImage(imm); im.SetMapping(new SphericalMap()); SV_Phong sphere_m = new SV_Phong(); sphere_m.SetCD(im); sphere_m.SetSpecularColor(im); sphere_m.SetExp(40); sphere_m.SetSpecularRC(0.2f); sphere_m.SetDiffuseRC(0.6f); sphere_m.SetAmbientRC(0.25f); Sphere sphere = new Sphere(new Vector3(0, 0f, 0), 1f); Instance ins = new Instance(sphere); ins.SetMaterial(sphere_m); ins.RotateY(MathHelper.ToRadians(90)); ins.Scale(new Vector3(0.4f)); ins.Translate(new Vector3(0, 0.4f, 0.5f)); world.Objects.Add(ins); } { Reflective smatte2 = new Reflective(); smatte2.SetAmbientRC(amb); smatte2.SetDiffuseRC(diff); smatte2.SetCD(new Vector3(1, 0.77f, 0.77f)); smatte2.SetRColor(new Vector3(1, 0.77f, 0.77f)); smatte2.SetSpecularRC(spec); smatte2.SetExp(exp); smatte2.SetReflectiveRC(refl); Sphere s = new Sphere(new Vector3(-0.8f, 0.45f, 0.1f), 0.45f); s.SetMaterial(smatte2); tree.AddObject(s); //world.Objects.Add(s); } { Reflective smatte2 = new Reflective(); smatte2.SetAmbientRC(amb); smatte2.SetDiffuseRC(diff); smatte2.SetCD(new Vector3(0.92f, 0.74f, 1)); smatte2.SetRColor(new Vector3(0.92f, 0.74f, 1)); smatte2.SetSpecularRC(spec); smatte2.SetExp(exp); smatte2.SetReflectiveRC(refl); Sphere s = new Sphere(new Vector3(0.7f, 0.4f, 1.5f), 0.4f); s.SetMaterial(smatte2); tree.AddObject(s); //world.Objects.Add(s); } { Reflective smatte2 = new Reflective(); smatte2.SetAmbientRC(amb); smatte2.SetDiffuseRC(diff); smatte2.SetCD(new Vector3(0.62f, 0f, 0.7f)); smatte2.SetRColor(new Vector3(0.62f, 0f, 0.7f)); smatte2.SetSpecularRC(spec); smatte2.SetExp(exp); smatte2.SetReflectiveRC(refl); Sphere s = new Sphere(new Vector3(-0.7f, 0.2f, 1.5f), 0.2f); s.SetMaterial(smatte2); tree.AddObject(s); //world.Objects.Add(s); } world.Objects.Add(tree); }
void build8() { int ns = 256; world.ViewPlane.HRes = 400; world.ViewPlane.VRes = 400; world.ViewPlane.MaxDepth = 1; world.ViewPlane.SetSamples(ns); world.Tracer = new Whitted(world); AmbientOccluder occ = new AmbientOccluder(); occ.RadianceScale = 1.0f; occ.MinAmount = 0f; occ.Shadows = true; occ.Color = Vector3.One; occ.SetSampler(new MultiJittered(ns)); world.AmbientLight = occ; Pinhole cam = new Pinhole(); cam.Position = new Vector3(40, 30, 20); cam.Target = new Vector3(0, 0, 0); cam.Distance = 5000; cam.Zoom = 1; world.Camera = cam; Reflective matte2 = new Reflective(); matte2.SetAmbientRC(0.001f); matte2.SetDiffuseRC(0.5f); matte2.SetRColor(new Vector3(1)); matte2.SetSpecularRC(0); matte2.SetExp(100); matte2.SetReflectiveRC(0.5f); matte2.SetCD(new Vector3(1)); Sphere ss = new Sphere(new Vector3(2f, 0.5f, 1f), 0.5f); ss.Shadows = true; ss.SetMaterial(matte2); world.Objects.Add(ss); Matte matte = new Matte(0.25f, 0.5f, new Vector3(0.5f, 0, 0.5f)); matte.Shadows = true; Box s = new Box(new Vector3(0, 0, 1), new Vector3(1, 1, 2)); s.Shadows = true; s.SetMaterial(matte); world.Objects.Add(s); Matte m2 = new Matte(0.25f, 0, new Vector3(1, 1, 0)); m2.Shadows = true; Box b2 = new Box(new Vector3(1, 1, 0), new Vector3(2, 2, 1)); b2.SetMaterial(m2); b2.Shadows = true; //world.Objects.Add(b2); Plane p = new Plane(Vector3.Zero, new Vector3(0, 1, 0)); p.Shadows = true; p.SetMaterial(new Matte(0.25f, 0.5f, new Vector3(1f, 1f, 1f)) { Shadows = true }); world.Objects.Add(p); Matte m3 = new Matte(1, 1, Vector3.One); m3.Shadows = true; Disk d = new Disk(new Vector3(0f, 1.6f, 1), new Vector3(1, 1, 1), 0.5f); d.SetMaterial(m3); d.Shadows = true; world.Objects.Add(d); Matte m5 = new Matte(0.75f, 0.1f, new Vector3(0, 0.5f, 1)); m5.Shadows = true; Annulus an = new Annulus(new Vector3(1, 1.2f, 0), Vector3.Up, 0.4f, 0.2f); an.SetMaterial(m5); an.Shadows = true; world.Objects.Add(an); Matte m6 = new Matte(0.75f, 0.1f, new Vector3(1, 0, 0.4f)); m6.Shadows = true; SolidCylinder sc = new SolidCylinder(0, 1, 0.5f); sc.Shadows = true; sc.SetMaterial(m6); world.Objects.Add(sc); PointLight pl = new PointLight(); pl.Color = Vector3.One; pl.Position = new Vector3(0, 4, 0); pl.RadianceScale = 1.0f; pl.Shadows = true; world.Lights.Add(pl); }
void build9() { int ns = 256; world.ViewPlane.HRes = 400; world.ViewPlane.VRes = 400; world.ViewPlane.MaxDepth = 20; world.ViewPlane.SetSampler(new Hammersley(ns)); world.Tracer = new Whitted(world); AmbientOccluder occ = new AmbientOccluder(); occ.RadianceScale = 1.0f; occ.MinAmount = 0f; occ.Shadows = true; occ.Color = Vector3.One; occ.SetSampler(new Jittered(ns)); world.AmbientLight = occ; Pinhole cam = new Pinhole(); cam.Position = new Vector3(10, 10, 10); cam.Target = new Vector3(0, 0, 0); cam.Distance = 5000; cam.Zoom = 1f; world.Camera = cam; Matte floor_material = new Matte(0.75f, 0.25f, Vector3.One); Plane floor = new Plane(Vector3.Zero, Vector3.Up); floor.SetMaterial(floor_material); world.Objects.Add(floor); Reflective matte2 = new Reflective(); matte2.SetAmbientRC(0.25f); matte2.SetDiffuseRC(0.5f); matte2.SetRColor(new Vector3(1)); matte2.SetSpecularRC(0.15f); matte2.SetExp(100); matte2.SetReflectiveRC(0.75f); matte2.SetCD(new Vector3(1)); Box wall1 = new Box(Vector3.Zero, new Vector3(0.5f, 0.5f, 0.1f)); Box wall2 = new Box(Vector3.Zero, new Vector3(0.1f, 0.5f, 0.5f)); wall2.SetMaterial(matte2); wall1.SetMaterial(matte2); float exp = 2000; Transparent sphere_material = new Transparent(); sphere_material.SetSpecularRC(0.5f); sphere_material.SetExp(exp); sphere_material.SetIndexOfRefraction(1.5f); sphere_material.SetTransmissionCoefficient(0.1f); sphere_material.SetTransmissionCoefficient(0.9f); Sphere s = new Sphere(new Vector3(0.3f, 0.1f, 0.3f), 0.1f); s.SetMaterial(sphere_material); world.Objects.Add(s); world.Objects.Add(wall1); world.Objects.Add(wall2); PointLight pl = new PointLight(); pl.RadianceScale = 1.0f; pl.Color = Vector3.One; pl.Position = new Vector3(0, 8, 0); world.Lights.Add(pl); }
void build6() { try { int ns = 121; world.ViewPlane.HRes = 400; world.ViewPlane.VRes = 400; world.ViewPlane.SetSamples(ns); world.Tracer = new AreaLighting(world); AmbientOccluder occ = new AmbientOccluder(); occ.RadianceScale = 1.0f; occ.MinAmount = 0f; occ.Shadows = true; occ.Color = Vector3.One; occ.SetSampler(new MultiJittered(ns)); world.AmbientLight = occ; Pinhole cam = new Pinhole(); cam.Position = new Vector3(40, 30, 20); cam.Target = new Vector3(0, 0, 0); cam.Distance = 5000; cam.Zoom = 1; world.Camera = cam; Sphere ss = new Sphere(new Vector3(2f, 0.5f, 1f), 0.5f); ss.Shadows = true; ss.SetMaterial(new Matte(0.25f, 0.5f, new Vector3(1f, 1f, 1f)) { Shadows = true }); world.Objects.Add(ss); Matte matte = new Matte(0.25f, 0.5f, new Vector3(0.5f, 0, 0.5f)); matte.Shadows = true; Box s = new Box(new Vector3(0, 0, 1), new Vector3(1, 1, 2)); s.Shadows = true; s.SetMaterial(matte); world.Objects.Add(s); Matte m2 = new Matte(0.25f, 0, new Vector3(1, 1, 0)); m2.Shadows = true; Box b2 = new Box(new Vector3(1, 1, 0), new Vector3(2, 2, 1)); b2.SetMaterial(m2); b2.Shadows = true; //world.Objects.Add(b2); Matte matte2 = new Matte(0.75f, 0.5f, new Vector3(1, 1, 1)); matte2.Shadows = true; Plane p = new Plane(Vector3.Zero, new Vector3(0, 1, 0)); p.Shadows = true; p.SetMaterial(matte2); world.Objects.Add(p); Matte m3 = new Matte(0.25f, 0.5f, new Vector3(0.2f, 0.7f, 0.3f)); m3.Shadows = true; Disk d = new Disk(new Vector3(0f, 1.6f, 1), new Vector3(1), 0.5f); d.SetMaterial(m3); d.Shadows = true; world.Objects.Add(d); Matte m5 = new Matte(0.75f, 0.1f, new Vector3(0, 0.5f, 1)); m5.Shadows = true; Annulus an = new Annulus(new Vector3(1, 1.2f, 0), Vector3.Up, 0.4f, 0.2f); an.SetMaterial(m5); an.Shadows = true; world.Objects.Add(an); Matte m6 = new Matte(0.75f, 0.1f, new Vector3(1, 0, 0.4f)); m6.Shadows = true; Instance sc = new Instance(new SolidCylinder(0, 1, 0.5f)); sc.Shadows = true; sc.SetMaterial(m6); world.Objects.Add(sc); Matte mcone = new Matte(0.45f, 1, new Vector3(0.1f, 0, 0.4f)); Instance cone = new Instance(new SolidCone(0.5f, 1)); cone.Shadows = true; cone.SetMaterial(mcone); cone.Translate(new Vector3(0, 1.5f, -0.5f)); world.Objects.Add(cone); PointLight pl = new PointLight(); pl.Color = Vector3.One; pl.Position = new Vector3(0, 4, 0); pl.RadianceScale = 1.0f; pl.Shadows = true; world.Lights.Add(pl); } catch (Exception e) { MessageBox.Show(e.StackTrace); MessageBox.Show(e.TargetSite.ToString()); throw new Exception("yup"); } }
void build7() { int ns = 121; world.ViewPlane.HRes = 400; world.ViewPlane.VRes = 400; world.ViewPlane.SetSamples(ns); world.Tracer = new AreaLighting(world); AmbientOccluder occ = new AmbientOccluder(); occ.RadianceScale = 1.0f; occ.MinAmount = 0f; occ.Shadows = true; occ.Color = Vector3.One; occ.SetSampler(new MultiJittered(ns)); world.AmbientLight = occ; Pinhole cam = new Pinhole(); cam.Position = new Vector3(0, 50, 0); cam.Target = new Vector3(0, 0, 0); cam.Zoom = 2; cam.Distance = 500; world.Camera = cam; var grid = new SimpleBVHTree(GroupingMethod.DistanceM, 40); for (int i = 0; i < 1000; i++) { float rad = MathHelper.RandomFloat(0, 0.25f); Sphere ss = new Sphere(new Vector3(MathHelper.RandomFloat(-10, 10), rad, MathHelper.RandomFloat(-10, 10)), rad); ss.Shadows = true; ss.SetMaterial(new Matte(0.25f, 0.5f, new Vector3(MathHelper.RandomFloat(0, 1), MathHelper.RandomFloat(0, 1), MathHelper.RandomFloat(0, 1))) { Shadows = true }); grid.AddObject(ss); } grid.PrepareObjects(); world.Objects.Add(grid); Matte matte2 = new Matte(0.75f, 0.5f, new Vector3(1, 1, 1)); matte2.Shadows = true; Plane p = new Plane(Vector3.Zero, new Vector3(0, 1, 0)); p.Shadows = true; p.SetMaterial(matte2); world.Objects.Add(p); PointLight pl = new PointLight(); pl.Color = Vector3.One; pl.Position = new Vector3(0, 4, 0); pl.RadianceScale = 1.0f; pl.Shadows = true; world.Lights.Add(pl); }
void build4() { int ns = 256; world.ViewPlane.HRes = world.ViewPlane.VRes = 400; world.ViewPlane.SetSamples(ns); world.Tracer = new RayCast(world); AmbientOccluder occ = new AmbientOccluder(); occ.RadianceScale = 1.0f; occ.MinAmount = 0f; occ.Shadows = true; occ.Color = Vector3.One; occ.SetSampler(new MultiJittered(ns)); world.AmbientLight = occ; Pinhole cam = new Pinhole(); cam.Position = new Vector3(25, 20, 45); cam.Target = new Vector3(0, 1, 0); cam.Distance = 5000; world.Camera = cam; Matte matte = new Matte(0.25f, 0f, new Vector3(0.5f, 0, 0.5f)); matte.Shadows = true; Sphere s = new Sphere(new Vector3(0, 1, 0), 1); s.Shadows = true; s.SetMaterial(matte); world.Objects.Add(s); Matte matte2 = new Matte(0.75f, 0f, new Vector3(1, 1, 1)); matte2.Shadows = true; Plane p = new Plane(Vector3.Zero, new Vector3(0, 1, 0)); p.Shadows = true; p.SetMaterial(matte2); world.Objects.Add(p); }
void build1() { world.ViewPlane = new ViewPlane(); world.ViewPlane.S = 0.5f; world.ViewPlane.HRes = world.ViewPlane.VRes = 400; world.ViewPlane.SetSamples(36); Ambient ambient_ptr = new Ambient(); ambient_ptr.RadianceScale = (1.0f); world.AmbientLight = (ambient_ptr); world.Background = new Vector3(); // default color - this can be left out world.Tracer = new RayCast(world); Pinhole pinhole_ptr = new Pinhole(); pinhole_ptr.Position = new Vector3(0, 500, 500); pinhole_ptr.Target = new Vector3(0, 25, 0); pinhole_ptr.Distance = (600.0f); world.Camera = (pinhole_ptr); PointLight light_ptr1 = new PointLight(); light_ptr1.Shadows = true; light_ptr1.Position = new Vector3(0, 100, 0); light_ptr1.Color = new Vector3(1, 1, 1); light_ptr1.RadianceScale = (3.0f); world.Lights.Add(light_ptr1); Vector3 yellow = new Vector3(1, 1, 0); // yellow Vector3 brown = new Vector3(0.71f, 0.40f, 0.16f); // brown Vector3 darkGreen = new Vector3(0.0f, 0.41f, 0.41f); // darkGreen Vector3 orange = new Vector3(1f, 0.75f, 0f); // orange Vector3 green = new Vector3(0f, 0.6f, 0.3f); // green Vector3 lightGreen = new Vector3(0.65f, 1, 0.30f); // light green Vector3 darkYellow = new Vector3(0.61f, 0.61f, 0); // dark yellow Vector3 lightPurple = new Vector3(0.65f, 0.3f, 1); // light purple Vector3 darkPurple = new Vector3(0.5f, 0, 1); // dark purple Vector3 grey = new Vector3(0.25f); // grey float ka = 0.25f; float kd = 0.75f; Matte matte_ptr2 = new Matte(ka, kd, brown); Sphere sphere_ptr2 = new Sphere(new Vector3(45, -7, -60), 20); sphere_ptr2.SetMaterial(matte_ptr2); world.Objects.Add(sphere_ptr2); //Matte matte_ptr3 = new Matte(ka, kd, darkGreen); //Sphere sphere_ptr3 = new Sphere(new Vector3(40, 43, -100), 17); //sphere_ptr3.SetMaterial(matte_ptr3); // dark green //world.Objects.Add(sphere_ptr3); //Matte matte_ptr4 = new Matte(ka, kd, orange); //Sphere sphere_ptr4 = new Sphere(new Vector3(-20, 28, -15), 20); //sphere_ptr4.SetMaterial(matte_ptr4); // orange //world.Objects.Add(sphere_ptr4); //Matte matte_ptr5 = new Matte(ka, kd, green); //Sphere sphere_ptr5 = new Sphere(new Vector3(-25, -7, -35), 27); //sphere_ptr5.SetMaterial(matte_ptr5); // green //world.Objects.Add(sphere_ptr5); //Matte matte_ptr6 = new Matte(ka, kd, lightGreen); //Sphere sphere_ptr6 = new Sphere(new Vector3(20, -27, -35), 25); //sphere_ptr6.SetMaterial((matte_ptr6); // light green //world.Objects.Add(sphere_ptr6); //Matte matte_ptr7 = new Matte(ka, kd, green); //Sphere sphere_ptr7 = new Sphere(new Vector3(35, 18, -35), 22); //sphere_ptr7.SetMaterial((matte_ptr7); // green //world.Objects.Add(sphere_ptr7); //Matte matte_ptr8 = new Matte(ka, kd, brown); //Sphere sphere_ptr8 = new Sphere(new Vector3(-57, -17, -50), 15); //sphere_ptr8.SetMaterial((matte_ptr8); // brown //world.Objects.Add(sphere_ptr8); //Matte matte_ptr9 = new Matte(ka, kd, lightGreen); //Sphere sphere_ptr9 = new Sphere(new Vector3(-47, 16, -80), 23); //sphere_ptr9.SetMaterial((matte_ptr9); // light green //world.Objects.Add(sphere_ptr9); //Matte matte_ptr10 = new Matte(ka, kd, darkGreen); //Sphere sphere_ptr10 = new Sphere(new Vector3(-15, -32, -60), 22); //sphere_ptr10.SetMaterial((matte_ptr10); // dark green //world.Objects.Add(sphere_ptr10); //Matte matte_ptr11 = new Matte(ka, kd, darkYellow); //Sphere sphere_ptr11 = new Sphere(new Vector3(-35, -37, -80), 22); //sphere_ptr11.SetMaterial((matte_ptr11); // dark yellow //world.Objects.Add(sphere_ptr11); //Matte matte_ptr12 = new Matte(ka, kd, darkYellow); //Sphere sphere_ptr12 = new Sphere(new Vector3(10, 43, -80), 22); //sphere_ptr12.SetMaterial((matte_ptr12); // dark yellow //world.Objects.Add(sphere_ptr12); //Matte matte_ptr13 = new Matte(ka, kd, darkYellow); //Sphere sphere_ptr13 = new Sphere(new Vector3(30, -7, -80), 10); //sphere_ptr13.SetMaterial((matte_ptr13); //world.Objects.Add(sphere_ptr13); // dark yellow (hidden) //Matte matte_ptr14 = new Matte(ka, kd, darkGreen); //Sphere sphere_ptr14 = new Sphere(new Vector3(-40, 48, -110), 18); //sphere_ptr14.SetMaterial((matte_ptr14); // dark green //world.Objects.Add(sphere_ptr14); //Matte matte_ptr15 = new Matte(ka, kd, brown); //Sphere sphere_ptr15 = new Sphere(new Vector3(-10, 53, -120), 18); //sphere_ptr15.SetMaterial((matte_ptr15); // brown //world.Objects.Add(sphere_ptr15); //Matte matte_ptr16 = new Matte(ka, kd, lightPurple); //Sphere sphere_ptr16 = new Sphere(new Vector3(-55, -52, -100), 10); //sphere_ptr16.SetMaterial((matte_ptr16); // light purple //world.Objects.Add(sphere_ptr16); //Matte matte_ptr17 = new Matte(ka, kd, brown); //Sphere sphere_ptr17 = new Sphere(new Vector3(5, -52, -100), 15); //sphere_ptr17.SetMaterial((matte_ptr17); // browm //world.Objects.Add(sphere_ptr17); //Matte matte_ptr18 = new Matte(ka, kd, darkPurple); //Sphere sphere_ptr18 = new Sphere(new Vector3(-20, -57, -120), 15); //sphere_ptr18.SetMaterial((matte_ptr18); // dark purple //world.Objects.Add(sphere_ptr18); //Matte matte_ptr19 = new Matte(ka, kd, darkGreen); //Sphere sphere_ptr19 = new Sphere(new Vector3(55, -27, -100), 17); //sphere_ptr19.SetMaterial((matte_ptr19); // dark green //world.Objects.Add(sphere_ptr19); //Matte matte_ptr20 = new Matte(ka, kd, brown); //Sphere sphere_ptr20 = new Sphere(new Vector3(50, -47, -120), 15); //sphere_ptr20.SetMaterial((matte_ptr20); // browm //world.Objects.Add(sphere_ptr20); //Matte matte_ptr21 = new Matte(ka, kd, lightPurple); //Sphere sphere_ptr21 = new Sphere(new Vector3(70, -42, -150), 10); //sphere_ptr21.SetMaterial((matte_ptr21); // light purple //world.Objects.Add(sphere_ptr21); //Matte matte_ptr22 = new Matte(ka, kd, lightPurple); //Sphere sphere_ptr22 = new Sphere(new Vector3(5, 73, -130), 12); //sphere_ptr22.SetMaterial((matte_ptr22); // light purple //world.Objects.Add(sphere_ptr22); //Matte matte_ptr23 = new Matte(ka, kd, darkPurple); //Sphere sphere_ptr23 = new Sphere(new Vector3(66, 21, -130), 13); //sphere_ptr23.SetMaterial((matte_ptr23); // dark purple //world.Objects.Add(sphere_ptr23); //Matte matte_ptr24 = new Matte(ka, kd, lightPurple); //Sphere sphere_ptr24 = new Sphere(new Vector3(72, -12, -140), 12); //sphere_ptr24.SetMaterial((matte_ptr24); // light purple //world.Objects.Add(sphere_ptr24); //Matte matte_ptr25 = new Matte(ka, kd, lightPurple); //Sphere sphere_ptr25 = new Sphere(new Vector3(64, 5, -160), 11); //sphere_ptr25.SetMaterial((matte_ptr25); // green //world.Objects.Add(sphere_ptr25); //Matte matte_ptr26 = new Matte(ka, kd, lightPurple); //Sphere sphere_ptr26 = new Sphere(new Vector3(55, 38, -160), 12); //sphere_ptr26.SetMaterial((matte_ptr26); // light purple //world.Objects.Add(sphere_ptr26); //Matte matte_ptr27 = new Matte(ka, kd, lightPurple); //Sphere sphere_ptr27 = new Sphere(new Vector3(-73, -2, -160), 12); //sphere_ptr27.SetMaterial((matte_ptr27); // light purple //world.Objects.Add(sphere_ptr27); //Matte matte_ptr28 = new Matte(ka, kd, darkPurple); //Sphere sphere_ptr28 = new Sphere(new Vector3(30, -62, -140), 15); //sphere_ptr28.SetMaterial((matte_ptr28); // dark purple //world.Objects.Add(sphere_ptr28); //Matte matte_ptr29 = new Matte(ka, kd, darkPurple); //Sphere sphere_ptr29 = new Sphere(new Vector3(25, 63, -140), 15); //sphere_ptr29.SetMaterial((matte_ptr29); // dark purple //world.Objects.Add(sphere_ptr29); //Matte matte_ptr30 = new Matte(ka, kd, darkPurple); //Sphere sphere_ptr30 = new Sphere(new Vector3(-60, 46, -140), 15); //sphere_ptr30.SetMaterial((matte_ptr30); // dark purple //world.Objects.Add(sphere_ptr30); //Matte matte_ptr31 = new Matte(ka, kd, lightPurple); //Sphere sphere_ptr31 = new Sphere(new Vector3(-30, 68, -130), 12); //sphere_ptr31.SetMaterial((matte_ptr31); // light purple //world.Objects.Add(sphere_ptr31); //Matte matte_ptr32 = new Matte(ka, kd, green); //Sphere sphere_ptr32 = new Sphere(new Vector3(58, 56, -180), 11); //sphere_ptr32.SetMaterial((matte_ptr32); // green //world.Objects.Add(sphere_ptr32); //Matte matte_ptr33 = new Matte(ka, kd, green); //Sphere sphere_ptr33 = new Sphere(new Vector3(-63, -39, -180), 11); //sphere_ptr33.SetMaterial((matte_ptr33); // green //world.Objects.Add(sphere_ptr33); //Matte matte_ptr34 = new Matte(ka, kd, lightPurple); //Sphere sphere_ptr34 = new Sphere(new Vector3(46, 68, -200), 10); //sphere_ptr34.SetMaterial((matte_ptr34); // light purple //world.Objects.Add(sphere_ptr34); //Matte matte_ptr35 = new Matte(ka, kd, lightPurple); //Sphere sphere_ptr35 = new Sphere(new Vector3(-3, -72, -130), 12); //sphere_ptr35.SetMaterial((matte_ptr35); // light purple //world.Objects.Add(sphere_ptr35); //Matte matte_ptr36 = new Matte(ka, kd, grey); //Disque.Raytracer.GeometricObjects.Primitives.Plane plane_ptr = new Disque.Raytracer.GeometricObjects.Primitives.Plane(new Vector3(0, 0, -150), new Vector3(0, 0, 1)); //plane_ptr.SetMaterial((matte_ptr36); //world.Objects.Add(plane_ptr); }
void build2() { int ns = 100; world.ViewPlane = new ViewPlane(); world.ViewPlane.HRes = world.ViewPlane.VRes = 400; world.ViewPlane.SetSamples(ns); world.Tracer = new RayCast(world); MultiJittered sampler = new MultiJittered(ns); AmbientOccluder occulder = new AmbientOccluder(); occulder.RadianceScale = 1.0f; occulder.Color = Vector3.One; occulder.MinAmount = 0.0f; occulder.SetSampler(sampler); occulder.Shadows = true; world.AmbientLight = occulder; Directional light_ptr = new Directional(); light_ptr.Direction = Vector3.Normalize(new Vector3(100, 100, 100)); light_ptr.RadianceScale = 1.0f; light_ptr.Shadows = true; light_ptr.Color = new Vector3(1); world.Lights.Add(light_ptr); Pinhole cam = new Pinhole(); cam.Position = new Vector3(25, 20, 45); cam.Target = new Vector3(0, 1, 0); cam.Distance = 5000; world.Camera = cam; Matte matte = new Matte(0.25f, 0.7f, new Vector3(1, 1, 0)); matte.Shadows = true; Sphere s = new Sphere(new Vector3(0, 1, 0), 1); s.Shadows = true; s.SetMaterial(matte); world.Objects.Add(s); Matte matte2 = new Matte(0.75f, 0, new Vector3(1, 1, 1)); matte2.Shadows = true; Plane p = new Plane(Vector3.Zero, new Vector3(0, 1, 0)); p.Shadows = true; p.SetMaterial(matte2); world.Objects.Add(p); }
void build14() { int ns = 1; world.ViewPlane.HRes = 400; world.ViewPlane.VRes = 400; world.ViewPlane.SetSampler(new Regular(ns)); world.ViewPlane.MaxDepth = 10; world.Tracer = new Whitted(world); AmbientOccluder occ = new AmbientOccluder(); occ.RadianceScale = 1.0f; occ.MinAmount = 0f; occ.Shadows = true; occ.Color = Vector3.One; occ.SetSampler(new MultiJittered(ns)); world.AmbientLight = occ; Pinhole cam = new Pinhole(); cam.Position = new Vector3(0, 30, 20); cam.Target = new Vector3(0, 0, 0); cam.Distance = 200; cam.Zoom = 2f; world.Camera = cam; PointLight light = new PointLight(); light.Color = Vector3.One; light.Position = new Vector3(10, 10, 10); light.RadianceScale = 1.0f; world.Lights.Add(light); Matte matte = new Matte(0.25f, 0f, new Vector3(0.5f, 0, 0.5f)); matte.Shadows = true; Sphere s = new Sphere(new Vector3(0, 5, 0), 5); s.Shadows = true; s.SetMaterial(matte); world.Objects.Add(s); try { Bitmap bm = new Bitmap(@"E:\Visual Studio Projects\Flight\Flight\FlightContent\sterrain.bmp"); HeightMap map = new HeightMap(Extensions.GetHeightMap(bm), bm.Width, bm.Height, 1, 5); Matte matte2 = new Matte(0.75f, 0.5f, new Vector3(1, 1, 1)); matte2.Shadows = true; map.SetMaterial(matte2); world.Objects.Add(map); } catch (Exception e) { MessageBox.Show(e.StackTrace); } }
public static Material CreateMaterialFromElement(this RElement ele, Dictionary<string, Texture> textures) { string n = ele.Name; bool shad = getShadow(ele); Sampler s = null; if (ele.Attributes.ContainsKey(P.Sampler)) { s = ele.Attributes[P.Sampler].CreateSamplerFromAttribute(ele.Attributes[P.Samples].ToInt()); } if (n == P.Mate.Matt) { Matte m = new Matte(ele.Attributes[P.AmbRefCoeff].ToFloat(), ele.Attributes[P.DiffRefCoeff].ToFloat(), ele.Attributes[P.Col].ToVector3()); m.Shadows = shad; if (s != null) m.SetSampler(s); return m; } else if (n == P.Mate.Pho) { Phong p = new Phong(); p.SetSpecularColor(ele.Attributes[P.SpCol].ToVector3()); p.SetExp(ele.Attributes[P.Exp].ToFloat()); p.SetCD(GetVector(ele.Attributes[P.Col])); p.SetAmbientRC(ele.Attributes[P.AmbRefCoeff].ToFloat()); p.SetDiffuseRC(ele.Attributes[P.DiffRefCoeff].ToFloat()); p.SetSpecularRC(ele.Attributes[P.SpecCoeff].ToFloat()); p.Shadows = shad; if (s != null) p.SetSampler(s); return p; } else if (n == P.Mate.Refl) { Reflective r = new Reflective(); r.SetSpecularColor(ele.Attributes[P.SpCol].ToVector3()); r.SetSpecularRC(ele.Attributes[P.SpecCoeff].ToFloat()); r.SetRColor(GetVector(ele.Attributes[P.RefCol])); r.SetReflectiveRC(ele.Attributes[P.RefCoeff].ToFloat()); r.SetExp(ele.Attributes[P.Exp].ToFloat()); r.SetCD(GetVector(ele.Attributes[P.Col])); r.SetAmbientRC(ele.Attributes[P.AmbRefCoeff].ToFloat()); r.SetDiffuseRC(ele.Attributes[P.DiffRefCoeff].ToFloat()); r.Shadows = shad; if (s != null) r.SetSampler(s); return r; } else if (n == P.Mate.Trans) { Transparent t = new Transparent(); t.SetSpecularColor(ele.Attributes[P.SpCol].ToVector3()); t.SetSpecularRC(ele.Attributes[P.SpecCoeff].ToFloat()); t.SetReflectiveRC(ele.Attributes[P.RefCoeff].ToFloat()); t.SetExp(ele.Attributes[P.Exp].ToFloat()); t.SetCD(GetVector(ele.Attributes[P.Col])); t.SetAmbientRC(ele.Attributes[P.AmbRefCoeff].ToFloat()); t.SetDiffuseRC(ele.Attributes[P.DiffRefCoeff].ToFloat()); t.SetIndexOfRefraction(ele.Attributes[P.IOR].ToFloat()); t.SetTransmissionCoefficient(ele.Attributes[P.TransCoeff].ToFloat()); t.Shadows = shad; if (s != null) t.SetSampler(s); return t; } else if (n == P.Mate.GlosRef) { GlossyReflective p = new GlossyReflective(); p.SetSpecularColor(ele.Attributes[P.SpCol].ToVector3()); p.SetSpecularRC(ele.Attributes[P.SpecCoeff].ToFloat()); p.SetExp(ele.Attributes[P.Exp].ToFloat()); p.SetCD(ele.Attributes[P.Col].ToVector3()); p.SetAmbientRC(ele.Attributes[P.AmbRefCoeff].ToFloat()); p.SetDiffuseRC(ele.Attributes[P.DiffRefCoeff].ToFloat()); p.SetCR(ele.Attributes[P.GlosCol].ToVector3()); p.SetKR(ele.Attributes[P.GlosCoeff].ToFloat()); p.Shadows = shad; if (s != null) p.SetSampler(s); return p; } else if (n == P.Mate.Emis) { Emissive em = new Emissive(); em.Color = ele.Attributes[P.Col].ToVector3(); em.Radiance = ele.Attributes[P.Radi].ToFloat(); em.Shadows = shad; if (s != null) em.SetSampler(s); return em; } else if (n == (P.Text + P.Mate.Matt)) { SV_Matte p = new SV_Matte(ele.Attributes[P.AmbRefCoeff].ToFloat(), ele.Attributes[P.DiffRefCoeff].ToFloat(), textures[ele.Attributes[P.Text].Value]) { Shadows = shad }; if (s != null) p.SetSampler(s); return p; } else if (n == (P.Text + P.Mate.Pho)) { SV_Phong p = new SV_Phong(); p.SetSpecularColor(textures[ele.Attributes[P.SpTxt].Value]); p.SetExp(ele.Attributes[P.Exp].ToFloat()); p.SetCD(textures[ele.Attributes[P.Text].Value]); p.SetAmbientRC(ele.Attributes[P.AmbRefCoeff].ToFloat()); p.SetDiffuseRC(ele.Attributes[P.DiffRefCoeff].ToFloat()); p.Shadows = shad; if (s != null) p.SetSampler(s); return p; } throw new Exception(); //Create an exception for not found elements; }
void build1(int ns) { world.ViewPlane.HRes = 400; world.ViewPlane.VRes = 400; world.ViewPlane.MaxDepth = 5; world.ViewPlane.SetSamples(ns); world.Tracer = new Whitted(world); Ambient occ = new Ambient(); occ.RadianceScale = 0f; occ.Shadows = true; occ.Color = Vector3.One; world.AmbientLight = occ; Pinhole cam = new Pinhole(); cam.Position = new Vector3(0, 60, 120); cam.Distance = 100; cam.Zoom = 1400; world.Camera = cam; PointLight pl = new PointLight(); pl.Color = Vector3.One; pl.Position = new Vector3(0, 1000, 0); pl.RadianceScale = 1.0f; pl.Shadows = true; world.Lights.Add(pl); OBJReader obj = new OBJReader(File.ReadAllText(@"C:\Users\Belal\Downloads\bunny.obj.txt")); Mesh mesh = obj.GetMesh(); mesh.SetShadows(false); mesh.SetMaterial(Material.Glass); world.Objects.Add(mesh); BBox bb = mesh.GetBoundingBox(); cam.Target = (bb.Min + bb.Max) * 0.5f; Matte matte2 = new Matte(0.5f, 0.5f, new Vector3(1, 1, 1)); matte2.Shadows = true; Plane p = new Plane(new Vector3(0, -20, 0), new Vector3(0, 1, 0), "p1"); p.SetShadows(true); p.SetMaterial(matte2); world.Objects.Add(p); }
void build6(int ns) { try { world.ViewPlane.HRes = 400; world.ViewPlane.VRes = 400; world.ViewPlane.MaxDepth = 5; world.ViewPlane.SetSamples(ns); world.Tracer = new Whitted(world); Ambient occ = new Ambient(); occ.RadianceScale = 1.0f; //occ.MinAmount = 0f; occ.Shadows = true; occ.Color = Vector3.One; //occ.SetSampler(new MultiJittered(ns)); world.AmbientLight = occ; Pinhole cam = new Pinhole(); cam.Position = new Vector3(40, 30, 20); cam.Target = new Vector3(0, 0, 0); cam.Distance = 5000; cam.Zoom = 1; world.Camera = cam; Plastic plas = new Plastic(); Vector3 color = new Vector3(1); float ls = 0.8f; plas.ambient = new Lambertian() { Color = color, ReflectionCoefficient = ls }; plas.diffuse = new Lambertian() { Color = color, ReflectionCoefficient = ls }; plas.specular = new GlossySpecular() { SpecularColor = color, ReflectionCoefficient = ls, Exponent = 500f }; Sphere sp = new Sphere(new Vector3(0, 0.5f, 0), 0.5f, "sp"); sp.SetMaterial(plas); world.Objects.Add(sp); Matte matte2 = new Matte(0.75f, 0.5f, new Vector3(1, 1, 1)); matte2.Shadows = true; Plane p = new Plane(Vector3.Zero, new Vector3(0, 1, 0), "p1"); p.SetShadows(true); p.SetMaterial(matte2); world.Objects.Add(p); PointLight pl = new PointLight(); pl.Color = Vector3.One; pl.Position = new Vector3(0, 4, 0); pl.RadianceScale = 1.0f; pl.Shadows = true; world.Lights.Add(pl); } catch (Exception e) { MessageBox.Show(e.StackTrace); MessageBox.Show(e.TargetSite.ToString()); } }