public void ReflectedColorForNonReflectiveMaterialIsBlack() { var w = World.Default(); var r = new Ray(new Point(0, 0, 0), new Vector(0, 0, 1)); var shape = w.Objects[1]; shape.Material.Ambient = 1f; var i = new Intersection(1, shape); var comps = new IntersectionInfo(i, r); PhongShading.ReflectedColor(w, comps).Should().Be(Colors.Black); }
public void ReflectedColorIsBlackIfRemainingBouncesIsZero() { var w = World.Default(); var shape = new Plane(); shape.SetMaterial(new Material { Reflective = 0.5f }); shape.SetTransform(Transform.Translate(0, -1, 0)); w.AddObject(shape); var r = new Ray(new Point(0, 0, -3), new Vector(0, -MathF.Sqrt(2f) / 2f, MathF.Sqrt(2f) / 2f)); var i = new Intersection(MathF.Sqrt(2f), shape); var comps = new IntersectionInfo(i, r); PhongShading.ReflectedColor(w, comps, 0).Should().Be(Colors.Black); }
public void ReflectedColorForReflectiveMaterialIsNotBlack() { var w = World.Default(); var shape = new Plane(); shape.SetMaterial(new Material { Reflective = 0.5f }); shape.SetTransform(Transform.Translate(0, -1, 0)); w.AddObject(shape); var r = new Ray(new Point(0, 0, -3), new Vector(0, -MathF.Sqrt(2f) / 2f, MathF.Sqrt(2f) / 2f)); var i = new Intersection(MathF.Sqrt(2f), shape); var comps = new IntersectionInfo(i, r); PhongShading.ReflectedColor(w, comps).Should().Be(new Color(0.19041f, 0.2380f, 0.14281f)); }