Example #1
0
    def __init__(self, bounds=None):
        from mitsuba.core import ScalarBoundingBox2f

        if bounds is None:
            bounds = ScalarBoundingBox2f(-1, 1)

        self._bounds = bounds
Example #2
0
def test_sample_position(variant_packet_rgb, filter_type, wrap_mode):
    from mitsuba.core.xml import load_string
    from mitsuba.python.chi2 import ChiSquareTest, PlanarDomain
    from mitsuba.core import ScalarBoundingBox2f

    bitmap = load_string("""
    <texture type="bitmap" version="2.0.0">
        <string name="filename" value="resources/data/common/textures/carrot.png"/>
        <string name="filter_type" value="%s"/>
        <string name="wrap_mode" value="%s"/>
    </texture>""" % (filter_type, wrap_mode)).expand()[0]

    chi2 = ChiSquareTest(domain=PlanarDomain(
        ScalarBoundingBox2f([0, 0], [1, 1])),
                         sample_func=lambda s: bitmap.sample_position(s)[0],
                         pdf_func=lambda p: bitmap.pdf_position(p),
                         sample_dim=2,
                         res=201,
                         ires=8)

    assert chi2.run()
Example #3
0
def test04_chi2(variant_packet_rgb, warp, attempt):
    # Chi^2 test to make sure that the warping schemes are producing
    # the right distribution. Test for all supported variants of
    # N-dimensional warps (N = 0..3)

    from mitsuba.core import ScalarBoundingBox2f
    from mitsuba.python.chi2 import ChiSquareTest, PlanarDomain

    cls = getattr(mitsuba.core, warp)
    ndim = int(warp[-1]) + 2
    np.random.seed(all_warps.index(warp) * 10 + attempt)

    shape = np.random.randint(2, 8, ndim)
    param_res = [sorted(np.random.rand(s)) for s in shape[:-2]]

    if attempt == 9:
        values = np.ones(shape)
    else:
        values = np.random.rand(*shape) * 10

    instance = cls(values, param_res)

    for j in range(10 if ndim > 2 else 1):
        param = [
            ek.lerp(param_res[i][0], param_res[i][-1], np.random.rand())
            for i in range(0, ndim - 2)
        ]

        chi2 = ChiSquareTest(
            domain=PlanarDomain(ScalarBoundingBox2f(0, 1)),
            sample_func=lambda p: instance.sample(p, param=param)[0],
            pdf_func=lambda p: instance.eval(p, param=param),
            sample_dim=2,
            res=31,
            sample_count=100000)

        assert chi2.run(test_count=11 * len(all_warps))
Example #4
0
 def bounds(self):
     from mitsuba.core import ScalarBoundingBox2f
     return ScalarBoundingBox2f([-ek.pi, -1], [ek.pi, 1])
Example #5
0
    def __init__(self, bounds=[-1.0, 1.0]):
        from mitsuba.core import ScalarBoundingBox2f

        self._bounds = ScalarBoundingBox2f(min=(bounds[0], -0.5),
                                           max=(bounds[1], 0.5))