1#ifndef _BBM_GRADIENT_H_
2#define _BBM_GRADIENT_H_
20 template<
typename PARAM>
requires concepts::diff_parameter<PARAM>
23 for(
auto& itr : param)
31 template<
typename PARAM>
requires concepts::diff_parameter<PARAM>
34 for(
auto& itr : param)
39 template<
typename PARAM>
requires concepts::diff_parameter<PARAM>
42 for(
auto& itr : param)
52 template<
typename PARAM>
requires concepts::diff_parameter<PARAM>
55 using Value =
decltype(
gradient(*std::begin(param)) );
58 for(
auto& itr : param)
67 template<
typename PARAM>
requires concepts::diff_parameter<PARAM>
73 for(
auto& itr : param)
83 template<
typename PARAM>
requires concepts::diff_parameter<PARAM>
86 for(
auto& itr : param)
96 backward(std::forward<T>(t));
Definition: vector_util.h:27
Definition: aggregatebsdf.h:29
void track_gradient(T &t, bool toggle=true)
Enable/disable tracking of gradients for a variable.
Definition: backbone.h:451
auto detach_gradients(PARAM &¶m)
Get the detached values from a parameter set.
Definition: gradient.h:68
bool any_gradients_tracked(PARAM &¶m)
Definition: gradient.h:40
void track_gradients(PARAM &¶m, bool toggle=true)
Enable gradients for a parameter set.
Definition: gradient.h:21
bool is_gradient_tracked(const T &t)
Checks if gradients are enabled for a variable.
Definition: backbone.h:436
void forward_gradients(PARAM &¶m)
Forward computation of gradients on a parameter set.
Definition: gradient.h:84
auto gradient(T &t)
Return the gradient.
Definition: backbone.h:423
auto get_gradients(PARAM &¶m)
Get the gradient from a parameter set.
Definition: gradient.h:53
bool all_gradients_tracked(PARAM &¶m)
Check if gradients are tracked.
Definition: gradient.h:32
void backward_gradients(T &&t)
backward computations => passthrough to backbone
Definition: gradient.h:94
auto detach_gradient(T &t)
Detach the value from the gradient computations.
Definition: backbone.h:408
Concepts related to BSDF model parameters.
Extensions for the STL vector class.