docstr: Tests the Jacobian of brdf.
docstr_tok: ["Tests","the","Jacobian","of","brdf","."]
code: def test_brdf_jacobian_random(self):
      """Tests the Jacobian of brdf."""
      tensor_size = np.random.randint(3)
      tensor_shape = np.random.randint(
          1, 10, size=(tensor_size)
      ).tolist()
      direction_incoming_light_init = np.random.uniform(
          -1.0, 1.0, size=tensor_shape + [3]
      )
      direction_outgoing_light_init = np.random.uniform(
          -1.0, 1.0, size=tensor_shape + [3]
      )
      surface_normal_init = np.random.uniform(
          -1.0, 1.0, size=tensor_shape + [3]
      )
      shininess_init = np.random.uniform(size=tensor_shape + [1])
      albedo_init = np.random.random(tensor_shape + [3])
  
      self.assert_jacobian_is_correct_fn(
          phong.brdf,
          [
              direction_incoming_light_init,
              direction_outgoing_light_init,
              surface_normal_init,
              shininess_init,
              albedo_init,
          ],
          atol=1e-5,
          delta=1e-9,
      )
  
file_path: graphics/tensorflow_graphics/rendering/reflectance/tests/phong_test.py
imports: import math
  import sys
  from absl.testing import flagsaver
  from absl.testing import parameterized
  import numpy
  import tensorflow
  from tensorflow_graphics.rendering.reflectance import phong
  from tensorflow_graphics.util import test_case
label_desc: Use image node_id 1 for calling the PhongTest obj's underlying member method code with example usage: obj.test_brdf_jacobian_random() without return types