aboutsummaryrefslogtreecommitdiff
path: root/src/amberscript/parser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/amberscript/parser.cc')
-rw-r--r--src/amberscript/parser.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/amberscript/parser.cc b/src/amberscript/parser.cc
index d3e0eb6..8cd6e19 100644
--- a/src/amberscript/parser.cc
+++ b/src/amberscript/parser.cc
@@ -3893,6 +3893,30 @@ Result Parser::ParseSampler() {
sampler->SetNormalizedCoords(false);
sampler->SetMinLOD(0.0f);
sampler->SetMaxLOD(0.0f);
+ } else if (param == "COMPARE") {
+ token = tokenizer_->NextToken();
+
+ if (!token->IsIdentifier())
+ return Result("invalid value for COMPARE");
+
+ if (token->AsString() == "on")
+ sampler->SetCompareEnable(true);
+ else if (token->AsString() == "off")
+ sampler->SetCompareEnable(false);
+ else
+ return Result("invalid value for COMPARE: " + token->AsString());
+ } else if (param == "COMPARE_OP") {
+ token = tokenizer_->NextToken();
+
+ if (!token->IsIdentifier())
+ return Result("invalid value for COMPARE_OP");
+
+ CompareOp compare_op = StrToCompareOp(token->AsString());
+ if (compare_op != CompareOp::kUnknown) {
+ sampler->SetCompareOp(compare_op);
+ } else {
+ return Result("invalid value for COMPARE_OP: " + token->AsString());
+ }
} else {
return Result("unexpected sampler parameter " + param);
}