public void CenterNormalIsStraightUpWhenRoughnessIsZero() { var v = new Vector(1, 1, 1).Normalize(); var n = GGXNormalDistribution.GGXVndf(v, 0f, 0f, 0, 0); n.Should().Be(new Vector(0, 0, 1)); v = new Vector(1, 2, 3).Normalize(); n = GGXNormalDistribution.GGXVndf(v, 0f, 0f, 0, 0); n.Should().Be(new Vector(0, 0, 1)); }
public void ShouldHaveLowOffsetWhenNearZero() { var v = new Vector(0, 1, 1).Normalize(); var n = GGXNormalDistribution.GGXVndf(v, 0.001f, 0.001f, 0f, 0f); n.Should().Be(new Vector(0, 0, 1)); v = new Vector(1, 2, 1).Normalize(); n = GGXNormalDistribution.GGXVndf(v, 0.001f, 0.001f, 0f, 0f); n.Should().Be(new Vector(0, 0, 1)); }
public void RotatesNormalProportionalToAlphaXY() { var v = new Vector(1, 1, 1).Normalize(); var n = GGXNormalDistribution.GGXVndf(v, 0f, 0f, 0, 0); n.Should().Be(new Vector(0, 0, 1)); v = new Vector(1, 1, 1).Normalize(); n = GGXNormalDistribution.GGXVndf(v, 1f, 0f, 0, 0); n.X.Should().BeGreaterThan(0f); n.Y.Should().Be(0f); v = new Vector(1, 1, 1).Normalize(); n = GGXNormalDistribution.GGXVndf(v, 0f, 1f, 0, 0); n.Y.Should().BeGreaterThan(0f); n.X.Should().Be(0f); }