public void TestFlatRender() { Color sphereColor = new Color(1f, 2f, 3f); Sphere sphere = new Sphere( transformation: Transformation.Translation(new Vec(2f, 0f, 0f)) * Transformation.Scaling(new Vec(0.2f, 0.2f, 0.2f)), material: new Material(Brdf: new DiffuseBRDF(pig: new UniformPigment(sphereColor))) ); HdrImage image = new HdrImage(3, 3); OrthogonalCamera camera = new OrthogonalCamera(); ImageTracer tracer = new ImageTracer(image, camera); World world = new World(); world.addShape(sphere); FlatRender renderer = new FlatRender(world); tracer.fireAllRays(renderer); Assert.True(image.getPixel(0, 0).isClose(Constant.Black), "TestFlatRender failed - Assert 1/9"); Assert.True(image.getPixel(1, 0).isClose(Constant.Black), "TestFlatRender failed - Assert 2/9"); Assert.True(image.getPixel(2, 0).isClose(Constant.Black), "TestFlatRender failed - Assert 3/9"); Assert.True(image.getPixel(0, 1).isClose(Constant.Black), "TestFlatRender failed - Assert 4/9"); Assert.True(image.getPixel(1, 1).isClose(sphereColor), "TestFlatRender failed - Assert 5/9"); Assert.True(image.getPixel(2, 1).isClose(Constant.Black), "TestFlatRender failed - Assert 6/9"); Assert.True(image.getPixel(0, 2).isClose(Constant.Black), "TestFlatRender failed - Assert 7/9"); Assert.True(image.getPixel(1, 2).isClose(Constant.Black), "TestFlatRender failed - Assert 8/9"); Assert.True(image.getPixel(2, 2).isClose(Constant.Black), "TestFlatRender failed - Assert 9/9"); }
public void TestPointLightRenderer1() { World world = new World(); world.addPointLight(new PointLight(new Point(10f, 10f, 10f), Constant.White)); world.addShape(new Sphere(Transformation.Translation(new Vec(10f, 10f, 10f)))); Sphere sphere = new Sphere( transformation: Transformation.Translation(new Vec(2f, 0f, 0f)) * Transformation.Scaling(new Vec(0.2f, 0.2f, 0.2f)), material: new Material(Brdf: new DiffuseBRDF(pig: new UniformPigment(Constant.White)))); HdrImage image = new HdrImage(3, 3); OrthogonalCamera camera = new OrthogonalCamera(); ImageTracer tracer = new ImageTracer(i: image, c: camera); world.addShape(sphere); PointLightRender renderer = new PointLightRender(world); tracer.fireAllRays(renderer); Assert.True(image.getPixel(0, 0).isClose(renderer.backgroundColor), "TestPointLight rendered failed (light source shielded by a sphere) - Assert 1/9"); Assert.True(image.getPixel(1, 0).isClose(renderer.backgroundColor), "TestPointLight rendered failed (light source shielded by a sphere) - Assert 2/9"); Assert.True(image.getPixel(2, 0).isClose(renderer.backgroundColor), "TestPointLight rendered failed (light source shielded by a sphere) - Assert 3/9"); Assert.True(image.getPixel(0, 1).isClose(renderer.backgroundColor), "TestPointLight rendered failed (light source shielded by a sphere) - Assert 4/9"); Assert.True(image.getPixel(1, 1).isClose(renderer.ambientColor), "TestPointLight rendered failed (light source shielded by a sphere) - Assert 5/9"); Assert.True(image.getPixel(2, 1).isClose(renderer.backgroundColor), "TestPointLight rendered failed (light source shielded by a sphere) - Assert 6/9"); Assert.True(image.getPixel(0, 2).isClose(renderer.backgroundColor), "TestPointLight rendered failed (light source shielded by a sphere) - Assert 7/9"); Assert.True(image.getPixel(1, 2).isClose(renderer.backgroundColor), "TestPointLight rendered failed (light source shielded by a sphere) - Assert 8/9"); Assert.True(image.getPixel(2, 2).isClose(renderer.backgroundColor), "TestPointLight rendered failed (light source shielded by a sphere) - Assert 9/9"); }
public void TestNormalizeImage() { var img = new HdrImage(2, 1); img.setPixel(0, 0, new Color(0.5e1f, 1.0e1f, 1.5e1f)); img.setPixel(1, 0, new Color(0.5e3f, 1.0e3f, 1.5e3f)); img.normalizeImage(factor: 1000.0f, luminosity: 100.0f); Assert.True(img.getPixel(0, 0).isClose(new Color(0.5e2f, 1.0e2f, 1.5e2f)), "TestNormalizeImage failed - Assert 1/2"); Assert.True(img.getPixel(1, 0).isClose(new Color(0.5e4f, 1.0e4f, 1.5e4f)), "TestNormalizeImage failed - Assert 2/2"); }
public void TestGetSetPixel() { var appo = new Color(5.0f, 6.0f, 7.0f); DummyImage.setPixel(3, 2, appo); Assert.True(DummyImage.getPixel(3, 2).isClose(appo), "TestGetSetPixel failed - Assert 1/1"); }
public void TestImageCoverage() { HdrImage image = new HdrImage(4, 2); PerspectiveCamera camera = new PerspectiveCamera(); ImageTracer tracer = new ImageTracer(image, camera); tracer.fireAllRays((Ray r) => new Color(1f, 2f, 3f)); for (int row = 0; row < image.height; row++) { for (int col = 0; col < image.width; col++) { Assert.True(image.getPixel(col, row).isClose(new Color(1.0f, 2.0f, 3.0f)), $"TestImageCoverage failed - Assert row={row}, col={col}"); } } } //end of function
public void TestReadPfm() { var MyImg = new HdrImage(3, 2); byte[] LE_REFERENCE_BYTES = { 0x50, 0x46, 0x0a, 0x33, 0x20, 0x32, 0x0a, 0x2d, 0x31, 0x2e, 0x30, 0x0a, 0x00, 0x00, 0xc8, 0x42, 0x00, 0x00, 0x48, 0x43, 0x00, 0x00, 0x96, 0x43, 0x00, 0x00, 0xc8, 0x43, 0x00, 0x00, 0xfa, 0x43, 0x00, 0x00, 0x16, 0x44, 0x00, 0x00, 0x2f, 0x44, 0x00, 0x00, 0x48, 0x44, 0x00, 0x00, 0x61, 0x44, 0x00, 0x00, 0x20, 0x41, 0x00, 0x00, 0xa0, 0x41, 0x00, 0x00, 0xf0, 0x41, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0x48, 0x42, 0x00, 0x00, 0x70, 0x42, 0x00, 0x00, 0x8c, 0x42, 0x00, 0x00, 0xa0, 0x42, 0x00, 0x00, 0xb4, 0x42 }; using (MemoryStream memSt = new MemoryStream(LE_REFERENCE_BYTES.Length)) { memSt.Write(LE_REFERENCE_BYTES); memSt.Seek(0, SeekOrigin.Begin); MyImg.readPfm(memSt); } Assert.True(MyImg.width == 3, "TestReadPfm failed - Assert 1/16"); Assert.True(MyImg.height == 2, "TestReadPfm failed - Assert 2/16"); Assert.True(MyImg.getPixel(0, 0).isClose(new Color(10.0f, 20.0f, 30.0f)), "TestReadPfm failed - Assert 3/16"); Assert.True(MyImg.getPixel(1, 0).isClose(new Color(40.0f, 50.0f, 60.0f)), "TestReadPfm failed - Assert 4/16"); Assert.True(MyImg.getPixel(2, 0).isClose(new Color(70.0f, 80.0f, 90.0f)), "TestReadPfm failed - Assert 5/16"); Assert.True(MyImg.getPixel(0, 1).isClose(new Color(100.0f, 200.0f, 300.0f)), "TestReadPfm failed - Assert 6/16"); Assert.True(MyImg.getPixel(1, 1).isClose(new Color(400.0f, 500.0f, 600.0f)), "TestReadPfm failed - Assert 7/16"); Assert.True(MyImg.getPixel(2, 1).isClose(new Color(700.0f, 800.0f, 900.0f)), "TestReadPfm failed - Assert 8/16"); byte[] BE_REFERENCE_BYTES = { 0x50, 0x46, 0x0a, 0x33, 0x20, 0x32, 0x0a, 0x31, 0x2e, 0x30, 0x0a, 0x42, 0xc8, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0x43, 0xc8, 0x00, 0x00, 0x43, 0xfa, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, 0x44, 0x2f, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0x44, 0x61, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x41, 0xa0, 0x00, 0x00, 0x41, 0xf0, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x42, 0x70, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x42, 0xa0, 0x00, 0x00, 0x42, 0xb4, 0x00, 0x00 }; using (MemoryStream memSt = new MemoryStream(BE_REFERENCE_BYTES.Length)) { memSt.Write(BE_REFERENCE_BYTES); memSt.Seek(0, SeekOrigin.Begin); MyImg.readPfm(memSt); } Assert.True(MyImg.width == 3, "TestReadPfm failed - Assert 9/16"); Assert.True(MyImg.height == 2, "TestReadPfm failed - Assert 10/16"); Assert.True(MyImg.getPixel(0, 0).isClose(new Color(10.0f, 20.0f, 30.0f)), "TestReadPfm failed - Assert 11/16"); Assert.True(MyImg.getPixel(1, 0).isClose(new Color(40.0f, 50.0f, 60.0f)), "TestReadPfm failed - Assert 12/16"); Assert.True(MyImg.getPixel(2, 0).isClose(new Color(70.0f, 80.0f, 90.0f)), "TestReadPfm failed - Assert 13/16"); Assert.True(MyImg.getPixel(0, 1).isClose(new Color(100.0f, 200.0f, 300.0f)), "TestReadPfm failed - Assert 14/16"); Assert.True(MyImg.getPixel(1, 1).isClose(new Color(400.0f, 500.0f, 600.0f)), "TestReadPfm failed - Assert 15/16"); Assert.True(MyImg.getPixel(2, 1).isClose(new Color(700.0f, 800.0f, 900.0f)), "TestReadPfm failed - Assert 16/16"); }