From 1a4bbc4a95309ca3b16340098d9048a19af91d92 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 16 Oct 2017 13:11:53 -0600 Subject: [PATCH] HLSL: More clip fix: It is more involved than previous commit. Complete. --- Test/baseResults/hlsl.intrinsics.frag.out | 4 ++-- hlsl/hlslParseHelper.cpp | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out index 2157b4882..105800b23 100644 --- a/Test/baseResults/hlsl.intrinsics.frag.out +++ b/Test/baseResults/hlsl.intrinsics.frag.out @@ -88,7 +88,7 @@ gl_FragCoord origin is upper left 0:34 Compare Less Than ( temp bool) 0:34 'r005' ( temp int) 0:34 Constant: -0:34 0.000000 +0:34 0 (const int) 0:34 true case 0:34 Branch: Kill 0:35 Sequence @@ -2906,7 +2906,7 @@ gl_FragCoord origin is upper left 0:34 Compare Less Than ( temp bool) 0:34 'r005' ( temp int) 0:34 Constant: -0:34 0.000000 +0:34 0 (const int) 0:34 true case 0:34 Branch: Kill 0:35 Sequence diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index b2b80d05d..61d5c59c2 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -4503,14 +4503,21 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& std::max(arg0->getType().getMatrixRows(), 1); TConstUnion zero; - zero.setDConst(0.0); + if (arg0->getType().isIntegerDomain()) + zero.setDConst(0); + else + zero.setDConst(0.0); TConstUnionArray zeros(constComponentCount, zero); less->getSequence().push_back(intermediate.addConstantUnion(zeros, arg0->getType(), loc, true)); compareNode = intermediate.addBuiltInFunctionCall(loc, EOpAny, true, less, TType(EbtBool)); } else { - TIntermTyped* zero = intermediate.addConstantUnion(0, type0, loc, true); + TIntermTyped* zero; + if (arg0->getType().isIntegerDomain()) + zero = intermediate.addConstantUnion(0, loc, true); + else + zero = intermediate.addConstantUnion(0.0, type0, loc, true); compareNode = handleBinaryMath(loc, "clip", EOpLessThan, arg0, zero); }