def test_random_parameters(self): self.W = 100 self.H = 100 self.args = self.shader.get_parameters_list(False) gls = [] pys = [] params = [] self.args = funcs.randomize_inputs_torch(self.args, self.shader) self.shader.set_inputs(self.args) def cb(gl): params.append(self.args) py = np.flip(render_iter(self.W, self.H, self.shader.shade, *self.args), axis=0) pys.append(py) gls.append(gl) self.args = funcs.randomize_inputs_torch(self.args, self.shader) self.shader.set_inputs(self.args) funcs.render_opengl_callback_loop(self.W, self.H, self.program, cb, iter=5, freq=4) for py, gl in zip(pys, gls): assert_abs_mean_diff( py, gl, "The average absolute pixel difference of {} is too large when randomizing parameters!" ) funcs.assert_abs_max_diff(py, gl, tol=0.01)
def test_rgb_random(self): self.W = 50 self.H = 100 self.args = self.shader.get_parameters_list(False) self.args = funcs.randomize_inputs_torch(self.args, self.shader) self.shader.set_inputs(self.args) gls = [] pys = [] params = [] def callback(gl): params.append(self.args) py = self.render_py_torch() pys.append(py) gls.append(gl) self.args = funcs.randomize_inputs_torch(self.args, self.shader) self.shader.set_inputs(self.args) render_opengl_callback_loop(self.W, self.H, self.program, callback, 5) assert_abs_mean_diff( pys, gls, "Average pixel difference of {} is too large when randomizing input!", test_name="test_brick_random", tol=self.PIXEL_TOLERANCE) assert_abs_max_diff(pys, gls, tol=self.PIXEL_TOLERANCE)
def test_default_parameters(self): py, gl = self.render_py_torch(), self.render_gl() assert_abs_mean_diff( py, gl, "The average absolute pixel difference of {} is too large!", tol=self.PIXEL_TOLERANCE) assert_abs_max_diff(py, gl, tol=self.PIXEL_TOLERANCE)
def test_smoothstep_for_very_low_res(self): self.W = 5 self.H = 5 py, op = self.render_both() assert_abs_mean_diff(py, op, tol=self.PIXEL_TOLERANCE, test_name="test_smoothstep_for_low_res") assert_abs_max_diff(py, op, tol=self.PIXEL_TOLERANCE)
def test_smoothstep_for_high_res(self): self.W = 200 self.H = 200 py, op = self.render_both() assert_abs_mean_diff(py, op, tol=self.PIXEL_TOLERANCE, test_name="test_smoothstep_for_high_res") assert_abs_max_diff(py, op, tol=self.PIXEL_TOLERANCE)
def test_frag_interpolation_for_very_low_res(self): self.W = 4 self.H = 4 py, op = self.render_both() # save_images(["python_frag_interpolation_LowRes", "opengl_frag_interpolation_LowRes"], [py, op]) assert_abs_mean_diff(py, op, tol=self.PIXEL_TOLERANCE, test_name="test_frag_interpolation_for_low_res") assert_abs_max_diff(py, op, self.PIXEL_TOLERANCE)
def test_alignment_for_high_res(self): self.W = 200 self.H = 200 py, gl = self.render_both() # save_images(["python_alignment_HiRes", "opengl_alignment_HiRes"], [py, op]) assert_abs_mean_diff(py, gl, tol=self.PIXEL_TOLERANCE, test_name="test_alignment_for_high_res") assert_abs_max_diff(py, gl, self.PIXEL_TOLERANCE)
def test_all_params_min(self): for i, info in enumerate(self.shader.get_inputs()): min_ = info[3][0] arg = info[1] in_type = info[2] if "array" in in_type: shape = info[4].shape self.set_arg(arg, torch.ones(shape) * min_) else: self.set_arg(arg, torch.ones(1) * min_) py, gl = self.render_both() assert_abs_max_diff(py, gl, tol=self.PIXEL_TOLERANCE) assert_abs_mean_diff(py, gl, tol=self.PIXEL_TOLERANCE)
def test_size_random(self): pys = [] gls = [] self.set_arg('size', torch.rand((2, ))) def cb(gl): py = self.render_py_torch() pys.append(py) gls.append(gl) self.set_arg('size', torch.rand((2, ))) funcs.render_opengl_callback_loop(self.W, self.H, self.program, cb, 5) funcs.assert_abs_mean_diff(pys, gls, tol=self.PIXEL_TOLERANCE) funcs.assert_abs_max_diff(pys, gls, tol=self.PIXEL_TOLERANCE)
def test_size_max(self): self.set_arg('size', torch.tensor((1., 1.))) py, gl = self.render_both() funcs.assert_abs_mean_diff(py, gl, tol=self.PIXEL_TOLERANCE) funcs.assert_abs_max_diff(py, gl, tol=self.PIXEL_TOLERANCE)
def test_default(self): py, gl = self.render_both() funcs.assert_abs_mean_diff(py, gl, tol=self.PIXEL_TOLERANCE) funcs.assert_abs_max_diff(py, gl, tol=self.PIXEL_TOLERANCE)