HLSL: Handle swizzles on vectors of size 1. Addresses issue #453.
This commit is contained in:
parent
841db35bb3
commit
7d01bd6f0b
@ -101,8 +101,13 @@ gl_FragCoord origin is upper left
|
|||||||
0:27 Construct float (temp 1-component vector of float)
|
0:27 Construct float (temp 1-component vector of float)
|
||||||
0:27 'v' (temp 4-component vector of float)
|
0:27 'v' (temp 4-component vector of float)
|
||||||
0:27 'f1' (temp 1-component vector of float)
|
0:27 'f1' (temp 1-component vector of float)
|
||||||
0:29 Branch: Return with expression
|
0:28 Construct float (temp float)
|
||||||
0:29 'input' (in 4-component vector of float)
|
0:28 'f1' (temp 1-component vector of float)
|
||||||
|
0:29 Construct vec3 (temp 3-component vector of float)
|
||||||
|
0:29 Construct float (temp float)
|
||||||
|
0:29 'f1' (temp 1-component vector of float)
|
||||||
|
0:31 Branch: Return with expression
|
||||||
|
0:31 'input' (in 4-component vector of float)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
|
|
||||||
|
|
||||||
@ -211,13 +216,18 @@ gl_FragCoord origin is upper left
|
|||||||
0:27 Construct float (temp 1-component vector of float)
|
0:27 Construct float (temp 1-component vector of float)
|
||||||
0:27 'v' (temp 4-component vector of float)
|
0:27 'v' (temp 4-component vector of float)
|
||||||
0:27 'f1' (temp 1-component vector of float)
|
0:27 'f1' (temp 1-component vector of float)
|
||||||
0:29 Branch: Return with expression
|
0:28 Construct float (temp float)
|
||||||
0:29 'input' (in 4-component vector of float)
|
0:28 'f1' (temp 1-component vector of float)
|
||||||
|
0:29 Construct vec3 (temp 3-component vector of float)
|
||||||
|
0:29 Construct float (temp float)
|
||||||
|
0:29 'f1' (temp 1-component vector of float)
|
||||||
|
0:31 Branch: Return with expression
|
||||||
|
0:31 'input' (in 4-component vector of float)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 81
|
// Id's are bound by 84
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
@ -321,6 +331,9 @@ gl_FragCoord origin is upper left
|
|||||||
75: 6(float) CompositeExtract 74 0
|
75: 6(float) CompositeExtract 74 0
|
||||||
76: 6(float) Load 69(f1)
|
76: 6(float) Load 69(f1)
|
||||||
77: 41(bool) FOrdLessThan 75 76
|
77: 41(bool) FOrdLessThan 75 76
|
||||||
78: 7(fvec4) Load 11(input)
|
78: 6(float) Load 69(f1)
|
||||||
ReturnValue 78
|
79: 6(float) Load 69(f1)
|
||||||
|
80: 22(fvec3) CompositeConstruct 79 79 79
|
||||||
|
81: 7(fvec4) Load 11(input)
|
||||||
|
ReturnValue 81
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
@ -25,6 +25,8 @@ float4 PixelShaderFunction(float4 input, float f) : COLOR0
|
|||||||
|
|
||||||
f1 == v;
|
f1 == v;
|
||||||
v < f1;
|
v < f1;
|
||||||
|
f1.x;
|
||||||
|
f1.xxx;
|
||||||
|
|
||||||
return input;
|
return input;
|
||||||
}
|
}
|
||||||
|
@ -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.1464"
|
#define GLSLANG_REVISION "Overload400-PrecQual.1465"
|
||||||
#define GLSLANG_DATE "02-Sep-2016"
|
#define GLSLANG_DATE "02-Sep-2016"
|
||||||
|
@ -274,7 +274,8 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo
|
|||||||
if (newType != EbtVoid) {
|
if (newType != EbtVoid) {
|
||||||
child = addConversion(op, TType(newType, EvqTemporary, child->getVectorSize(),
|
child = addConversion(op, TType(newType, EvqTemporary, child->getVectorSize(),
|
||||||
child->getMatrixCols(),
|
child->getMatrixCols(),
|
||||||
child->getMatrixRows()),
|
child->getMatrixRows(),
|
||||||
|
child->isVector()),
|
||||||
child);
|
child);
|
||||||
if (child == 0)
|
if (child == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -641,6 +641,15 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt
|
|||||||
return addConstructor(loc, base, type);
|
return addConstructor(loc, base, type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (base->getVectorSize() == 1) {
|
||||||
|
TType scalarType(base->getBasicType(), EvqTemporary, 1);
|
||||||
|
if (fields.num == 1)
|
||||||
|
return addConstructor(loc, base, scalarType);
|
||||||
|
else {
|
||||||
|
TType vectorType(base->getBasicType(), EvqTemporary, fields.num);
|
||||||
|
return addConstructor(loc, addConstructor(loc, base, scalarType), vectorType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (base->getType().getQualifier().isFrontEndConstant())
|
if (base->getType().getQualifier().isFrontEndConstant())
|
||||||
result = intermediate.foldSwizzle(base, fields, loc);
|
result = intermediate.foldSwizzle(base, fields, loc);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user