示例#1
0
        /// <summary>
        /// Performs the inverse of the projection done by <see cref="Sample"/>
        /// </summary>
        /// <param name="point">A point on the surface of this mesh</param>
        /// <returns>The primary sample space point that would have been projected there</returns>
        public Vector2 SampleInverse(SurfacePoint point)
        {
            var   local = SampleWarp.FromUniformTriangle(point.BarycentricCoords);
            float x     = triangleDistribution.SampleInverse((int)point.PrimId, local.X);

            return(new(x, local.Y));
        }
示例#2
0
        public void Inverse_ShouldBeZero()
        {
            var bary = SampleWarp.ToUniformTriangle(new(0.1f, 0.1f));
            var prim = SampleWarp.FromUniformTriangle(bary);

            Assert.Equal(0.1f, prim.X, 4);
            Assert.Equal(0.1f, prim.Y, 4);
        }