HLSL: Fix boolean conversion bug and add more tests for ?:.
Null-conversion needs the right sized vectors to kick out with matching types.
This commit is contained in:
parent
636b62db8b
commit
b5e739c20e
File diff suppressed because it is too large
Load Diff
@ -7,7 +7,13 @@ float f;
|
|||||||
float4 vectorCond()
|
float4 vectorCond()
|
||||||
{
|
{
|
||||||
return (c4 ? t4 : f4) +
|
return (c4 ? t4 : f4) +
|
||||||
(c4 ? t : f );
|
(c4 ? t : f ) +
|
||||||
|
(t4 < f4 ? t4 : f4);
|
||||||
|
}
|
||||||
|
|
||||||
|
float2 fbSelect(bool2 cnd, float2 src0, float2 src1)
|
||||||
|
{
|
||||||
|
return cnd ? src0 : src1;
|
||||||
}
|
}
|
||||||
|
|
||||||
float4 PixelShaderFunction(float4 input) : COLOR0
|
float4 PixelShaderFunction(float4 input) : COLOR0
|
||||||
@ -24,5 +30,6 @@ float4 PixelShaderFunction(float4 input) : COLOR0
|
|||||||
e = a = b ? c = d : 10, b = a ? d = c : 11;
|
e = a = b ? c = d : 10, b = a ? d = c : 11;
|
||||||
float4 f;
|
float4 f;
|
||||||
f = ret.x < input.y ? c * input : d * input;
|
f = ret.x < input.y ? c * input : d * input;
|
||||||
return e * ret + f + vectorCond();
|
return e * ret + f + vectorCond() +
|
||||||
|
float4(fbSelect(bool2(true, false), float2(1.0, 2.0), float2(3.0, 4.0)), 10.0, 10.0);
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,5 @@
|
|||||||
// For the version, it uses the latest git tag followed by the number of commits.
|
// For the version, it uses the latest git tag followed by the number of commits.
|
||||||
// For the date, it uses the current date (when then script is run).
|
// For the date, it uses the current date (when then script is run).
|
||||||
|
|
||||||
#define GLSLANG_REVISION "Overload400-PrecQual.1992"
|
#define GLSLANG_REVISION "Overload400-PrecQual.1994"
|
||||||
#define GLSLANG_DATE "11-Apr-2017"
|
#define GLSLANG_DATE "11-Apr-2017"
|
||||||
|
@ -4536,7 +4536,7 @@ TIntermTyped* HlslParseContext::convertConditionalExpression(const TSourceLoc& l
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return intermediate.addConversion(EOpConstructBool, TType(EbtBool), condition);
|
return intermediate.addConversion(EOpConstructBool, TType(EbtBool, EvqTemporary, condition->getVectorSize()), condition);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user