public override void Build() { vp = ViewPlane.Create(1920, 1080, SystemOfCoordinates.SSC_INT); vp.NumSamples = 144; backgroundColor = ColorUtils.BLACK; //tracer = new RayCast(this); tracer = new AreaLighting(this); AmbientOccluder a = new AmbientOccluder(ColorUtils.WHITE, 0.4, 1.5); a.Sampler = new MultiJittered(vp.NumSamples); AmbientLight = a; Pinhole c = new Pinhole(new Vec3(-702, -108, 270), new Vec3(-540, -100, 0), new Vec3(0, 1, 0), 800, 1.5f); Camera = c; CreateIllumination(); CreateWalls(); CreateObjects(); }
public override void Build() { vp = ViewPlane.Create(1920, 1080, SystemOfCoordinates.SSC_FLOAT); vp.NumSamples = 4; backgroundColor = ColorUtils.BLACK; tracer = new AreaLighting(this); MultiJittered sampler = new MultiJittered(vp.NumSamples); AmbientOccluder occluder = new AmbientOccluder(); occluder.Color = ColorUtils.WHITE; occluder.ScaleRadiance = 1.5; occluder.MinAmount = 0.4f; occluder.Sampler = sampler; AmbientLight = occluder; Pinhole pinhole = new Pinhole(new Vec3(-0.731249, -0.199999, -0.3), new Vec3(-0.562499, -0.185185, 0.0), new Vec3(0.0, 1.0, 0.0), 0.6f, 1.0f); Camera = pinhole; CreateIllumination(); CreateWalls(); CreateObjects(); }
public override void Build() { vp = ViewPlane.Create(1024, 768, SystemOfCoordinates.SSC_INT); vp.NumSamples = 64; vp.ShowOutOfGamut = 2; backgroundColor = ColorUtils.BLACK; tracer = new AreaLighting(this); Ambient a = new Ambient(); a.ScaleRadiance = 1.0f; AmbientLight = a; Pinhole pinhole = new Pinhole(new Vec3(0.0, 0.0, 500.0), new Vec3(0.0, 0.0, 0.0), new Vec3(0.0, 1.0, 0.0), 2000.0f); Camera = pinhole; Emissive emissive = new Emissive(); emissive.ScaleRadiance = 40.0f; emissive.Ce = ColorUtils.WHITE; MultiJittered sampler = new MultiJittered(256); sampler.Generate(); Rectangle rectangle = new Rectangle(new Vec3(100.0, 100.0, 200.0), new Vec3(216.0, 0.0, 0.0), new Vec3(0.0, 0.0, 216.0)); rectangle.Shadows = false; RectangularLamp lamp = new RectangularLamp(rectangle, emissive); lamp.Sampler = sampler; AddObject(lamp); AreaLight areaLight = new AreaLight(); areaLight.Object = lamp; areaLight.Shadows = true; AddLight(areaLight); Vec3 lightGreen = new Vec3(0.65f, 1.0f, 0.30f); Vec3 green = new Vec3(0.0f, 0.6f, 0.3f); Vec3 darkGreen = new Vec3(0.0f, 0.41f, 0.41f); Vec3 yellow = new Vec3(1.0f, 1.0f, 0.0f); Vec3 darkYellow = new Vec3(0.61f, 0.61f, 0.0f); Vec3 lightPurple = new Vec3(0.65f, 0.3f, 1.0f); Vec3 darkPurple = new Vec3(0.5f, 0.0f, 1.0f); Vec3 brown = new Vec3(0.71f, 0.40f, 0.16f); Vec3 orange = new Vec3(1.0f, 0.75f, 0.0f); Matte matte = new Matte(); matte.SetKa(0.2f); matte.SetKd(0.5f); matte.SetColor(ColorUtils.WHITE); Plane p = new Plane(new Vec3(0, -85, 0), new Vec3(0, 1, 0)); p.Material = matte; AddObject(p); Matte m = new Matte(); //Plastic *m = new Plastic(); m.SetKa(0.2f); m.SetKd(0.65f); //m.SetKs(0.1f); //m.SetExp(8.0f); m.SetColor(ColorUtils.WHITE); Sphere s = new Sphere(new Vec3(5, 3, 0), 30); s.Material = m; AddObject((Sphere)s.Clone()); s.SetCenter(45, -7, -60); s.Radius = 20; m.SetColor(brown); AddObject((Sphere)s.Clone()); s.SetCenter(40, 43, -100); s.Radius = 17; m.SetColor(darkGreen); AddObject((Sphere)s.Clone()); s.SetCenter(-20, 28, -15); s.Radius = 20; m.SetColor(orange); AddObject((Sphere)s.Clone()); s.SetCenter(-25, -7, -35); s.Radius = 27; m.SetColor(green); AddObject((Sphere)s.Clone()); s.SetCenter(20, -27, -35); s.Radius = 25; m.SetColor(lightGreen); AddObject((Sphere)s.Clone()); s.SetCenter(35, 18, -35); s.Radius = 22; m.SetColor(green); AddObject((Sphere)s.Clone()); s.SetCenter(-57, -17, -50); s.Radius = 15; m.SetColor(brown); AddObject((Sphere)s.Clone()); s.SetCenter(-47, 16, -80); s.Radius = 23; m.SetColor(lightGreen); AddObject((Sphere)s.Clone()); s.SetCenter(-15, -32, -60); s.Radius = 22; m.SetColor(darkGreen); AddObject((Sphere)s.Clone()); s.SetCenter(-35, -37, -80); s.Radius = 22; m.SetColor(darkYellow); AddObject((Sphere)s.Clone()); s.SetCenter(10, 43, -80); s.Radius = 22; m.SetColor(darkYellow); AddObject((Sphere)s.Clone()); s.SetCenter(30, -7, -80); s.Radius = 10; m.SetColor(darkYellow); AddObject((Sphere)s.Clone()); s.SetCenter(-40, 48, -110); s.Radius = 18; m.SetColor(darkGreen); AddObject((Sphere)s.Clone()); s.SetCenter(-10, 53, -120); s.Radius = 18; m.SetColor(brown); AddObject((Sphere)s.Clone()); s.SetCenter(-55, -52, -100); s.Radius = 10; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(5, -52, -100); s.Radius = 15; m.SetColor(brown); AddObject((Sphere)s.Clone()); s.SetCenter(-20, -57, -120); s.Radius = 15; m.SetColor(darkPurple); AddObject((Sphere)s.Clone()); s.SetCenter(55, -27, -100); s.Radius = 17; m.SetColor(darkGreen); AddObject((Sphere)s.Clone()); s.SetCenter(50, -47, -120); s.Radius = 15; m.SetColor(brown); AddObject((Sphere)s.Clone()); s.SetCenter(70, -42, -150); s.Radius = 10; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(5, 73, -130); s.Radius = 12; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(66, 21, -130); s.Radius = 13; m.SetColor(darkPurple); AddObject((Sphere)s.Clone()); s.SetCenter(72, -12, -140); s.Radius = 12; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(64, 5, -160); s.Radius = 11; m.SetColor(green); AddObject((Sphere)s.Clone()); s.SetCenter(55, 38, -160); s.Radius = 12; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(-73, -2, -160); s.Radius = 12; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(30, -62, -140); s.Radius = 15; m.SetColor(darkPurple); AddObject((Sphere)s.Clone()); s.SetCenter(25, 63, -140); s.Radius = 15; m.SetColor(darkPurple); AddObject((Sphere)s.Clone()); s.SetCenter(-60, 46, -140); s.Radius = 15; m.SetColor(darkPurple); AddObject((Sphere)s.Clone()); s.SetCenter(-30, 68, -130); s.Radius = 12; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(58, 56, -180); s.Radius = 11; m.SetColor(green); AddObject((Sphere)s.Clone()); s.SetCenter(-63, -39, -180); s.Radius = 11; m.SetColor(green); AddObject((Sphere)s.Clone()); s.SetCenter(46, 68, -200); s.Radius = 10; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(-3, -72, -130); s.Radius = 12; m.SetColor(lightPurple); AddObject(s); }
public override void Build() { vp = ViewPlane.Create(1920, 1080, SystemOfCoordinates.SSC_INT); vp.NumSamples = 144; vp.MaxDepth = 10; backgroundColor = new Vec3(0.15); tracer = new AreaLighting(this); AmbientOccluder a = new AmbientOccluder(); a.ScaleRadiance = 0.5; a.MinAmount = 0.05; a.Sampler = new MultiJittered(vp.NumSamples); AmbientLight = a; Pinhole pinhole = new Pinhole(new Vec3(75, 40, 100), new Vec3(-10, 39, 0), new Vec3(0.0, 1.0, 0.0), 360, 3.0f); Camera = pinhole; Rectangle rectangle = new Rectangle(new Vec3(75, 40, 100), new Vec3(0, 50, 0), new Vec3(50, 0, -50)); Emissive e = new Emissive(ColorUtils.WHITE, 20); RectangularLamp lamp = new RectangularLamp(rectangle, e); lamp.Sampler = new MultiJittered(vp.NumSamples); lamp.Shadows = false; AddObject(lamp); AreaLight light = new AreaLight(); light.Object = lamp; AddLight(light); Reflective reflective1 = new Reflective(); reflective1.SetKa(0.25f); reflective1.SetKd(0.5f); reflective1.SetColor(0.75f, 0.75f, 0.0f); reflective1.SetSpecularColor(ColorUtils.WHITE); reflective1.SetKs(0.15f); reflective1.SetExp(100.0f); reflective1.SetKr(0.75f); reflective1.SetReflectiveColor(ColorUtils.WHITE); double radius = 23.0; Sphere s1 = new Sphere(new Vec3(38, radius, -25), radius); s1.Material = reflective1; AddObject(s1); Matte matte1 = new Matte(); matte1.SetKa(0.45f); matte1.SetKd(0.75f); matte1.SetColor(0.75f, 0.25f, 0.0f); Sphere s2 = new Sphere(new Vec3(-7, 10, 42), 20); s2.Material = matte1; AddObject(s2); Reflective reflective2 = new Reflective(); reflective2.SetKa(0.35f); reflective2.SetKd(0.75f); reflective2.SetColor(ColorUtils.BLACK); reflective2.SetSpecularColor(ColorUtils.WHITE); reflective2.SetKs(0.0f); reflective2.SetExp(1.0f); reflective2.SetKr(0.75f); reflective2.SetReflectiveColor(ColorUtils.WHITE); Sphere s3 = new Sphere(new Vec3(-30, 59, 35), 20); s3.Material = reflective2; AddObject(s3); //cylinder Reflective reflective3 = new Reflective(); reflective3.SetKa(0.35f); reflective3.SetKd(0.5f); reflective3.SetColor(0.0f, 0.5f, 0.75f); reflective3.SetSpecularColor(ColorUtils.WHITE); reflective3.SetKs(0.2f); reflective3.SetExp(100.0f); reflective3.SetKr(0.75f); reflective3.SetReflectiveColor(ColorUtils.WHITE); float b = 0.0f; float t = 85f; float cr = 22f; SolidCylinder cylinder = new SolidCylinder(b, t, cr); cylinder.Material = reflective3; AddObject(cylinder); //box Matte matte2 = new Matte(); matte2.SetKa(0.15f); matte2.SetKd(0.5f); matte2.SetColor(0.75f, 1.0f, 0.75f); Box box = new Box(new Vec3(-35, 0, -110), new Vec3(-25, 60, 65)); box.Material = matte2; AddObject(box); //plane Matte matte3 = new Matte(); matte3.SetKa(0.30f); matte3.SetKd(0.9f); matte3.SetColor(ColorUtils.WHITE); Plane plane = new Plane(new Vec3(), new Vec3(0, 1, 0)); plane.Material = matte3; AddObject(plane); }
public override void Build() { vp = ViewPlane.Create(1024, 768, SystemOfCoordinates.SSC_INT); vp.NumSamples = 4; backgroundColor = ColorUtils.BLACK; tracer = new AreaLighting(this); MultiJittered sampler = new MultiJittered(vp.NumSamples); sampler.Generate(); AmbientOccluder occluder = new AmbientOccluder(ColorUtils.WHITE, 0.0); occluder.Sampler = sampler; //occluder.ScaleRadiance = 1.0; //occluder.Color = ColorUtils.WHITE; //occluder.SetMinAmount(0.0f); AmbientLight = occluder; Pinhole pinhole = new Pinhole(new Vec3(0.0, 0.0, 500.0), new Vec3(0.0, 0.0, 0.0), new Vec3(0.0, 1.0, 0.0), 2000.0f); Camera = pinhole; Emissive emissive = new Emissive(ColorUtils.WHITE, 20.0f); //emissive.ScaleRadiance = 1.0f; //emissive.Ce = new Vec3(1.0, 1.0, 1.0); sampler = new MultiJittered(256); sampler.Generate(); ConcaveSphere sphere = new ConcaveSphere(new Vec3(), 10000.0); //sphere.Radius = 10000.0; sphere.Sampler = sampler; sphere.Material = emissive; sphere.EmissiveMaterial = emissive; sphere.Shadows = false; AddObject(sphere); sampler = new MultiJittered(256); sampler.Generate(); EnvironmentLight l = new EnvironmentLight(); l.Material = emissive; l.Sampler = sampler; l.Sampler.MapSamplesToHemisphere(10); l.Shadows = true; AddLight(l); //Rectangle rectangle = new Rectangle(new Vec3(0.0, 100.0, 0.0), // new Vec3(216.0, 0.0, 0.0), // new Vec3(0.0, 0.0, 216.0)); //emissive = new Emissive(); //emissive.ScaleRadiance = 1.0f; //emissive.Ce = ColorUtils.WHITE; //rectangle.Material = emissive; //rectangle.Sampler = sampler; //rectangle.Shadows = false; //AddObject(rectangle); AreaLight areaLight = new AreaLight(); areaLight.Object = sphere; areaLight.Shadows = true; AddLight(areaLight); Vec3 lightGreen = new Vec3(0.65f, 1.0f, 0.30f); Vec3 green = new Vec3(0.0f, 0.6f, 0.3f); Vec3 darkGreen = new Vec3(0.0f, 0.41f, 0.41f); Vec3 yellow = new Vec3(1.0f, 1.0f, 0.0f); Vec3 darkYellow = new Vec3(0.61f, 0.61f, 0.0f); Vec3 lightPurple = new Vec3(0.65f, 0.3f, 1.0f); Vec3 darkPurple = new Vec3(0.5f, 0.0f, 1.0f); Vec3 brown = new Vec3(0.71f, 0.40f, 0.16f); Vec3 orange = new Vec3(1.0f, 0.75f, 0.0f); Matte matte = new Matte(); matte.SetKa(0.2f); matte.SetKd(0.5f); matte.SetColor(ColorUtils.WHITE); Plane p = new Plane(new Vec3(0, -85, 0), new Vec3(0, 1, 0)); p.Material = matte; AddObject(p); Phong m = new Phong(); m.SetKa(0.2f); m.SetKd(0.65f); m.SetKs(0.1f); m.SetExp(8.0f); m.SetColor(ColorUtils.WHITE); Sphere s = new Sphere(new Vec3(5, 3, 0), 30); s.Material = m; AddObject((Sphere)s.Clone()); s.SetCenter(45, -7, -60); s.Radius = 20; m.SetColor(brown); AddObject((Sphere)s.Clone()); s.SetCenter(40, 43, -100); s.Radius = 17; m.SetColor(darkGreen); AddObject((Sphere)s.Clone()); s.SetCenter(-20, 28, -15); s.Radius = 20; m.SetColor(orange); AddObject((Sphere)s.Clone()); s.SetCenter(-25, -7, -35); s.Radius = 27; m.SetColor(green); AddObject((Sphere)s.Clone()); s.SetCenter(20, -27, -35); s.Radius = 25; m.SetColor(lightGreen); AddObject((Sphere)s.Clone()); s.SetCenter(35, 18, -35); s.Radius = 22; m.SetColor(green); AddObject((Sphere)s.Clone()); s.SetCenter(-57, -17, -50); s.Radius = 15; m.SetColor(brown); AddObject((Sphere)s.Clone()); s.SetCenter(-47, 16, -80); s.Radius = 23; m.SetColor(lightGreen); AddObject((Sphere)s.Clone()); s.SetCenter(-15, -32, -60); s.Radius = 22; m.SetColor(darkGreen); AddObject((Sphere)s.Clone()); s.SetCenter(-35, -37, -80); s.Radius = 22; m.SetColor(darkYellow); AddObject((Sphere)s.Clone()); s.SetCenter(10, 43, -80); s.Radius = 22; m.SetColor(darkYellow); AddObject((Sphere)s.Clone()); s.SetCenter(30, -7, -80); s.Radius = 10; m.SetColor(darkYellow); AddObject((Sphere)s.Clone()); s.SetCenter(-40, 48, -110); s.Radius = 18; m.SetColor(darkGreen); AddObject((Sphere)s.Clone()); s.SetCenter(-10, 53, -120); s.Radius = 18; m.SetColor(brown); AddObject((Sphere)s.Clone()); s.SetCenter(-55, -52, -100); s.Radius = 10; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(5, -52, -100); s.Radius = 15; m.SetColor(brown); AddObject((Sphere)s.Clone()); s.SetCenter(-20, -57, -120); s.Radius = 15; m.SetColor(darkPurple); AddObject((Sphere)s.Clone()); s.SetCenter(55, -27, -100); s.Radius = 17; m.SetColor(darkGreen); AddObject((Sphere)s.Clone()); s.SetCenter(50, -47, -120); s.Radius = 15; m.SetColor(brown); AddObject((Sphere)s.Clone()); s.SetCenter(70, -42, -150); s.Radius = 10; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(5, 73, -130); s.Radius = 12; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(66, 21, -130); s.Radius = 13; m.SetColor(darkPurple); AddObject((Sphere)s.Clone()); s.SetCenter(72, -12, -140); s.Radius = 12; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(64, 5, -160); s.Radius = 11; m.SetColor(green); AddObject((Sphere)s.Clone()); s.SetCenter(55, 38, -160); s.Radius = 12; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(-73, -2, -160); s.Radius = 12; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(30, -62, -140); s.Radius = 15; m.SetColor(darkPurple); AddObject((Sphere)s.Clone()); s.SetCenter(25, 63, -140); s.Radius = 15; m.SetColor(darkPurple); AddObject((Sphere)s.Clone()); s.SetCenter(-60, 46, -140); s.Radius = 15; m.SetColor(darkPurple); AddObject((Sphere)s.Clone()); s.SetCenter(-30, 68, -130); s.Radius = 12; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(58, 56, -180); s.Radius = 11; m.SetColor(green); AddObject((Sphere)s.Clone()); s.SetCenter(-63, -39, -180); s.Radius = 11; m.SetColor(green); AddObject((Sphere)s.Clone()); s.SetCenter(46, 68, -200); s.Radius = 10; m.SetColor(lightPurple); AddObject((Sphere)s.Clone()); s.SetCenter(-3, -72, -130); s.Radius = 12; m.SetColor(lightPurple); AddObject(s); }