summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/diff.meta.slang18
1 files changed, 18 insertions, 0 deletions
diff --git a/source/slang/diff.meta.slang b/source/slang/diff.meta.slang
index 033c173ab..a97ab9eaf 100644
--- a/source/slang/diff.meta.slang
+++ b/source/slang/diff.meta.slang
@@ -92,6 +92,24 @@ struct DifferentialPair : IDifferentiable
}
};
+[ForceInline]
+void updatePrimal<T : IDifferentiable>(inout DifferentialPair<T> p, T newPrimal)
+{
+ p = DifferentialPair<T>(newPrimal, p.d);
+}
+
+[ForceInline]
+void updateDiff<T : IDifferentiable>(inout DifferentialPair<T> p, T.Differential newDiff)
+{
+ p = DifferentialPair<T>(p.p, newDiff);
+}
+
+[ForceInline]
+void updatePair<T : IDifferentiable>(inout DifferentialPair<T> p, T newPrimal, T.Differential newDiff)
+{
+ p = DifferentialPair<T>(newPrimal, newDiff);
+}
+
#define VECTOR_MAP_D_UNARY(TYPE, COUNT, D_FUNC, VALUE) \
vector<TYPE, COUNT> result; \