diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out index 2157b488..105800b2 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 b2b80d05..61d5c59c 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); }