summaryrefslogtreecommitdiff
path: root/source/slang/slang-check-expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-check-expr.cpp')
-rw-r--r--source/slang/slang-check-expr.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/source/slang/slang-check-expr.cpp b/source/slang/slang-check-expr.cpp
index 1f0e1a2dc..4b2d490b7 100644
--- a/source/slang/slang-check-expr.cpp
+++ b/source/slang/slang-check-expr.cpp
@@ -2051,6 +2051,12 @@ namespace Slang
Type* SemanticsVisitor::getDifferentialPairType(Type* primalType)
{
+ if (auto modifiedType = as<ModifiedType>(primalType))
+ {
+ if (modifiedType->findModifier<NoDiffModifierVal>())
+ return modifiedType->base;
+ }
+
// Get a reference to the builtin 'IDifferentiable' interface
auto differentiableInterface = m_astBuilder->getDifferentiableInterface();
@@ -3386,6 +3392,10 @@ namespace Slang
// TODO: validate that `type` is either `float` or a vector of `float`s
return m_astBuilder->getSNormModifierVal();
}
+ else if (auto noDiffModifier = as<NoDiffModifier>(modifier))
+ {
+ return m_astBuilder->getNoDiffModifierVal();
+ }
else
{
// TODO: more complete error message here