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 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 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 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 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 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 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 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 build15() { int ns = 1; world.ViewPlane.HRes = 400; world.ViewPlane.VRes = 400; world.ViewPlane.SetSampler(new MultiJittered(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, 20, -60); cam.Target = new Vector3(0, 7.5f, 0); cam.Distance = 200; cam.Zoom = 3.5f; world.Camera = cam; ins = new Instance(new Sphere(new Vector3(0, 7.5f, 0), 7.5f)); ins.SetMaterial(new Matte(0.7f, 0.7f, new Vector3(0.56, 0.32, 0.2))); world.Objects.Add(ins); Plane p = new Plane(Vector3.Zero, new Vector3(0, 1, 0)); p.Shadows = true; p.SetMaterial(new Matte(0.75f, 0.75f, new Vector3(0.56, 0.45, 0.32))); world.Objects.Add(p); }
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); } }
void build13() { int ns = 9; world.ViewPlane.HRes = 400; world.ViewPlane.VRes = 400; world.ViewPlane.SetSampler(new MultiJittered(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, 20, -60); cam.Target = new Vector3(0, 7.5f, 0); cam.Distance = 200; cam.Zoom = 3.5f; world.Camera = cam; float refl = 0.8f; float spec = 0.2f; float amb = 0.2f; float diff = 0.2f; float exp = 100; Plane p = new Plane(Vector3.Zero, new Vector3(0, 1, 0)); p.Shadows = true; p.SetMaterial(new Matte(0.75f, 0.75f, new Vector3(0.56, 0.45, 0.32))); world.Objects.Add(p); 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(new ConstantColor(Vector3.One)); sphere_m.SetExp(1); sphere_m.SetSpecularRC(1f); sphere_m.SetDiffuseRC(1f); sphere_m.SetAmbientRC(1f); Sphere sphere = new Sphere(new Vector3(0, 0f, 0), 1f); ins = new Instance(sphere); ins.SetMaterial(sphere_m); ins.RotateY(45); ins.Scale(new Vector3(10)); ins.Translate(new Vector3(0, 13, 0)); Reflective smatte2 = new Reflective(); smatte2.SetAmbientRC(amb); smatte2.SetDiffuseRC(diff); smatte2.SetCD(new Vector3(1, 0, 0)); smatte2.SetRColor(new Vector3(1)); smatte2.SetSpecularRC(spec); smatte2.SetExp(exp); smatte2.SetReflectiveRC(refl); SolidCylinder sc = new SolidCylinder(0, 3, 13); sc.SetMaterial(new Matte(0.5f, 0.5f, new Vector3(0.5f, 0.5f, 0))); world.Objects.Add(sc); world.Objects.Add(ins); PointLight light = new PointLight(); light.Color = Vector3.One; light.Position = new Vector3(0, 40, -20); light.RadianceScale = 2f; world.Lights.Add(light); }
public static Light CreateLightFromElement(this RElement ele, int ns) { bool shad = getShadow(ele); float rad = ele.Attributes[P.Radi].ToFloat(); string n = ele.Name; if (n == P.Lights.Amb) { Ambient amb = new Ambient(); amb.RadianceScale = rad; amb.Color = ele.Attributes[P.Col].ToVector3(); amb.Shadows = shad; return amb; } else if (n == P.Lights.AmbOcc) { AmbientOccluder amb = new AmbientOccluder(); amb.SetSampler(ele.Attributes[P.Sampler].CreateSamplerFromAttribute(ns)); amb.RadianceScale = rad; amb.Color = ele.Attributes[P.Col].ToVector3(); amb.Shadows = shad; return amb; } else if (n == P.Lights.PL) { PointLight pl = new PointLight(); pl.Position = ele.Attributes[P.Pos].ToVector3(); pl.RadianceScale = rad; pl.Color = ele.Attributes[P.Col].ToVector3(); pl.Shadows = shad; return pl; } else if (n == P.Lights.Direc) { Directional d = new Directional(); d.Direction = ele.Attributes[P.Dir].ToVector3(); d.RadianceScale = rad; d.Color = ele.Attributes[P.Col].ToVector3(); d.Shadows = shad; return d; } else if (n == P.Lights.AL) { AreaLight al = new AreaLight(); al.SetObject(GeometricObject.GetObject(ele.Attributes[P.Name].Value)); al.Shadows = shad; return al; } throw new Exception(); }
static Light getLight(XElement ele, World world) { Light l = new Ambient(); string typ = ele.Name.LocalName; if (typ == "Ambient") { Ambient amb = new Ambient(); amb.Color = getVector(getAttribute("Color", ele)); amb.RadianceScale = float.Parse(getAttribute("Radiance", ele)); l = amb; } else if (typ == "AmbientOcculder") { AmbientOccluder amb = new AmbientOccluder(); amb.Color = getVector(getAttribute("Color", ele)); amb.RadianceScale = float.Parse(getAttribute("Radiance", ele)); amb.SetSampler(getSampler(getAttribute("Sampler", ele), world.ViewPlane.NumSamples)); l = amb; } else if (typ == "PointLight") { PointLight p = new PointLight(); p.Color = getVector(getAttribute("Color", ele)); p.RadianceScale = float.Parse(getAttribute("Radiance", ele)); p.Position = getVector(getAttribute("Position", ele)); l = p; } else if (typ == "Directional") { Directional d = new Directional(); d.Color = getVector(getAttribute("Color", ele)); d.RadianceScale = float.Parse(getAttribute("Radiance", ele)); d.Direction = getVector(getAttribute("Direction", ele)); l = d; } l.Shadows = bool.Parse(getAttribute("Shadows", ele)); return l; }
void build10() { World world = new World(); int ns = 49; 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(40, 30, 20); cam.Target = new Vector3(0, 0, 0); cam.Distance = 5500; cam.Zoom = 1.5f; world.Camera = cam; 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); }