Evaluates the specular brdf of the Phong model.
tfg.rendering.reflectance.phong.brdf(
direction_incoming_light: type_alias.TensorLike,
direction_outgoing_light: type_alias.TensorLike,
surface_normal: type_alias.TensorLike,
shininess: type_alias.TensorLike,
albedo: type_alias.TensorLike,
brdf_normalization: bool = True,
name: str = 'phong_brdf'
) -> tf.Tensor
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].
|