def __init__(self, bounds=None): from mitsuba.core import ScalarBoundingBox2f if bounds is None: bounds = ScalarBoundingBox2f(-1, 1) self._bounds = bounds
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()
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))
def bounds(self): from mitsuba.core import ScalarBoundingBox2f return ScalarBoundingBox2f([-ek.pi, -1], [ek.pi, 1])
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))