TF 2.0 is out! Get hands-on practice at TF World, Oct 28-31. Use code TF20 for 20% off select passes. Register now

tfg.rendering.reflectance.phong.brdf

Evaluates the specular brdf of the Phong model.

tfg.rendering.reflectance.phong.brdf(
    direction_incoming_light,
    direction_outgoing_light,
    surface_normal,
    shininess,
    albedo,
    brdf_normalization=True,
    name=None
)

Defined in rendering/reflectance/phong.py.

Note:

In the following, A1 to An are optional batch dimensions, which must be broadcast compatible.

Note:

The gradient of this function is not smooth when the dot product of the normal with any light is 0.0.

Args:

  • direction_incoming_light: A tensor of shape [A1, ..., An, 3], where the last dimension represents a normalized incoming light vector.
  • direction_outgoing_light: A tensor of shape [A1, ..., An, 3], where the last dimension represents a normalized outgoing light vector.
  • surface_normal: A tensor of shape [A1, ..., An, 3], where the last dimension represents a normalized surface normal.
  • shininess: A tensor of shape [A1, ..., An, 1], where the last dimension represents a non-negative shininess coefficient.
  • albedo: A tensor of shape [A1, ..., An, 3], where the last dimension represents albedo with values in [0,1].
  • brdf_normalization: A bool indicating whether normalization should be applied to enforce the energy conservation property of BRDFs. Note that brdf_normalization must be set to False in order to use the original Blinn specular model.
  • name: A name for this op. Defaults to "phong_brdf".

Returns:

A tensor of shape [A1, ..., An, 3], where the last dimension represents the amount of light reflected in the outgoing light direction.

Raises:

  • ValueError: if the shape of direction_incoming_light, direction_outgoing_light, surface_normal, shininess or albedo is not supported.
  • InvalidArgumentError: if not all of shininess values are non-negative, or if at least one element of albedo is outside of [0,1].