mirror of https://github.com/bkaradzic/bgfx
Updated glslang.
This commit is contained in:
parent
79ba213379
commit
1d44a7a030
|
@ -869,14 +869,20 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
|
|||
builder.addCapability(spv::CapabilityShader);
|
||||
break;
|
||||
|
||||
case EShLangTessEvaluation:
|
||||
case EShLangTessControl:
|
||||
builder.addCapability(spv::CapabilityTessellation);
|
||||
builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices());
|
||||
break;
|
||||
|
||||
case EShLangTessEvaluation:
|
||||
builder.addCapability(spv::CapabilityTessellation);
|
||||
switch (glslangIntermediate->getInputPrimitive()) {
|
||||
glslang::TLayoutGeometry primitive;
|
||||
|
||||
if (glslangIntermediate->getStage() == EShLangTessControl) {
|
||||
builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices());
|
||||
primitive = glslangIntermediate->getOutputPrimitive();
|
||||
} else {
|
||||
primitive = glslangIntermediate->getInputPrimitive();
|
||||
}
|
||||
|
||||
switch (primitive) {
|
||||
case glslang::ElgTriangles: mode = spv::ExecutionModeTriangles; break;
|
||||
case glslang::ElgQuads: mode = spv::ExecutionModeQuads; break;
|
||||
case glslang::ElgIsolines: mode = spv::ExecutionModeIsolines; break;
|
||||
|
@ -1823,7 +1829,15 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang
|
|||
node->getFalseBlock()->traverse(this);
|
||||
spv::Id falseValue = accessChainLoad(node->getTrueBlock()->getAsTyped()->getType());
|
||||
|
||||
spv::Id select = builder.createTriOp(spv::OpSelect, convertGlslangToSpvType(node->getType()), condition, trueValue, falseValue);
|
||||
// smear condition to vector, if necessary (AST is always scalar)
|
||||
if (builder.isVector(trueValue))
|
||||
condition = builder.smearScalar(spv::NoPrecision, condition,
|
||||
builder.makeVectorType(builder.makeBoolType(),
|
||||
builder.getNumComponents(trueValue)));
|
||||
|
||||
spv::Id select = builder.createTriOp(spv::OpSelect,
|
||||
convertGlslangToSpvType(node->getType()), condition,
|
||||
trueValue, falseValue);
|
||||
builder.clearAccessChain();
|
||||
builder.setAccessChainRValue(select);
|
||||
};
|
||||
|
@ -2272,12 +2286,21 @@ bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member)
|
|||
{
|
||||
auto& extensions = glslangIntermediate->getRequestedExtensions();
|
||||
|
||||
if (member.getFieldName() == "gl_ViewportMask" &&
|
||||
extensions.find("GL_NV_viewport_array2") == extensions.end())
|
||||
return true;
|
||||
if (member.getFieldName() == "gl_SecondaryViewportMaskNV" &&
|
||||
extensions.find("GL_NV_stereo_view_rendering") == extensions.end())
|
||||
return true;
|
||||
if (member.getFieldName() == "gl_SecondaryPositionNV" &&
|
||||
extensions.find("GL_NV_stereo_view_rendering") == extensions.end())
|
||||
return true;
|
||||
if (member.getFieldName() == "gl_PositionPerViewNV" &&
|
||||
extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end())
|
||||
return true;
|
||||
if (member.getFieldName() == "gl_ViewportMaskPerViewNV" &&
|
||||
extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
};
|
||||
|
@ -2777,7 +2800,7 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF
|
|||
if (paramType.containsOpaque() || // sampler, etc.
|
||||
(paramType.getBasicType() == glslang::EbtBlock &&
|
||||
paramType.getQualifier().storage == glslang::EvqBuffer) || // SSBO
|
||||
p == 0 && implicitThis) // implicit 'this'
|
||||
(p == 0 && implicitThis)) // implicit 'this'
|
||||
typeId = builder.makePointer(TranslateStorageClass(paramType), typeId);
|
||||
else if (paramType.getQualifier().storage != glslang::EvqConstReadOnly)
|
||||
typeId = builder.makePointer(spv::StorageClassFunction, typeId);
|
||||
|
@ -4609,6 +4632,9 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
|
|||
spv::Id typeId0 = 0;
|
||||
if (consumedOperands > 0)
|
||||
typeId0 = builder.getTypeId(operands[0]);
|
||||
spv::Id typeId1 = 0;
|
||||
if (consumedOperands > 1)
|
||||
typeId1 = builder.getTypeId(operands[1]);
|
||||
spv::Id frexpIntType = 0;
|
||||
|
||||
switch (op) {
|
||||
|
@ -4730,13 +4756,22 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
|
|||
libCall = spv::GLSLstd450Fma;
|
||||
break;
|
||||
case glslang::EOpFrexp:
|
||||
libCall = spv::GLSLstd450FrexpStruct;
|
||||
if (builder.getNumComponents(operands[0]) == 1)
|
||||
frexpIntType = builder.makeIntegerType(32, true);
|
||||
else
|
||||
frexpIntType = builder.makeVectorType(builder.makeIntegerType(32, true), builder.getNumComponents(operands[0]));
|
||||
typeId = builder.makeStructResultType(typeId0, frexpIntType);
|
||||
consumedOperands = 1;
|
||||
{
|
||||
libCall = spv::GLSLstd450FrexpStruct;
|
||||
assert(builder.isPointerType(typeId1));
|
||||
typeId1 = builder.getContainedTypeId(typeId1);
|
||||
#ifdef AMD_EXTENSIONS
|
||||
int width = builder.getScalarTypeWidth(typeId1);
|
||||
#else
|
||||
int width = 32;
|
||||
#endif
|
||||
if (builder.getNumComponents(operands[0]) == 1)
|
||||
frexpIntType = builder.makeIntegerType(width, true);
|
||||
else
|
||||
frexpIntType = builder.makeVectorType(builder.makeIntegerType(width, true), builder.getNumComponents(operands[0]));
|
||||
typeId = builder.makeStructResultType(typeId0, frexpIntType);
|
||||
consumedOperands = 1;
|
||||
}
|
||||
break;
|
||||
case glslang::EOpLdexp:
|
||||
libCall = spv::GLSLstd450Ldexp;
|
||||
|
@ -4844,9 +4879,18 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
|
|||
builder.createStore(builder.createCompositeExtract(id, typeId0, 1), operands[2]);
|
||||
break;
|
||||
case glslang::EOpFrexp:
|
||||
assert(operands.size() == 2);
|
||||
builder.createStore(builder.createCompositeExtract(id, frexpIntType, 1), operands[1]);
|
||||
id = builder.createCompositeExtract(id, typeId0, 0);
|
||||
{
|
||||
assert(operands.size() == 2);
|
||||
if (builder.isFloatType(builder.getScalarTypeId(typeId1))) {
|
||||
// "exp" is floating-point type (from HLSL intrinsic)
|
||||
spv::Id member1 = builder.createCompositeExtract(id, frexpIntType, 1);
|
||||
member1 = builder.createUnaryOp(spv::OpConvertSToF, typeId1, member1);
|
||||
builder.createStore(member1, operands[1]);
|
||||
} else
|
||||
// "exp" is integer type (from GLSL built-in function)
|
||||
builder.createStore(builder.createCompositeExtract(id, frexpIntType, 1), operands[1]);
|
||||
id = builder.createCompositeExtract(id, typeId0, 0);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -134,6 +134,9 @@ public:
|
|||
bool isSampledImage(Id resultId) const { return isSampledImageType(getTypeId(resultId)); }
|
||||
|
||||
bool isBoolType(Id typeId) const { return groupedTypes[OpTypeBool].size() > 0 && typeId == groupedTypes[OpTypeBool].back()->getResultId(); }
|
||||
bool isIntType(Id typeId) const { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) != 0; }
|
||||
bool isUintType(Id typeId) const { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) == 0; }
|
||||
bool isFloatType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat; }
|
||||
bool isPointerType(Id typeId) const { return getTypeClass(typeId) == OpTypePointer; }
|
||||
bool isScalarType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat || getTypeClass(typeId) == OpTypeInt || getTypeClass(typeId) == OpTypeBool; }
|
||||
bool isVectorType(Id typeId) const { return getTypeClass(typeId) == OpTypeVector; }
|
||||
|
@ -153,6 +156,13 @@ public:
|
|||
unsigned int getConstantScalar(Id resultId) const { return module.getInstruction(resultId)->getImmediateOperand(0); }
|
||||
StorageClass getStorageClass(Id resultId) const { return getTypeStorageClass(getTypeId(resultId)); }
|
||||
|
||||
int getScalarTypeWidth(Id typeId) const
|
||||
{
|
||||
Id scalarTypeId = getScalarTypeId(typeId);
|
||||
assert(getTypeClass(scalarTypeId) == OpTypeInt || getTypeClass(scalarTypeId) == OpTypeFloat);
|
||||
return module.getInstruction(scalarTypeId)->getImmediateOperand(0);
|
||||
}
|
||||
|
||||
int getTypeNumColumns(Id typeId) const
|
||||
{
|
||||
assert(isMatrixType(typeId));
|
||||
|
|
|
@ -9,7 +9,7 @@ gl_FragCoord origin is upper left
|
|||
0:11 Test condition and select ( temp void)
|
||||
0:11 Condition
|
||||
0:11 Constant:
|
||||
0:11 0 (const int)
|
||||
0:11 false (const bool)
|
||||
0:11 true case is null
|
||||
0:2 Function Definition: PixelShaderFunction( ( temp void)
|
||||
0:2 Function Parameters:
|
||||
|
@ -36,7 +36,7 @@ gl_FragCoord origin is upper left
|
|||
0:11 Test condition and select ( temp void)
|
||||
0:11 Condition
|
||||
0:11 Constant:
|
||||
0:11 0 (const int)
|
||||
0:11 false (const bool)
|
||||
0:11 true case is null
|
||||
0:2 Function Definition: PixelShaderFunction( ( temp void)
|
||||
0:2 Function Parameters:
|
||||
|
@ -71,8 +71,8 @@ gl_FragCoord origin is upper left
|
|||
7: TypeVector 6(float) 4
|
||||
8: TypePointer Function 7(fvec4)
|
||||
9: TypeFunction 2 8(ptr)
|
||||
13: TypeInt 32 1
|
||||
14: 13(int) Constant 0
|
||||
13: TypeBool
|
||||
14: 13(bool) ConstantFalse
|
||||
18: TypePointer Input 7(fvec4)
|
||||
19(input): 18(ptr) Variable Input
|
||||
4(PixelShaderFunction): 2 Function None 3
|
||||
|
|
|
@ -60,14 +60,14 @@ output primitive = line_strip
|
|||
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
|
||||
0:16 move second child to first child ( temp 3-element array of uint)
|
||||
0:? 'test' ( temp 3-element array of uint)
|
||||
0:? 'test' (layout( location=3) in 3-element array of uint)
|
||||
0:? 'test' (layout( location=1) in 3-element array of uint)
|
||||
0:16 Function Call: @main(u1[3];u1[3];struct-PSInput-f1-i11; ( temp void)
|
||||
0:? 'VertexID' ( temp 3-element array of uint)
|
||||
0:? 'test' ( temp 3-element array of uint)
|
||||
0:? 'OutputStream' ( temp structure{ temp float myfloat, temp int something})
|
||||
0:? Linker Objects
|
||||
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
|
||||
0:? 'test' (layout( location=3) in 3-element array of uint)
|
||||
0:? 'test' (layout( location=1) in 3-element array of uint)
|
||||
|
||||
|
||||
Linked geometry stage:
|
||||
|
@ -134,14 +134,14 @@ output primitive = line_strip
|
|||
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
|
||||
0:16 move second child to first child ( temp 3-element array of uint)
|
||||
0:? 'test' ( temp 3-element array of uint)
|
||||
0:? 'test' (layout( location=3) in 3-element array of uint)
|
||||
0:? 'test' (layout( location=1) in 3-element array of uint)
|
||||
0:16 Function Call: @main(u1[3];u1[3];struct-PSInput-f1-i11; ( temp void)
|
||||
0:? 'VertexID' ( temp 3-element array of uint)
|
||||
0:? 'test' ( temp 3-element array of uint)
|
||||
0:? 'OutputStream' ( temp structure{ temp float myfloat, temp int something})
|
||||
0:? Linker Objects
|
||||
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
|
||||
0:? 'test' (layout( location=3) in 3-element array of uint)
|
||||
0:? 'test' (layout( location=1) in 3-element array of uint)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
|
@ -173,7 +173,7 @@ output primitive = line_strip
|
|||
Name 53 "param"
|
||||
Name 55 "param"
|
||||
Decorate 45(VertexID) Location 0
|
||||
Decorate 48(test) Location 3
|
||||
Decorate 48(test) Location 1
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
|
|
|
@ -0,0 +1,122 @@
|
|||
hlsl.clip.frag
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:3 Function Definition: GetEntitySelectClip( ( temp float)
|
||||
0:3 Function Parameters:
|
||||
0:? Sequence
|
||||
0:4 Branch: Return with expression
|
||||
0:4 Constant:
|
||||
0:4 1.000000
|
||||
0:8 Function Definition: @main( ( temp 4-component vector of float)
|
||||
0:8 Function Parameters:
|
||||
0:? Sequence
|
||||
0:9 Test condition and select ( temp void)
|
||||
0:9 Condition
|
||||
0:9 Compare Less Than ( temp bool)
|
||||
0:9 Function Call: GetEntitySelectClip( ( temp float)
|
||||
0:9 Constant:
|
||||
0:9 0.000000
|
||||
0:9 true case
|
||||
0:9 Branch: Kill
|
||||
0:11 Branch: Return with expression
|
||||
0:11 Constant:
|
||||
0:11 0.000000
|
||||
0:11 0.000000
|
||||
0:11 0.000000
|
||||
0:11 0.000000
|
||||
0:8 Function Definition: main( ( temp void)
|
||||
0:8 Function Parameters:
|
||||
0:? Sequence
|
||||
0:8 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
0:8 Function Call: @main( ( temp 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:3 Function Definition: GetEntitySelectClip( ( temp float)
|
||||
0:3 Function Parameters:
|
||||
0:? Sequence
|
||||
0:4 Branch: Return with expression
|
||||
0:4 Constant:
|
||||
0:4 1.000000
|
||||
0:8 Function Definition: @main( ( temp 4-component vector of float)
|
||||
0:8 Function Parameters:
|
||||
0:? Sequence
|
||||
0:9 Test condition and select ( temp void)
|
||||
0:9 Condition
|
||||
0:9 Compare Less Than ( temp bool)
|
||||
0:9 Function Call: GetEntitySelectClip( ( temp float)
|
||||
0:9 Constant:
|
||||
0:9 0.000000
|
||||
0:9 true case
|
||||
0:9 Branch: Kill
|
||||
0:11 Branch: Return with expression
|
||||
0:11 Constant:
|
||||
0:11 0.000000
|
||||
0:11 0.000000
|
||||
0:11 0.000000
|
||||
0:11 0.000000
|
||||
0:8 Function Definition: main( ( temp void)
|
||||
0:8 Function Parameters:
|
||||
0:? Sequence
|
||||
0:8 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
0:8 Function Call: @main( ( temp 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 30
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 28
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 8 "GetEntitySelectClip("
|
||||
Name 12 "@main("
|
||||
Name 28 "@entryPointOutput"
|
||||
Decorate 28(@entryPointOutput) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeFunction 6(float)
|
||||
10: TypeVector 6(float) 4
|
||||
11: TypeFunction 10(fvec4)
|
||||
14: 6(float) Constant 1065353216
|
||||
18: 6(float) Constant 0
|
||||
19: TypeBool
|
||||
24: 10(fvec4) ConstantComposite 18 18 18 18
|
||||
27: TypePointer Output 10(fvec4)
|
||||
28(@entryPointOutput): 27(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
29: 10(fvec4) FunctionCall 12(@main()
|
||||
Store 28(@entryPointOutput) 29
|
||||
Return
|
||||
FunctionEnd
|
||||
8(GetEntitySelectClip(): 6(float) Function None 7
|
||||
9: Label
|
||||
ReturnValue 14
|
||||
FunctionEnd
|
||||
12(@main(): 10(fvec4) Function None 11
|
||||
13: Label
|
||||
17: 6(float) FunctionCall 8(GetEntitySelectClip()
|
||||
20: 19(bool) FOrdLessThan 17 18
|
||||
SelectionMerge 22 None
|
||||
BranchConditional 20 21 22
|
||||
21: Label
|
||||
Kill
|
||||
22: Label
|
||||
ReturnValue 24
|
||||
FunctionEnd
|
|
@ -55,7 +55,8 @@ gl_FragCoord origin is upper left
|
|||
0:12 'a' ( temp int)
|
||||
0:12 Test condition and select ( temp int)
|
||||
0:12 Condition
|
||||
0:12 'b' ( temp int)
|
||||
0:12 Convert int to bool ( temp bool)
|
||||
0:12 'b' ( temp int)
|
||||
0:12 true case
|
||||
0:12 move second child to first child ( temp int)
|
||||
0:12 'c' ( temp int)
|
||||
|
@ -67,7 +68,8 @@ gl_FragCoord origin is upper left
|
|||
0:12 'b' ( temp int)
|
||||
0:12 Test condition and select ( temp int)
|
||||
0:12 Condition
|
||||
0:12 'a' ( temp int)
|
||||
0:12 Convert int to bool ( temp bool)
|
||||
0:12 'a' ( temp int)
|
||||
0:12 true case
|
||||
0:12 move second child to first child ( temp int)
|
||||
0:12 'd' ( temp int)
|
||||
|
@ -179,7 +181,8 @@ gl_FragCoord origin is upper left
|
|||
0:12 'a' ( temp int)
|
||||
0:12 Test condition and select ( temp int)
|
||||
0:12 Condition
|
||||
0:12 'b' ( temp int)
|
||||
0:12 Convert int to bool ( temp bool)
|
||||
0:12 'b' ( temp int)
|
||||
0:12 true case
|
||||
0:12 move second child to first child ( temp int)
|
||||
0:12 'c' ( temp int)
|
||||
|
@ -191,7 +194,8 @@ gl_FragCoord origin is upper left
|
|||
0:12 'b' ( temp int)
|
||||
0:12 Test condition and select ( temp int)
|
||||
0:12 Condition
|
||||
0:12 'a' ( temp int)
|
||||
0:12 Convert int to bool ( temp bool)
|
||||
0:12 'a' ( temp int)
|
||||
0:12 true case
|
||||
0:12 move second child to first child ( temp int)
|
||||
0:12 'd' ( temp int)
|
||||
|
@ -245,12 +249,12 @@ gl_FragCoord origin is upper left
|
|||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 100
|
||||
// Id's are bound by 102
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 93 96
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 95 98
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "PixelShaderFunction"
|
||||
Name 11 "@PixelShaderFunction(vf4;"
|
||||
|
@ -261,13 +265,13 @@ gl_FragCoord origin is upper left
|
|||
Name 21 "d"
|
||||
Name 22 "ret"
|
||||
Name 42 "e"
|
||||
Name 59 "f"
|
||||
Name 91 "input"
|
||||
Name 64 "f"
|
||||
Name 93 "input"
|
||||
Name 96 "@entryPointOutput"
|
||||
Name 97 "param"
|
||||
Decorate 93(input) Location 0
|
||||
Decorate 96(@entryPointOutput) Location 0
|
||||
Name 95 "input"
|
||||
Name 98 "@entryPointOutput"
|
||||
Name 99 "param"
|
||||
Decorate 95(input) Location 0
|
||||
Decorate 98(@entryPointOutput) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
@ -279,27 +283,27 @@ gl_FragCoord origin is upper left
|
|||
16: 13(int) Constant 5
|
||||
18: 13(int) Constant 6
|
||||
20: 13(int) Constant 7
|
||||
49: 13(int) Constant 10
|
||||
57: 13(int) Constant 11
|
||||
61: TypeInt 32 0
|
||||
62: 61(int) Constant 0
|
||||
63: TypePointer Function 6(float)
|
||||
66: 61(int) Constant 1
|
||||
69: TypeBool
|
||||
92: TypePointer Input 7(fvec4)
|
||||
93(input): 92(ptr) Variable Input
|
||||
95: TypePointer Output 7(fvec4)
|
||||
96(@entryPointOutput): 95(ptr) Variable Output
|
||||
45: TypeBool
|
||||
46: TypeInt 32 0
|
||||
47: 46(int) Constant 0
|
||||
53: 13(int) Constant 10
|
||||
62: 13(int) Constant 11
|
||||
66: TypePointer Function 6(float)
|
||||
69: 46(int) Constant 1
|
||||
94: TypePointer Input 7(fvec4)
|
||||
95(input): 94(ptr) Variable Input
|
||||
97: TypePointer Output 7(fvec4)
|
||||
98(@entryPointOutput): 97(ptr) Variable Output
|
||||
4(PixelShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
91(input): 8(ptr) Variable Function
|
||||
97(param): 8(ptr) Variable Function
|
||||
94: 7(fvec4) Load 93(input)
|
||||
Store 91(input) 94
|
||||
98: 7(fvec4) Load 91(input)
|
||||
Store 97(param) 98
|
||||
99: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 97(param)
|
||||
Store 96(@entryPointOutput) 99
|
||||
93(input): 8(ptr) Variable Function
|
||||
99(param): 8(ptr) Variable Function
|
||||
96: 7(fvec4) Load 95(input)
|
||||
Store 93(input) 96
|
||||
100: 7(fvec4) Load 93(input)
|
||||
Store 99(param) 100
|
||||
101: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 99(param)
|
||||
Store 98(@entryPointOutput) 101
|
||||
Return
|
||||
FunctionEnd
|
||||
11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9
|
||||
|
@ -312,9 +316,9 @@ gl_FragCoord origin is upper left
|
|||
22(ret): 8(ptr) Variable Function
|
||||
42(e): 14(ptr) Variable Function
|
||||
43: 14(ptr) Variable Function
|
||||
51: 14(ptr) Variable Function
|
||||
59(f): 8(ptr) Variable Function
|
||||
60: 8(ptr) Variable Function
|
||||
55: 14(ptr) Variable Function
|
||||
64(f): 8(ptr) Variable Function
|
||||
65: 8(ptr) Variable Function
|
||||
Store 15(a) 16
|
||||
Store 17(b) 18
|
||||
Store 19(c) 20
|
||||
|
@ -340,63 +344,65 @@ gl_FragCoord origin is upper left
|
|||
41: 7(fvec4) FAdd 36 40
|
||||
Store 22(ret) 41
|
||||
44: 13(int) Load 17(b)
|
||||
SelectionMerge 46 None
|
||||
BranchConditional 44 45 48
|
||||
45: Label
|
||||
47: 13(int) Load 21(d)
|
||||
Store 19(c) 47
|
||||
Store 43 47
|
||||
Branch 46
|
||||
48: Label
|
||||
Store 43 49
|
||||
Branch 46
|
||||
46: Label
|
||||
50: 13(int) Load 43
|
||||
Store 15(a) 50
|
||||
Store 42(e) 50
|
||||
52: 13(int) Load 15(a)
|
||||
SelectionMerge 54 None
|
||||
BranchConditional 52 53 56
|
||||
53: Label
|
||||
55: 13(int) Load 19(c)
|
||||
Store 21(d) 55
|
||||
Store 51 55
|
||||
Branch 54
|
||||
56: Label
|
||||
Store 51 57
|
||||
Branch 54
|
||||
54: Label
|
||||
58: 13(int) Load 51
|
||||
Store 17(b) 58
|
||||
64: 63(ptr) AccessChain 22(ret) 62
|
||||
65: 6(float) Load 64
|
||||
67: 63(ptr) AccessChain 10(input) 66
|
||||
48: 45(bool) INotEqual 44 47
|
||||
SelectionMerge 50 None
|
||||
BranchConditional 48 49 52
|
||||
49: Label
|
||||
51: 13(int) Load 21(d)
|
||||
Store 19(c) 51
|
||||
Store 43 51
|
||||
Branch 50
|
||||
52: Label
|
||||
Store 43 53
|
||||
Branch 50
|
||||
50: Label
|
||||
54: 13(int) Load 43
|
||||
Store 15(a) 54
|
||||
Store 42(e) 54
|
||||
56: 13(int) Load 15(a)
|
||||
57: 45(bool) INotEqual 56 47
|
||||
SelectionMerge 59 None
|
||||
BranchConditional 57 58 61
|
||||
58: Label
|
||||
60: 13(int) Load 19(c)
|
||||
Store 21(d) 60
|
||||
Store 55 60
|
||||
Branch 59
|
||||
61: Label
|
||||
Store 55 62
|
||||
Branch 59
|
||||
59: Label
|
||||
63: 13(int) Load 55
|
||||
Store 17(b) 63
|
||||
67: 66(ptr) AccessChain 22(ret) 47
|
||||
68: 6(float) Load 67
|
||||
70: 69(bool) FOrdLessThan 65 68
|
||||
SelectionMerge 72 None
|
||||
BranchConditional 70 71 77
|
||||
71: Label
|
||||
73: 13(int) Load 19(c)
|
||||
74: 6(float) ConvertSToF 73
|
||||
75: 7(fvec4) Load 10(input)
|
||||
76: 7(fvec4) VectorTimesScalar 75 74
|
||||
Store 60 76
|
||||
Branch 72
|
||||
77: Label
|
||||
78: 13(int) Load 21(d)
|
||||
79: 6(float) ConvertSToF 78
|
||||
80: 7(fvec4) Load 10(input)
|
||||
81: 7(fvec4) VectorTimesScalar 80 79
|
||||
Store 60 81
|
||||
Branch 72
|
||||
72: Label
|
||||
82: 7(fvec4) Load 60
|
||||
Store 59(f) 82
|
||||
83: 13(int) Load 42(e)
|
||||
84: 6(float) ConvertSToF 83
|
||||
85: 7(fvec4) Load 22(ret)
|
||||
86: 7(fvec4) VectorTimesScalar 85 84
|
||||
87: 7(fvec4) Load 59(f)
|
||||
88: 7(fvec4) FAdd 86 87
|
||||
ReturnValue 88
|
||||
70: 66(ptr) AccessChain 10(input) 69
|
||||
71: 6(float) Load 70
|
||||
72: 45(bool) FOrdLessThan 68 71
|
||||
SelectionMerge 74 None
|
||||
BranchConditional 72 73 79
|
||||
73: Label
|
||||
75: 13(int) Load 19(c)
|
||||
76: 6(float) ConvertSToF 75
|
||||
77: 7(fvec4) Load 10(input)
|
||||
78: 7(fvec4) VectorTimesScalar 77 76
|
||||
Store 65 78
|
||||
Branch 74
|
||||
79: Label
|
||||
80: 13(int) Load 21(d)
|
||||
81: 6(float) ConvertSToF 80
|
||||
82: 7(fvec4) Load 10(input)
|
||||
83: 7(fvec4) VectorTimesScalar 82 81
|
||||
Store 65 83
|
||||
Branch 74
|
||||
74: Label
|
||||
84: 7(fvec4) Load 65
|
||||
Store 64(f) 84
|
||||
85: 13(int) Load 42(e)
|
||||
86: 6(float) ConvertSToF 85
|
||||
87: 7(fvec4) Load 22(ret)
|
||||
88: 7(fvec4) VectorTimesScalar 87 86
|
||||
89: 7(fvec4) Load 64(f)
|
||||
90: 7(fvec4) FAdd 88 89
|
||||
ReturnValue 90
|
||||
FunctionEnd
|
||||
|
|
|
@ -25,10 +25,11 @@ gl_FragCoord origin is upper left
|
|||
0:9 2 (const int)
|
||||
0:10 Test condition and select ( temp void)
|
||||
0:10 Condition
|
||||
0:10 direct index ( temp float)
|
||||
0:10 'input' ( in 4-component vector of float)
|
||||
0:10 Constant:
|
||||
0:10 0 (const int)
|
||||
0:10 Convert float to bool ( temp bool)
|
||||
0:10 direct index ( temp float)
|
||||
0:10 'input' ( in 4-component vector of float)
|
||||
0:10 Constant:
|
||||
0:10 0 (const int)
|
||||
0:10 true case
|
||||
0:11 Branch: Kill
|
||||
0:12 Sequence
|
||||
|
@ -80,10 +81,11 @@ gl_FragCoord origin is upper left
|
|||
0:9 2 (const int)
|
||||
0:10 Test condition and select ( temp void)
|
||||
0:10 Condition
|
||||
0:10 direct index ( temp float)
|
||||
0:10 'input' ( in 4-component vector of float)
|
||||
0:10 Constant:
|
||||
0:10 0 (const int)
|
||||
0:10 Convert float to bool ( temp bool)
|
||||
0:10 direct index ( temp float)
|
||||
0:10 'input' ( in 4-component vector of float)
|
||||
0:10 Constant:
|
||||
0:10 0 (const int)
|
||||
0:10 true case
|
||||
0:11 Branch: Kill
|
||||
0:12 Sequence
|
||||
|
@ -107,12 +109,12 @@ gl_FragCoord origin is upper left
|
|||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 48
|
||||
// Id's are bound by 50
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 43
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 45
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "PixelShaderFunction"
|
||||
Name 10 "foo(f1;"
|
||||
|
@ -120,11 +122,11 @@ gl_FragCoord origin is upper left
|
|||
Name 16 "@PixelShaderFunction(vf4;"
|
||||
Name 15 "input"
|
||||
Name 25 "param"
|
||||
Name 37 "f"
|
||||
Name 41 "input"
|
||||
Name 39 "f"
|
||||
Name 43 "input"
|
||||
Name 45 "param"
|
||||
Decorate 43(input) Location 0
|
||||
Name 45 "input"
|
||||
Name 47 "param"
|
||||
Decorate 45(input) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
@ -138,17 +140,18 @@ gl_FragCoord origin is upper left
|
|||
26: TypeInt 32 0
|
||||
27: 26(int) Constant 2
|
||||
31: 26(int) Constant 0
|
||||
42: TypePointer Input 12(fvec4)
|
||||
43(input): 42(ptr) Variable Input
|
||||
34: 6(float) Constant 0
|
||||
44: TypePointer Input 12(fvec4)
|
||||
45(input): 44(ptr) Variable Input
|
||||
4(PixelShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
41(input): 13(ptr) Variable Function
|
||||
45(param): 13(ptr) Variable Function
|
||||
44: 12(fvec4) Load 43(input)
|
||||
Store 41(input) 44
|
||||
46: 12(fvec4) Load 41(input)
|
||||
Store 45(param) 46
|
||||
47: 2 FunctionCall 16(@PixelShaderFunction(vf4;) 45(param)
|
||||
43(input): 13(ptr) Variable Function
|
||||
47(param): 13(ptr) Variable Function
|
||||
46: 12(fvec4) Load 45(input)
|
||||
Store 43(input) 46
|
||||
48: 12(fvec4) Load 43(input)
|
||||
Store 47(param) 48
|
||||
49: 2 FunctionCall 16(@PixelShaderFunction(vf4;) 47(param)
|
||||
Return
|
||||
FunctionEnd
|
||||
10(foo(f1;): 2 Function None 8
|
||||
|
@ -167,20 +170,21 @@ gl_FragCoord origin is upper left
|
|||
15(input): 13(ptr) FunctionParameter
|
||||
17: Label
|
||||
25(param): 7(ptr) Variable Function
|
||||
37(f): 7(ptr) Variable Function
|
||||
39(f): 7(ptr) Variable Function
|
||||
28: 7(ptr) AccessChain 15(input) 27
|
||||
29: 6(float) Load 28
|
||||
Store 25(param) 29
|
||||
30: 2 FunctionCall 10(foo(f1;) 25(param)
|
||||
32: 7(ptr) AccessChain 15(input) 31
|
||||
33: 6(float) Load 32
|
||||
SelectionMerge 35 None
|
||||
BranchConditional 33 34 35
|
||||
34: Label
|
||||
35: 20(bool) FOrdNotEqual 33 34
|
||||
SelectionMerge 37 None
|
||||
BranchConditional 35 36 37
|
||||
36: Label
|
||||
Kill
|
||||
35: Label
|
||||
38: 7(ptr) AccessChain 15(input) 31
|
||||
39: 6(float) Load 38
|
||||
Store 37(f) 39
|
||||
37: Label
|
||||
40: 7(ptr) AccessChain 15(input) 31
|
||||
41: 6(float) Load 40
|
||||
Store 39(f) 41
|
||||
Kill
|
||||
FunctionEnd
|
||||
|
|
|
@ -0,0 +1,393 @@
|
|||
hlsl.domain.1.tese
|
||||
Shader version: 450
|
||||
input primitive = triangles
|
||||
vertex spacing = none
|
||||
triangle order = none
|
||||
0:? Sequence
|
||||
0:22 Function Definition: @main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:22 Function Parameters:
|
||||
0:22 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:22 'tesscoord' ( in 3-component vector of float)
|
||||
0:22 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
|
||||
0:? Sequence
|
||||
0:25 move second child to first child ( temp 4-component vector of float)
|
||||
0:25 pos: direct index for structure ( temp 4-component vector of float)
|
||||
0:25 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 add ( temp 4-component vector of float)
|
||||
0:25 pos: direct index for structure ( temp 4-component vector of float)
|
||||
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:25 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 direct index ( temp float)
|
||||
0:25 'tesscoord' ( in 3-component vector of float)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:26 move second child to first child ( temp 3-component vector of float)
|
||||
0:26 norm: direct index for structure ( temp 3-component vector of float)
|
||||
0:26 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 add ( temp 3-component vector of float)
|
||||
0:26 norm: direct index for structure ( temp 3-component vector of float)
|
||||
0:26 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:26 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 direct index ( temp float)
|
||||
0:26 'tesscoord' ( in 3-component vector of float)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:28 direct index ( temp float)
|
||||
0:28 'tesscoord' ( in 3-component vector of float)
|
||||
0:28 Constant:
|
||||
0:28 2 (const int)
|
||||
0:30 Branch: Return with expression
|
||||
0:30 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:22 Function Definition: main( ( temp void)
|
||||
0:22 Function Parameters:
|
||||
0:? Sequence
|
||||
0:22 move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:22 move second child to first child ( temp 3-component vector of float)
|
||||
0:? 'tesscoord' ( temp 3-component vector of float)
|
||||
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:22 direct index ( temp float)
|
||||
0:22 flTessFactor: direct index for structure ( temp 3-element array of float)
|
||||
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 direct index ( patch in float TessLevelOuter)
|
||||
0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:22 direct index ( temp float)
|
||||
0:22 flTessFactor: direct index for structure ( temp 3-element array of float)
|
||||
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 direct index ( patch in float TessLevelOuter)
|
||||
0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter)
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:22 direct index ( temp float)
|
||||
0:22 flTessFactor: direct index for structure ( temp 3-element array of float)
|
||||
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 2 (const int)
|
||||
0:22 direct index ( patch in float TessLevelOuter)
|
||||
0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter)
|
||||
0:22 Constant:
|
||||
0:22 2 (const int)
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:22 flInsideTessFactor: direct index for structure ( temp float)
|
||||
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 direct index ( patch in float TessLevelInner)
|
||||
0:? 'pcf_data_flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? 'tesscoord' ( temp 3-component vector of float)
|
||||
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
|
||||
0:? 'pcf_data' (layout( location=2) patch in structure{})
|
||||
0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter)
|
||||
0:? 'pcf_data_flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
|
||||
|
||||
|
||||
Linked tessellation evaluation stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
input primitive = triangles
|
||||
vertex spacing = none
|
||||
triangle order = none
|
||||
0:? Sequence
|
||||
0:22 Function Definition: @main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:22 Function Parameters:
|
||||
0:22 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:22 'tesscoord' ( in 3-component vector of float)
|
||||
0:22 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
|
||||
0:? Sequence
|
||||
0:25 move second child to first child ( temp 4-component vector of float)
|
||||
0:25 pos: direct index for structure ( temp 4-component vector of float)
|
||||
0:25 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 add ( temp 4-component vector of float)
|
||||
0:25 pos: direct index for structure ( temp 4-component vector of float)
|
||||
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:25 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:25 direct index ( temp float)
|
||||
0:25 'tesscoord' ( in 3-component vector of float)
|
||||
0:25 Constant:
|
||||
0:25 0 (const int)
|
||||
0:26 move second child to first child ( temp 3-component vector of float)
|
||||
0:26 norm: direct index for structure ( temp 3-component vector of float)
|
||||
0:26 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 add ( temp 3-component vector of float)
|
||||
0:26 norm: direct index for structure ( temp 3-component vector of float)
|
||||
0:26 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:26 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:26 Constant:
|
||||
0:26 0 (const int)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:26 direct index ( temp float)
|
||||
0:26 'tesscoord' ( in 3-component vector of float)
|
||||
0:26 Constant:
|
||||
0:26 1 (const int)
|
||||
0:28 direct index ( temp float)
|
||||
0:28 'tesscoord' ( in 3-component vector of float)
|
||||
0:28 Constant:
|
||||
0:28 2 (const int)
|
||||
0:30 Branch: Return with expression
|
||||
0:30 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:22 Function Definition: main( ( temp void)
|
||||
0:22 Function Parameters:
|
||||
0:? Sequence
|
||||
0:22 move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:22 move second child to first child ( temp 3-component vector of float)
|
||||
0:? 'tesscoord' ( temp 3-component vector of float)
|
||||
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:22 direct index ( temp float)
|
||||
0:22 flTessFactor: direct index for structure ( temp 3-element array of float)
|
||||
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 direct index ( patch in float TessLevelOuter)
|
||||
0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:22 direct index ( temp float)
|
||||
0:22 flTessFactor: direct index for structure ( temp 3-element array of float)
|
||||
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 direct index ( patch in float TessLevelOuter)
|
||||
0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter)
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:22 direct index ( temp float)
|
||||
0:22 flTessFactor: direct index for structure ( temp 3-element array of float)
|
||||
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 Constant:
|
||||
0:22 2 (const int)
|
||||
0:22 direct index ( patch in float TessLevelOuter)
|
||||
0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter)
|
||||
0:22 Constant:
|
||||
0:22 2 (const int)
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:22 flInsideTessFactor: direct index for structure ( temp float)
|
||||
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 direct index ( patch in float TessLevelInner)
|
||||
0:? 'pcf_data_flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
|
||||
0:22 Constant:
|
||||
0:22 0 (const int)
|
||||
0:22 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? 'tesscoord' ( temp 3-component vector of float)
|
||||
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
|
||||
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
|
||||
0:? 'pcf_data' (layout( location=2) patch in structure{})
|
||||
0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter)
|
||||
0:? 'pcf_data_flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 91
|
||||
|
||||
Capability Tessellation
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint TessellationEvaluation 4 "main" 51 55 61 76 81 90
|
||||
ExecutionMode 4 Triangles
|
||||
Name 4 "main"
|
||||
Name 9 "ds_in_t"
|
||||
MemberName 9(ds_in_t) 0 "pos"
|
||||
MemberName 9(ds_in_t) 1 "norm"
|
||||
Name 15 "pcf_in_t"
|
||||
MemberName 15(pcf_in_t) 0 "flTessFactor"
|
||||
MemberName 15(pcf_in_t) 1 "flInsideTessFactor"
|
||||
Name 17 "gs_in_t"
|
||||
MemberName 17(gs_in_t) 0 "pos"
|
||||
MemberName 17(gs_in_t) 1 "norm"
|
||||
Name 22 "@main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11;"
|
||||
Name 19 "i"
|
||||
Name 20 "tesscoord"
|
||||
Name 21 "pcf_data"
|
||||
Name 25 "o"
|
||||
Name 49 "i"
|
||||
Name 51 "i"
|
||||
Name 53 "tesscoord"
|
||||
Name 55 "tesscoord"
|
||||
Name 57 "pcf_data"
|
||||
Name 61 "pcf_data_flTessFactor"
|
||||
Name 76 "pcf_data_flInsideTessFactor"
|
||||
Name 81 "@entryPointOutput"
|
||||
Name 83 "param"
|
||||
Name 85 "param"
|
||||
Name 88 "pcf_in_t"
|
||||
Name 90 "pcf_data"
|
||||
Decorate 51(i) Location 0
|
||||
Decorate 55(tesscoord) Patch
|
||||
Decorate 55(tesscoord) BuiltIn TessCoord
|
||||
Decorate 61(pcf_data_flTessFactor) Patch
|
||||
Decorate 61(pcf_data_flTessFactor) BuiltIn TessLevelOuter
|
||||
Decorate 76(pcf_data_flInsideTessFactor) Patch
|
||||
Decorate 76(pcf_data_flInsideTessFactor) BuiltIn TessLevelInner
|
||||
Decorate 81(@entryPointOutput) Location 0
|
||||
Decorate 90(pcf_data) Patch
|
||||
Decorate 90(pcf_data) Location 2
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypeVector 6(float) 3
|
||||
9(ds_in_t): TypeStruct 7(fvec4) 8(fvec3)
|
||||
10: TypeInt 32 0
|
||||
11: 10(int) Constant 3
|
||||
12: TypeArray 9(ds_in_t) 11
|
||||
13: TypePointer Function 8(fvec3)
|
||||
14: TypeArray 6(float) 11
|
||||
15(pcf_in_t): TypeStruct 14 6(float)
|
||||
16: TypePointer Function 15(pcf_in_t)
|
||||
17(gs_in_t): TypeStruct 7(fvec4) 8(fvec3)
|
||||
18: TypeFunction 17(gs_in_t) 12 13(ptr) 16(ptr)
|
||||
24: TypePointer Function 17(gs_in_t)
|
||||
26: TypeInt 32 1
|
||||
27: 26(int) Constant 0
|
||||
29: 10(int) Constant 0
|
||||
30: TypePointer Function 6(float)
|
||||
35: TypePointer Function 7(fvec4)
|
||||
37: 26(int) Constant 1
|
||||
39: 10(int) Constant 1
|
||||
48: TypePointer Function 12
|
||||
50: TypePointer Input 12
|
||||
51(i): 50(ptr) Variable Input
|
||||
54: TypePointer Input 8(fvec3)
|
||||
55(tesscoord): 54(ptr) Variable Input
|
||||
58: 10(int) Constant 4
|
||||
59: TypeArray 6(float) 58
|
||||
60: TypePointer Input 59
|
||||
61(pcf_data_flTessFactor): 60(ptr) Variable Input
|
||||
62: TypePointer Input 6(float)
|
||||
69: 26(int) Constant 2
|
||||
73: 10(int) Constant 2
|
||||
74: TypeArray 6(float) 73
|
||||
75: TypePointer Input 74
|
||||
76(pcf_data_flInsideTessFactor): 75(ptr) Variable Input
|
||||
80: TypePointer Output 17(gs_in_t)
|
||||
81(@entryPointOutput): 80(ptr) Variable Output
|
||||
88(pcf_in_t): TypeStruct
|
||||
89: TypePointer Input 88(pcf_in_t)
|
||||
90(pcf_data): 89(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
49(i): 48(ptr) Variable Function
|
||||
53(tesscoord): 13(ptr) Variable Function
|
||||
57(pcf_data): 16(ptr) Variable Function
|
||||
83(param): 13(ptr) Variable Function
|
||||
85(param): 16(ptr) Variable Function
|
||||
52: 12 Load 51(i)
|
||||
Store 49(i) 52
|
||||
56: 8(fvec3) Load 55(tesscoord)
|
||||
Store 53(tesscoord) 56
|
||||
63: 62(ptr) AccessChain 61(pcf_data_flTessFactor) 27
|
||||
64: 6(float) Load 63
|
||||
65: 30(ptr) AccessChain 57(pcf_data) 27 27
|
||||
Store 65 64
|
||||
66: 62(ptr) AccessChain 61(pcf_data_flTessFactor) 37
|
||||
67: 6(float) Load 66
|
||||
68: 30(ptr) AccessChain 57(pcf_data) 27 37
|
||||
Store 68 67
|
||||
70: 62(ptr) AccessChain 61(pcf_data_flTessFactor) 69
|
||||
71: 6(float) Load 70
|
||||
72: 30(ptr) AccessChain 57(pcf_data) 27 69
|
||||
Store 72 71
|
||||
77: 62(ptr) AccessChain 76(pcf_data_flInsideTessFactor) 27
|
||||
78: 6(float) Load 77
|
||||
79: 30(ptr) AccessChain 57(pcf_data) 37
|
||||
Store 79 78
|
||||
82: 12 Load 49(i)
|
||||
84: 8(fvec3) Load 53(tesscoord)
|
||||
Store 83(param) 84
|
||||
86:15(pcf_in_t) Load 57(pcf_data)
|
||||
Store 85(param) 86
|
||||
87: 17(gs_in_t) FunctionCall 22(@main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11;) 82 83(param) 85(param)
|
||||
Store 81(@entryPointOutput) 87
|
||||
Return
|
||||
FunctionEnd
|
||||
22(@main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11;): 17(gs_in_t) Function None 18
|
||||
19(i): 12 FunctionParameter
|
||||
20(tesscoord): 13(ptr) FunctionParameter
|
||||
21(pcf_data): 16(ptr) FunctionParameter
|
||||
23: Label
|
||||
25(o): 24(ptr) Variable Function
|
||||
28: 7(fvec4) CompositeExtract 19(i) 0 0
|
||||
31: 30(ptr) AccessChain 20(tesscoord) 29
|
||||
32: 6(float) Load 31
|
||||
33: 7(fvec4) CompositeConstruct 32 32 32 32
|
||||
34: 7(fvec4) FAdd 28 33
|
||||
36: 35(ptr) AccessChain 25(o) 27
|
||||
Store 36 34
|
||||
38: 8(fvec3) CompositeExtract 19(i) 0 1
|
||||
40: 30(ptr) AccessChain 20(tesscoord) 39
|
||||
41: 6(float) Load 40
|
||||
42: 8(fvec3) CompositeConstruct 41 41 41
|
||||
43: 8(fvec3) FAdd 38 42
|
||||
44: 13(ptr) AccessChain 25(o) 37
|
||||
Store 44 43
|
||||
45: 17(gs_in_t) Load 25(o)
|
||||
ReturnValue 45
|
||||
FunctionEnd
|
|
@ -1,6 +1,7 @@
|
|||
hlsl.hull.1.tesc
|
||||
Shader version: 450
|
||||
vertices = 4
|
||||
vertex spacing = equal_spacing
|
||||
0:? Sequence
|
||||
0:26 Function Definition: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:26 Function Parameters:
|
||||
|
@ -31,7 +32,9 @@ vertices = 4
|
|||
0:? 'm_cpid' ( temp uint)
|
||||
0:? 'm_cpid' ( in uint InvocationID)
|
||||
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
|
||||
0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'm_cpid' ( in uint InvocationID)
|
||||
0:26 Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'm_cpid' ( temp uint)
|
||||
|
@ -50,8 +53,8 @@ vertices = 4
|
|||
0:? 'pid' ( in uint PrimitiveID)
|
||||
0:? Sequence
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? direct index ( temp float)
|
||||
|
@ -62,8 +65,8 @@ vertices = 4
|
|||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? direct index ( temp float)
|
||||
|
@ -100,11 +103,12 @@ vertices = 4
|
|||
0:38 Branch: Return with expression
|
||||
0:38 'output' ( temp structure{ temp 2-element array of float edges})
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'm_cpid' ( in uint InvocationID)
|
||||
0:? 'pid' ( in uint PrimitiveID)
|
||||
0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
|
||||
0:? '@patchConstantOutput' (layout( location=1) patch out structure{})
|
||||
0:? '@patchConstantOutput_edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
|
||||
|
||||
Linked tessellation control stage:
|
||||
|
@ -112,6 +116,7 @@ Linked tessellation control stage:
|
|||
|
||||
Shader version: 450
|
||||
vertices = 4
|
||||
vertex spacing = equal_spacing
|
||||
0:? Sequence
|
||||
0:26 Function Definition: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:26 Function Parameters:
|
||||
|
@ -142,7 +147,9 @@ vertices = 4
|
|||
0:? 'm_cpid' ( temp uint)
|
||||
0:? 'm_cpid' ( in uint InvocationID)
|
||||
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
|
||||
0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'm_cpid' ( in uint InvocationID)
|
||||
0:26 Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'm_cpid' ( temp uint)
|
||||
|
@ -161,8 +168,8 @@ vertices = 4
|
|||
0:? 'pid' ( in uint PrimitiveID)
|
||||
0:? Sequence
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? direct index ( temp float)
|
||||
|
@ -173,8 +180,8 @@ vertices = 4
|
|||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? direct index ( temp float)
|
||||
|
@ -211,21 +218,24 @@ vertices = 4
|
|||
0:38 Branch: Return with expression
|
||||
0:38 'output' ( temp structure{ temp 2-element array of float edges})
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'm_cpid' ( in uint InvocationID)
|
||||
0:? 'pid' ( in uint PrimitiveID)
|
||||
0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
|
||||
0:? '@patchConstantOutput' (layout( location=1) patch out structure{})
|
||||
0:? '@patchConstantOutput_edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 85
|
||||
// Id's are bound by 93
|
||||
|
||||
Capability Tessellation
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint TessellationControl 4 "main" 40 44 47 62 67
|
||||
EntryPoint TessellationControl 4 "main" 40 44 48 66 72 92
|
||||
ExecutionMode 4 OutputVertices 4
|
||||
ExecutionMode 4 Isolines
|
||||
ExecutionMode 4 SpacingEqual
|
||||
Name 4 "main"
|
||||
Name 8 "VS_OUT"
|
||||
MemberName 8(VS_OUT) 0 "cpoint"
|
||||
|
@ -243,19 +253,24 @@ vertices = 4
|
|||
Name 40 "ip"
|
||||
Name 42 "m_cpid"
|
||||
Name 44 "m_cpid"
|
||||
Name 47 "@entryPointOutput"
|
||||
Name 48 "param"
|
||||
Name 48 "@entryPointOutput"
|
||||
Name 50 "param"
|
||||
Name 61 "@patchConstantResult"
|
||||
Name 62 "pid"
|
||||
Name 63 "param"
|
||||
Name 67 "@patchConstantOutput_edges"
|
||||
Name 77 "output"
|
||||
Name 52 "param"
|
||||
Name 65 "@patchConstantResult"
|
||||
Name 66 "pid"
|
||||
Name 67 "param"
|
||||
Name 72 "@patchConstantOutput_edges"
|
||||
Name 82 "output"
|
||||
Name 90 "HS_CONSTANT_OUT"
|
||||
Name 92 "@patchConstantOutput"
|
||||
Decorate 40(ip) Location 0
|
||||
Decorate 44(m_cpid) BuiltIn InvocationId
|
||||
Decorate 47(@entryPointOutput) Location 0
|
||||
Decorate 62(pid) BuiltIn PrimitiveId
|
||||
Decorate 67(@patchConstantOutput_edges) BuiltIn TessLevelOuter
|
||||
Decorate 48(@entryPointOutput) Location 0
|
||||
Decorate 66(pid) BuiltIn PrimitiveId
|
||||
Decorate 72(@patchConstantOutput_edges) Patch
|
||||
Decorate 72(@patchConstantOutput_edges) BuiltIn TessLevelOuter
|
||||
Decorate 92(@patchConstantOutput) Patch
|
||||
Decorate 92(@patchConstantOutput) Location 1
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
@ -280,58 +295,66 @@ vertices = 4
|
|||
40(ip): 39(ptr) Variable Input
|
||||
43: TypePointer Input 9(int)
|
||||
44(m_cpid): 43(ptr) Variable Input
|
||||
46: TypePointer Output 14(HS_OUT)
|
||||
47(@entryPointOutput): 46(ptr) Variable Output
|
||||
53: 9(int) Constant 1
|
||||
54: 9(int) Constant 0
|
||||
56: TypeBool
|
||||
60: TypePointer Function 22(HS_CONSTANT_OUT)
|
||||
62(pid): 43(ptr) Variable Input
|
||||
66: TypePointer Output 21
|
||||
67(@patchConstantOutput_edges): 66(ptr) Variable Output
|
||||
68: TypePointer Function 6(float)
|
||||
71: TypePointer Output 6(float)
|
||||
73: 29(int) Constant 1
|
||||
78: 6(float) Constant 1073741824
|
||||
80: 6(float) Constant 1090519040
|
||||
46: TypeArray 14(HS_OUT) 10
|
||||
47: TypePointer Output 46
|
||||
48(@entryPointOutput): 47(ptr) Variable Output
|
||||
55: TypePointer Output 14(HS_OUT)
|
||||
57: 9(int) Constant 1
|
||||
58: 9(int) Constant 0
|
||||
60: TypeBool
|
||||
64: TypePointer Function 22(HS_CONSTANT_OUT)
|
||||
66(pid): 43(ptr) Variable Input
|
||||
70: TypeArray 6(float) 10
|
||||
71: TypePointer Output 70
|
||||
72(@patchConstantOutput_edges): 71(ptr) Variable Output
|
||||
73: TypePointer Function 6(float)
|
||||
76: TypePointer Output 6(float)
|
||||
78: 29(int) Constant 1
|
||||
83: 6(float) Constant 1073741824
|
||||
85: 6(float) Constant 1090519040
|
||||
90(HS_CONSTANT_OUT): TypeStruct
|
||||
91: TypePointer Output 90(HS_CONSTANT_OUT)
|
||||
92(@patchConstantOutput): 91(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
38(ip): 12(ptr) Variable Function
|
||||
42(m_cpid): 13(ptr) Variable Function
|
||||
48(param): 12(ptr) Variable Function
|
||||
50(param): 13(ptr) Variable Function
|
||||
61(@patchConstantResult): 60(ptr) Variable Function
|
||||
63(param): 13(ptr) Variable Function
|
||||
50(param): 12(ptr) Variable Function
|
||||
52(param): 13(ptr) Variable Function
|
||||
65(@patchConstantResult): 64(ptr) Variable Function
|
||||
67(param): 13(ptr) Variable Function
|
||||
41: 11 Load 40(ip)
|
||||
Store 38(ip) 41
|
||||
45: 9(int) Load 44(m_cpid)
|
||||
Store 42(m_cpid) 45
|
||||
49: 11 Load 38(ip)
|
||||
Store 48(param) 49
|
||||
51: 9(int) Load 42(m_cpid)
|
||||
49: 9(int) Load 44(m_cpid)
|
||||
51: 11 Load 38(ip)
|
||||
Store 50(param) 51
|
||||
52: 14(HS_OUT) FunctionCall 18(@main(struct-VS_OUT-vf31[4];u1;) 48(param) 50(param)
|
||||
Store 47(@entryPointOutput) 52
|
||||
ControlBarrier 20 53 54
|
||||
55: 9(int) Load 44(m_cpid)
|
||||
57: 56(bool) IEqual 55 30
|
||||
SelectionMerge 59 None
|
||||
BranchConditional 57 58 59
|
||||
58: Label
|
||||
64: 9(int) Load 62(pid)
|
||||
Store 63(param) 64
|
||||
65:22(HS_CONSTANT_OUT) FunctionCall 25(PCF(u1;) 63(param)
|
||||
Store 61(@patchConstantResult) 65
|
||||
69: 68(ptr) AccessChain 61(@patchConstantResult) 30 30
|
||||
70: 6(float) Load 69
|
||||
72: 71(ptr) AccessChain 67(@patchConstantOutput_edges) 30
|
||||
Store 72 70
|
||||
74: 68(ptr) AccessChain 61(@patchConstantResult) 30 73
|
||||
53: 9(int) Load 42(m_cpid)
|
||||
Store 52(param) 53
|
||||
54: 14(HS_OUT) FunctionCall 18(@main(struct-VS_OUT-vf31[4];u1;) 50(param) 52(param)
|
||||
56: 55(ptr) AccessChain 48(@entryPointOutput) 49
|
||||
Store 56 54
|
||||
ControlBarrier 20 57 58
|
||||
59: 9(int) Load 44(m_cpid)
|
||||
61: 60(bool) IEqual 59 30
|
||||
SelectionMerge 63 None
|
||||
BranchConditional 61 62 63
|
||||
62: Label
|
||||
68: 9(int) Load 66(pid)
|
||||
Store 67(param) 68
|
||||
69:22(HS_CONSTANT_OUT) FunctionCall 25(PCF(u1;) 67(param)
|
||||
Store 65(@patchConstantResult) 69
|
||||
74: 73(ptr) AccessChain 65(@patchConstantResult) 30 30
|
||||
75: 6(float) Load 74
|
||||
76: 71(ptr) AccessChain 67(@patchConstantOutput_edges) 73
|
||||
Store 76 75
|
||||
Branch 59
|
||||
59: Label
|
||||
77: 76(ptr) AccessChain 72(@patchConstantOutput_edges) 30
|
||||
Store 77 75
|
||||
79: 73(ptr) AccessChain 65(@patchConstantResult) 30 78
|
||||
80: 6(float) Load 79
|
||||
81: 76(ptr) AccessChain 72(@patchConstantOutput_edges) 78
|
||||
Store 81 80
|
||||
Branch 63
|
||||
63: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
18(@main(struct-VS_OUT-vf31[4];u1;): 14(HS_OUT) Function None 15
|
||||
|
@ -349,11 +372,11 @@ vertices = 4
|
|||
25(PCF(u1;):22(HS_CONSTANT_OUT) Function None 23
|
||||
24(pid): 13(ptr) FunctionParameter
|
||||
26: Label
|
||||
77(output): 60(ptr) Variable Function
|
||||
79: 68(ptr) AccessChain 77(output) 30 30
|
||||
Store 79 78
|
||||
81: 68(ptr) AccessChain 77(output) 30 73
|
||||
Store 81 80
|
||||
82:22(HS_CONSTANT_OUT) Load 77(output)
|
||||
ReturnValue 82
|
||||
82(output): 64(ptr) Variable Function
|
||||
84: 73(ptr) AccessChain 82(output) 30 30
|
||||
Store 84 83
|
||||
86: 73(ptr) AccessChain 82(output) 30 78
|
||||
Store 86 85
|
||||
87:22(HS_CONSTANT_OUT) Load 82(output)
|
||||
ReturnValue 87
|
||||
FunctionEnd
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
hlsl.hull.2.tesc
|
||||
Shader version: 450
|
||||
vertices = 4
|
||||
vertex spacing = equal_spacing
|
||||
0:? Sequence
|
||||
0:26 Function Definition: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:26 Function Parameters:
|
||||
|
@ -27,7 +28,9 @@ vertices = 4
|
|||
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
|
||||
0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'InvocationId' ( in uint InvocationID)
|
||||
0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? Barrier ( temp void)
|
||||
|
@ -46,8 +49,8 @@ vertices = 4
|
|||
0:? 'pos' ( in 4-component vector of float Position)
|
||||
0:? Sequence
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? direct index ( temp float)
|
||||
|
@ -58,8 +61,8 @@ vertices = 4
|
|||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? direct index ( temp float)
|
||||
|
@ -97,12 +100,13 @@ vertices = 4
|
|||
0:38 Branch: Return with expression
|
||||
0:38 'output' ( temp structure{ temp 2-element array of float edges})
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'InvocationId' ( in uint InvocationID)
|
||||
0:? 'pid' ( in uint PrimitiveID)
|
||||
0:? 'pos' ( in 4-component vector of float Position)
|
||||
0:? 'InvocationId' ( in uint InvocationID)
|
||||
0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
|
||||
0:? '@patchConstantOutput' (layout( location=1) patch out structure{})
|
||||
0:? '@patchConstantOutput_edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
|
||||
|
||||
Linked tessellation control stage:
|
||||
|
@ -110,6 +114,7 @@ Linked tessellation control stage:
|
|||
|
||||
Shader version: 450
|
||||
vertices = 4
|
||||
vertex spacing = equal_spacing
|
||||
0:? Sequence
|
||||
0:26 Function Definition: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:26 Function Parameters:
|
||||
|
@ -136,7 +141,9 @@ vertices = 4
|
|||
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
|
||||
0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'InvocationId' ( in uint InvocationID)
|
||||
0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? Barrier ( temp void)
|
||||
|
@ -155,8 +162,8 @@ vertices = 4
|
|||
0:? 'pos' ( in 4-component vector of float Position)
|
||||
0:? Sequence
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? direct index ( temp float)
|
||||
|
@ -167,8 +174,8 @@ vertices = 4
|
|||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? direct index ( temp float)
|
||||
|
@ -206,22 +213,25 @@ vertices = 4
|
|||
0:38 Branch: Return with expression
|
||||
0:38 'output' ( temp structure{ temp 2-element array of float edges})
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'InvocationId' ( in uint InvocationID)
|
||||
0:? 'pid' ( in uint PrimitiveID)
|
||||
0:? 'pos' ( in 4-component vector of float Position)
|
||||
0:? 'InvocationId' ( in uint InvocationID)
|
||||
0:? '@patchConstantOutput_edges' ( out 2-element array of float TessLevelOuter)
|
||||
0:? '@patchConstantOutput' (layout( location=1) patch out structure{})
|
||||
0:? '@patchConstantOutput_edges' ( patch out 4-element array of float TessLevelOuter)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 87
|
||||
// Id's are bound by 95
|
||||
|
||||
Capability Tessellation
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint TessellationControl 4 "main" 42 45 52 60 62 69
|
||||
EntryPoint TessellationControl 4 "main" 42 46 48 64 66 74 94
|
||||
ExecutionMode 4 OutputVertices 4
|
||||
ExecutionMode 4 Isolines
|
||||
ExecutionMode 4 SpacingEqual
|
||||
Name 4 "main"
|
||||
Name 8 "VS_OUT"
|
||||
MemberName 8(VS_OUT) 0 "cpoint"
|
||||
|
@ -237,22 +247,27 @@ vertices = 4
|
|||
Name 30 "output"
|
||||
Name 40 "ip"
|
||||
Name 42 "ip"
|
||||
Name 45 "@entryPointOutput"
|
||||
Name 46 "param"
|
||||
Name 52 "InvocationId"
|
||||
Name 59 "@patchConstantResult"
|
||||
Name 60 "pid"
|
||||
Name 62 "pos"
|
||||
Name 63 "param"
|
||||
Name 65 "param"
|
||||
Name 69 "@patchConstantOutput_edges"
|
||||
Name 79 "output"
|
||||
Name 46 "@entryPointOutput"
|
||||
Name 48 "InvocationId"
|
||||
Name 50 "param"
|
||||
Name 63 "@patchConstantResult"
|
||||
Name 64 "pid"
|
||||
Name 66 "pos"
|
||||
Name 67 "param"
|
||||
Name 69 "param"
|
||||
Name 74 "@patchConstantOutput_edges"
|
||||
Name 84 "output"
|
||||
Name 92 "HS_CONSTANT_OUT"
|
||||
Name 94 "@patchConstantOutput"
|
||||
Decorate 42(ip) Location 0
|
||||
Decorate 45(@entryPointOutput) Location 0
|
||||
Decorate 52(InvocationId) BuiltIn InvocationId
|
||||
Decorate 60(pid) BuiltIn PrimitiveId
|
||||
Decorate 62(pos) BuiltIn Position
|
||||
Decorate 69(@patchConstantOutput_edges) BuiltIn TessLevelOuter
|
||||
Decorate 46(@entryPointOutput) Location 0
|
||||
Decorate 48(InvocationId) BuiltIn InvocationId
|
||||
Decorate 64(pid) BuiltIn PrimitiveId
|
||||
Decorate 66(pos) BuiltIn Position
|
||||
Decorate 74(@patchConstantOutput_edges) Patch
|
||||
Decorate 74(@patchConstantOutput_edges) BuiltIn TessLevelOuter
|
||||
Decorate 94(@patchConstantOutput) Patch
|
||||
Decorate 94(@patchConstantOutput) Location 1
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
@ -277,59 +292,67 @@ vertices = 4
|
|||
33: TypePointer Function 7(fvec3)
|
||||
41: TypePointer Input 11
|
||||
42(ip): 41(ptr) Variable Input
|
||||
44: TypePointer Output 13(HS_OUT)
|
||||
45(@entryPointOutput): 44(ptr) Variable Output
|
||||
49: 9(int) Constant 1
|
||||
50: 9(int) Constant 0
|
||||
51: TypePointer Input 9(int)
|
||||
52(InvocationId): 51(ptr) Variable Input
|
||||
54: TypeBool
|
||||
58: TypePointer Function 23(HS_CONSTANT_OUT)
|
||||
60(pid): 51(ptr) Variable Input
|
||||
61: TypePointer Input 19(fvec4)
|
||||
62(pos): 61(ptr) Variable Input
|
||||
68: TypePointer Output 22
|
||||
69(@patchConstantOutput_edges): 68(ptr) Variable Output
|
||||
70: TypePointer Function 6(float)
|
||||
73: TypePointer Output 6(float)
|
||||
75: 31(int) Constant 1
|
||||
80: 6(float) Constant 1073741824
|
||||
82: 6(float) Constant 1090519040
|
||||
44: TypeArray 13(HS_OUT) 10
|
||||
45: TypePointer Output 44
|
||||
46(@entryPointOutput): 45(ptr) Variable Output
|
||||
47: TypePointer Input 9(int)
|
||||
48(InvocationId): 47(ptr) Variable Input
|
||||
53: TypePointer Output 13(HS_OUT)
|
||||
55: 9(int) Constant 1
|
||||
56: 9(int) Constant 0
|
||||
58: TypeBool
|
||||
62: TypePointer Function 23(HS_CONSTANT_OUT)
|
||||
64(pid): 47(ptr) Variable Input
|
||||
65: TypePointer Input 19(fvec4)
|
||||
66(pos): 65(ptr) Variable Input
|
||||
72: TypeArray 6(float) 10
|
||||
73: TypePointer Output 72
|
||||
74(@patchConstantOutput_edges): 73(ptr) Variable Output
|
||||
75: TypePointer Function 6(float)
|
||||
78: TypePointer Output 6(float)
|
||||
80: 31(int) Constant 1
|
||||
85: 6(float) Constant 1073741824
|
||||
87: 6(float) Constant 1090519040
|
||||
92(HS_CONSTANT_OUT): TypeStruct
|
||||
93: TypePointer Output 92(HS_CONSTANT_OUT)
|
||||
94(@patchConstantOutput): 93(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
40(ip): 12(ptr) Variable Function
|
||||
46(param): 12(ptr) Variable Function
|
||||
59(@patchConstantResult): 58(ptr) Variable Function
|
||||
63(param): 18(ptr) Variable Function
|
||||
65(param): 20(ptr) Variable Function
|
||||
50(param): 12(ptr) Variable Function
|
||||
63(@patchConstantResult): 62(ptr) Variable Function
|
||||
67(param): 18(ptr) Variable Function
|
||||
69(param): 20(ptr) Variable Function
|
||||
43: 11 Load 42(ip)
|
||||
Store 40(ip) 43
|
||||
47: 11 Load 40(ip)
|
||||
Store 46(param) 47
|
||||
48: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[4];) 46(param)
|
||||
Store 45(@entryPointOutput) 48
|
||||
ControlBarrier 21 49 50
|
||||
53: 9(int) Load 52(InvocationId)
|
||||
55: 54(bool) IEqual 53 32
|
||||
SelectionMerge 57 None
|
||||
BranchConditional 55 56 57
|
||||
56: Label
|
||||
64: 9(int) Load 60(pid)
|
||||
Store 63(param) 64
|
||||
66: 19(fvec4) Load 62(pos)
|
||||
Store 65(param) 66
|
||||
67:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 63(param) 65(param)
|
||||
Store 59(@patchConstantResult) 67
|
||||
71: 70(ptr) AccessChain 59(@patchConstantResult) 32 32
|
||||
72: 6(float) Load 71
|
||||
74: 73(ptr) AccessChain 69(@patchConstantOutput_edges) 32
|
||||
Store 74 72
|
||||
76: 70(ptr) AccessChain 59(@patchConstantResult) 32 75
|
||||
49: 9(int) Load 48(InvocationId)
|
||||
51: 11 Load 40(ip)
|
||||
Store 50(param) 51
|
||||
52: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[4];) 50(param)
|
||||
54: 53(ptr) AccessChain 46(@entryPointOutput) 49
|
||||
Store 54 52
|
||||
ControlBarrier 21 55 56
|
||||
57: 9(int) Load 48(InvocationId)
|
||||
59: 58(bool) IEqual 57 32
|
||||
SelectionMerge 61 None
|
||||
BranchConditional 59 60 61
|
||||
60: Label
|
||||
68: 9(int) Load 64(pid)
|
||||
Store 67(param) 68
|
||||
70: 19(fvec4) Load 66(pos)
|
||||
Store 69(param) 70
|
||||
71:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 67(param) 69(param)
|
||||
Store 63(@patchConstantResult) 71
|
||||
76: 75(ptr) AccessChain 63(@patchConstantResult) 32 32
|
||||
77: 6(float) Load 76
|
||||
78: 73(ptr) AccessChain 69(@patchConstantOutput_edges) 75
|
||||
Store 78 77
|
||||
Branch 57
|
||||
57: Label
|
||||
79: 78(ptr) AccessChain 74(@patchConstantOutput_edges) 32
|
||||
Store 79 77
|
||||
81: 75(ptr) AccessChain 63(@patchConstantResult) 32 80
|
||||
82: 6(float) Load 81
|
||||
83: 78(ptr) AccessChain 74(@patchConstantOutput_edges) 80
|
||||
Store 83 82
|
||||
Branch 61
|
||||
61: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
16(@main(struct-VS_OUT-vf31[4];): 13(HS_OUT) Function None 14
|
||||
|
@ -347,11 +370,11 @@ vertices = 4
|
|||
25(pid): 18(ptr) FunctionParameter
|
||||
26(pos): 20(ptr) FunctionParameter
|
||||
28: Label
|
||||
79(output): 58(ptr) Variable Function
|
||||
81: 70(ptr) AccessChain 79(output) 32 32
|
||||
Store 81 80
|
||||
83: 70(ptr) AccessChain 79(output) 32 75
|
||||
Store 83 82
|
||||
84:23(HS_CONSTANT_OUT) Load 79(output)
|
||||
ReturnValue 84
|
||||
84(output): 62(ptr) Variable Function
|
||||
86: 75(ptr) AccessChain 84(output) 32 32
|
||||
Store 86 85
|
||||
88: 75(ptr) AccessChain 84(output) 32 80
|
||||
Store 88 87
|
||||
89:23(HS_CONSTANT_OUT) Load 84(output)
|
||||
ReturnValue 89
|
||||
FunctionEnd
|
||||
|
|
|
@ -0,0 +1,612 @@
|
|||
hlsl.hull.ctrlpt-1.tesc
|
||||
Shader version: 450
|
||||
vertices = 3
|
||||
vertex spacing = fractional_odd_spacing
|
||||
triangle order = cw
|
||||
0:? Sequence
|
||||
0:27 Function Definition: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
|
||||
0:27 Function Parameters:
|
||||
0:27 'i' ( in 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:27 'cpid' ( in uint)
|
||||
0:? Sequence
|
||||
0:29 move second child to first child ( temp 3-component vector of float)
|
||||
0:29 val: direct index for structure ( temp 3-component vector of float)
|
||||
0:29 'o' ( temp structure{ temp 3-component vector of float val})
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Construct vec3 ( temp 3-component vector of float)
|
||||
0:29 Convert uint to float ( temp float)
|
||||
0:29 'cpid' ( in uint)
|
||||
0:30 Branch: Return with expression
|
||||
0:30 'o' ( temp structure{ temp 3-component vector of float val})
|
||||
0:27 Function Definition: main( ( temp void)
|
||||
0:27 Function Parameters:
|
||||
0:? Sequence
|
||||
0:27 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:27 move second child to first child ( temp uint)
|
||||
0:? 'cpid' ( temp uint)
|
||||
0:? 'cpid' ( in uint InvocationID)
|
||||
0:27 move second child to first child ( temp structure{ temp 3-component vector of float val})
|
||||
0:27 indirect index ( temp structure{ temp 3-component vector of float val})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? 'cpid' ( in uint InvocationID)
|
||||
0:27 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? 'cpid' ( temp uint)
|
||||
0:? Barrier ( temp void)
|
||||
0:? Test condition and select ( temp void)
|
||||
0:? Condition
|
||||
0:? Compare Equal ( temp bool)
|
||||
0:? 'cpid' ( in uint InvocationID)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? true case
|
||||
0:? Sequence
|
||||
0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
|
||||
0:? direct index ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Constant:
|
||||
0:? 0 (const uint)
|
||||
0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
|
||||
0:? direct index ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Constant:
|
||||
0:? 1 (const uint)
|
||||
0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
|
||||
0:? direct index ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Constant:
|
||||
0:? 2 (const int)
|
||||
0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Constant:
|
||||
0:? 2 (const uint)
|
||||
0:? move second child to first child ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? Function Call: PCF(struct-hs_out_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Sequence
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_tfactor' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? direct index ( temp float)
|
||||
0:? tfactor: direct index for structure ( temp 3-element array of float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_tfactor' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? direct index ( temp float)
|
||||
0:? tfactor: direct index for structure ( temp 3-element array of float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_tfactor' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 2 (const int)
|
||||
0:? direct index ( temp float)
|
||||
0:? tfactor: direct index for structure ( temp 3-element array of float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Constant:
|
||||
0:? 2 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelInner)
|
||||
0:? '@patchConstantOutput_flInFactor' ( patch out 2-element array of float TessLevelInner)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? flInFactor: direct index for structure ( temp float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:34 Function Definition: PCF(struct-hs_out_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:34 Function Parameters:
|
||||
0:34 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Sequence
|
||||
0:37 move second child to first child ( temp float)
|
||||
0:37 direct index ( temp float)
|
||||
0:37 tfactor: direct index for structure ( temp 3-element array of float)
|
||||
0:37 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 direct index ( temp float)
|
||||
0:37 val: direct index for structure ( temp 3-component vector of float)
|
||||
0:37 direct index ( temp structure{ temp 3-component vector of float val})
|
||||
0:37 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:38 move second child to first child ( temp float)
|
||||
0:38 direct index ( temp float)
|
||||
0:38 tfactor: direct index for structure ( temp 3-element array of float)
|
||||
0:38 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 direct index ( temp float)
|
||||
0:38 val: direct index for structure ( temp 3-component vector of float)
|
||||
0:38 direct index ( temp structure{ temp 3-component vector of float val})
|
||||
0:38 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:39 move second child to first child ( temp float)
|
||||
0:39 direct index ( temp float)
|
||||
0:39 tfactor: direct index for structure ( temp 3-element array of float)
|
||||
0:39 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:39 Constant:
|
||||
0:39 2 (const int)
|
||||
0:39 direct index ( temp float)
|
||||
0:39 val: direct index for structure ( temp 3-component vector of float)
|
||||
0:39 direct index ( temp structure{ temp 3-component vector of float val})
|
||||
0:39 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:39 Constant:
|
||||
0:39 2 (const int)
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:40 move second child to first child ( temp float)
|
||||
0:40 flInFactor: direct index for structure ( temp float)
|
||||
0:40 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 Constant:
|
||||
0:40 4.000000
|
||||
0:42 Branch: Return with expression
|
||||
0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? 'cpid' ( in uint InvocationID)
|
||||
0:? '@patchConstantOutput' (layout( location=1) patch out structure{})
|
||||
0:? '@patchConstantOutput_tfactor' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_flInFactor' ( patch out 2-element array of float TessLevelInner)
|
||||
|
||||
|
||||
Linked tessellation control stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
vertices = 3
|
||||
vertex spacing = fractional_odd_spacing
|
||||
triangle order = cw
|
||||
0:? Sequence
|
||||
0:27 Function Definition: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
|
||||
0:27 Function Parameters:
|
||||
0:27 'i' ( in 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:27 'cpid' ( in uint)
|
||||
0:? Sequence
|
||||
0:29 move second child to first child ( temp 3-component vector of float)
|
||||
0:29 val: direct index for structure ( temp 3-component vector of float)
|
||||
0:29 'o' ( temp structure{ temp 3-component vector of float val})
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 Construct vec3 ( temp 3-component vector of float)
|
||||
0:29 Convert uint to float ( temp float)
|
||||
0:29 'cpid' ( in uint)
|
||||
0:30 Branch: Return with expression
|
||||
0:30 'o' ( temp structure{ temp 3-component vector of float val})
|
||||
0:27 Function Definition: main( ( temp void)
|
||||
0:27 Function Parameters:
|
||||
0:? Sequence
|
||||
0:27 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:27 move second child to first child ( temp uint)
|
||||
0:? 'cpid' ( temp uint)
|
||||
0:? 'cpid' ( in uint InvocationID)
|
||||
0:27 move second child to first child ( temp structure{ temp 3-component vector of float val})
|
||||
0:27 indirect index ( temp structure{ temp 3-component vector of float val})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? 'cpid' ( in uint InvocationID)
|
||||
0:27 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? 'cpid' ( temp uint)
|
||||
0:? Barrier ( temp void)
|
||||
0:? Test condition and select ( temp void)
|
||||
0:? Condition
|
||||
0:? Compare Equal ( temp bool)
|
||||
0:? 'cpid' ( in uint InvocationID)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? true case
|
||||
0:? Sequence
|
||||
0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
|
||||
0:? direct index ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Constant:
|
||||
0:? 0 (const uint)
|
||||
0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
|
||||
0:? direct index ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Constant:
|
||||
0:? 1 (const uint)
|
||||
0:? move second child to first child ( temp structure{ temp 3-component vector of float val})
|
||||
0:? direct index ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Constant:
|
||||
0:? 2 (const int)
|
||||
0:? Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
|
||||
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Constant:
|
||||
0:? 2 (const uint)
|
||||
0:? move second child to first child ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? Function Call: PCF(struct-hs_out_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Sequence
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_tfactor' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? direct index ( temp float)
|
||||
0:? tfactor: direct index for structure ( temp 3-element array of float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_tfactor' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? direct index ( temp float)
|
||||
0:? tfactor: direct index for structure ( temp 3-element array of float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_tfactor' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? Constant:
|
||||
0:? 2 (const int)
|
||||
0:? direct index ( temp float)
|
||||
0:? tfactor: direct index for structure ( temp 3-element array of float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? Constant:
|
||||
0:? 2 (const int)
|
||||
0:? move second child to first child ( temp float)
|
||||
0:? direct index ( patch out float TessLevelInner)
|
||||
0:? '@patchConstantOutput_flInFactor' ( patch out 2-element array of float TessLevelInner)
|
||||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? flInFactor: direct index for structure ( temp float)
|
||||
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? Constant:
|
||||
0:? 1 (const int)
|
||||
0:34 Function Definition: PCF(struct-hs_out_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:34 Function Parameters:
|
||||
0:34 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? Sequence
|
||||
0:37 move second child to first child ( temp float)
|
||||
0:37 direct index ( temp float)
|
||||
0:37 tfactor: direct index for structure ( temp 3-element array of float)
|
||||
0:37 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 direct index ( temp float)
|
||||
0:37 val: direct index for structure ( temp 3-component vector of float)
|
||||
0:37 direct index ( temp structure{ temp 3-component vector of float val})
|
||||
0:37 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:37 Constant:
|
||||
0:37 0 (const int)
|
||||
0:38 move second child to first child ( temp float)
|
||||
0:38 direct index ( temp float)
|
||||
0:38 tfactor: direct index for structure ( temp 3-element array of float)
|
||||
0:38 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 direct index ( temp float)
|
||||
0:38 val: direct index for structure ( temp 3-component vector of float)
|
||||
0:38 direct index ( temp structure{ temp 3-component vector of float val})
|
||||
0:38 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:38 Constant:
|
||||
0:38 1 (const int)
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:38 Constant:
|
||||
0:38 0 (const int)
|
||||
0:39 move second child to first child ( temp float)
|
||||
0:39 direct index ( temp float)
|
||||
0:39 tfactor: direct index for structure ( temp 3-element array of float)
|
||||
0:39 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:39 Constant:
|
||||
0:39 2 (const int)
|
||||
0:39 direct index ( temp float)
|
||||
0:39 val: direct index for structure ( temp 3-component vector of float)
|
||||
0:39 direct index ( temp structure{ temp 3-component vector of float val})
|
||||
0:39 'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:39 Constant:
|
||||
0:39 2 (const int)
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:39 Constant:
|
||||
0:39 0 (const int)
|
||||
0:40 move second child to first child ( temp float)
|
||||
0:40 flInFactor: direct index for structure ( temp float)
|
||||
0:40 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:40 Constant:
|
||||
0:40 4.000000
|
||||
0:42 Branch: Return with expression
|
||||
0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
|
||||
0:? 'cpid' ( in uint InvocationID)
|
||||
0:? '@patchConstantOutput' (layout( location=1) patch out structure{})
|
||||
0:? '@patchConstantOutput_tfactor' ( patch out 4-element array of float TessLevelOuter)
|
||||
0:? '@patchConstantOutput_flInFactor' ( patch out 2-element array of float TessLevelInner)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 127
|
||||
|
||||
Capability Tessellation
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint TessellationControl 4 "main" 41 45 48 94 108 126
|
||||
ExecutionMode 4 OutputVertices 3
|
||||
ExecutionMode 4 Triangles
|
||||
ExecutionMode 4 SpacingFractionalOdd
|
||||
ExecutionMode 4 VertexOrderCw
|
||||
Name 4 "main"
|
||||
Name 8 "hs_in_t"
|
||||
MemberName 8(hs_in_t) 0 "val"
|
||||
Name 14 "hs_out_t"
|
||||
MemberName 14(hs_out_t) 0 "val"
|
||||
Name 18 "@main(struct-hs_in_t-vf31[3];u1;"
|
||||
Name 16 "i"
|
||||
Name 17 "cpid"
|
||||
Name 22 "hs_pcf_t"
|
||||
MemberName 22(hs_pcf_t) 0 "tfactor"
|
||||
MemberName 22(hs_pcf_t) 1 "flInFactor"
|
||||
Name 25 "PCF(struct-hs_out_t-vf31[3];"
|
||||
Name 24 "pcf_out"
|
||||
Name 28 "o"
|
||||
Name 39 "i"
|
||||
Name 41 "i"
|
||||
Name 43 "cpid"
|
||||
Name 45 "cpid"
|
||||
Name 48 "@entryPointOutput"
|
||||
Name 50 "param"
|
||||
Name 52 "param"
|
||||
Name 66 "pcf_out"
|
||||
Name 67 "i"
|
||||
Name 68 "param"
|
||||
Name 70 "param"
|
||||
Name 74 "i"
|
||||
Name 75 "param"
|
||||
Name 77 "param"
|
||||
Name 81 "i"
|
||||
Name 82 "param"
|
||||
Name 84 "param"
|
||||
Name 88 "@patchConstantResult"
|
||||
Name 94 "@patchConstantOutput_tfactor"
|
||||
Name 108 "@patchConstantOutput_flInFactor"
|
||||
Name 112 "o"
|
||||
Name 124 "hs_pcf_t"
|
||||
Name 126 "@patchConstantOutput"
|
||||
Decorate 41(i) Location 0
|
||||
Decorate 45(cpid) BuiltIn InvocationId
|
||||
Decorate 48(@entryPointOutput) Location 0
|
||||
Decorate 94(@patchConstantOutput_tfactor) Patch
|
||||
Decorate 94(@patchConstantOutput_tfactor) BuiltIn TessLevelOuter
|
||||
Decorate 108(@patchConstantOutput_flInFactor) Patch
|
||||
Decorate 108(@patchConstantOutput_flInFactor) BuiltIn TessLevelInner
|
||||
Decorate 126(@patchConstantOutput) Patch
|
||||
Decorate 126(@patchConstantOutput) Location 1
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 3
|
||||
8(hs_in_t): TypeStruct 7(fvec3)
|
||||
9: TypeInt 32 0
|
||||
10: 9(int) Constant 3
|
||||
11: TypeArray 8(hs_in_t) 10
|
||||
12: TypePointer Function 11
|
||||
13: TypePointer Function 9(int)
|
||||
14(hs_out_t): TypeStruct 7(fvec3)
|
||||
15: TypeFunction 14(hs_out_t) 12(ptr) 13(ptr)
|
||||
20: TypeArray 14(hs_out_t) 10
|
||||
21: TypeArray 6(float) 10
|
||||
22(hs_pcf_t): TypeStruct 21 6(float)
|
||||
23: TypeFunction 22(hs_pcf_t) 20
|
||||
27: TypePointer Function 14(hs_out_t)
|
||||
29: TypeInt 32 1
|
||||
30: 29(int) Constant 0
|
||||
34: TypePointer Function 7(fvec3)
|
||||
40: TypePointer Input 11
|
||||
41(i): 40(ptr) Variable Input
|
||||
44: TypePointer Input 9(int)
|
||||
45(cpid): 44(ptr) Variable Input
|
||||
47: TypePointer Output 20
|
||||
48(@entryPointOutput): 47(ptr) Variable Output
|
||||
55: TypePointer Output 14(hs_out_t)
|
||||
57: 9(int) Constant 2
|
||||
58: 9(int) Constant 1
|
||||
59: 9(int) Constant 0
|
||||
61: TypeBool
|
||||
65: TypePointer Function 20
|
||||
73: 29(int) Constant 1
|
||||
80: 29(int) Constant 2
|
||||
87: TypePointer Function 22(hs_pcf_t)
|
||||
91: 9(int) Constant 4
|
||||
92: TypeArray 6(float) 91
|
||||
93: TypePointer Output 92
|
||||
94(@patchConstantOutput_tfactor): 93(ptr) Variable Output
|
||||
95: TypePointer Function 6(float)
|
||||
98: TypePointer Output 6(float)
|
||||
106: TypeArray 6(float) 57
|
||||
107: TypePointer Output 106
|
||||
108(@patchConstantOutput_flInFactor): 107(ptr) Variable Output
|
||||
119: 6(float) Constant 1082130432
|
||||
124(hs_pcf_t): TypeStruct
|
||||
125: TypePointer Output 124(hs_pcf_t)
|
||||
126(@patchConstantOutput): 125(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
39(i): 12(ptr) Variable Function
|
||||
43(cpid): 13(ptr) Variable Function
|
||||
50(param): 12(ptr) Variable Function
|
||||
52(param): 13(ptr) Variable Function
|
||||
66(pcf_out): 65(ptr) Variable Function
|
||||
67(i): 12(ptr) Variable Function
|
||||
68(param): 12(ptr) Variable Function
|
||||
70(param): 13(ptr) Variable Function
|
||||
74(i): 12(ptr) Variable Function
|
||||
75(param): 12(ptr) Variable Function
|
||||
77(param): 13(ptr) Variable Function
|
||||
81(i): 12(ptr) Variable Function
|
||||
82(param): 12(ptr) Variable Function
|
||||
84(param): 13(ptr) Variable Function
|
||||
88(@patchConstantResult): 87(ptr) Variable Function
|
||||
42: 11 Load 41(i)
|
||||
Store 39(i) 42
|
||||
46: 9(int) Load 45(cpid)
|
||||
Store 43(cpid) 46
|
||||
49: 9(int) Load 45(cpid)
|
||||
51: 11 Load 39(i)
|
||||
Store 50(param) 51
|
||||
53: 9(int) Load 43(cpid)
|
||||
Store 52(param) 53
|
||||
54:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 50(param) 52(param)
|
||||
56: 55(ptr) AccessChain 48(@entryPointOutput) 49
|
||||
Store 56 54
|
||||
ControlBarrier 57 58 59
|
||||
60: 9(int) Load 45(cpid)
|
||||
62: 61(bool) IEqual 60 30
|
||||
SelectionMerge 64 None
|
||||
BranchConditional 62 63 64
|
||||
63: Label
|
||||
69: 11 Load 67(i)
|
||||
Store 68(param) 69
|
||||
Store 70(param) 59
|
||||
71:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 68(param) 70(param)
|
||||
72: 27(ptr) AccessChain 66(pcf_out) 30
|
||||
Store 72 71
|
||||
76: 11 Load 74(i)
|
||||
Store 75(param) 76
|
||||
Store 77(param) 58
|
||||
78:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 75(param) 77(param)
|
||||
79: 27(ptr) AccessChain 66(pcf_out) 73
|
||||
Store 79 78
|
||||
83: 11 Load 81(i)
|
||||
Store 82(param) 83
|
||||
Store 84(param) 57
|
||||
85:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 82(param) 84(param)
|
||||
86: 27(ptr) AccessChain 66(pcf_out) 80
|
||||
Store 86 85
|
||||
89: 20 Load 66(pcf_out)
|
||||
90:22(hs_pcf_t) FunctionCall 25(PCF(struct-hs_out_t-vf31[3];) 89
|
||||
Store 88(@patchConstantResult) 90
|
||||
96: 95(ptr) AccessChain 88(@patchConstantResult) 30 30
|
||||
97: 6(float) Load 96
|
||||
99: 98(ptr) AccessChain 94(@patchConstantOutput_tfactor) 30
|
||||
Store 99 97
|
||||
100: 95(ptr) AccessChain 88(@patchConstantResult) 30 73
|
||||
101: 6(float) Load 100
|
||||
102: 98(ptr) AccessChain 94(@patchConstantOutput_tfactor) 73
|
||||
Store 102 101
|
||||
103: 95(ptr) AccessChain 88(@patchConstantResult) 30 80
|
||||
104: 6(float) Load 103
|
||||
105: 98(ptr) AccessChain 94(@patchConstantOutput_tfactor) 80
|
||||
Store 105 104
|
||||
109: 95(ptr) AccessChain 88(@patchConstantResult) 73
|
||||
110: 6(float) Load 109
|
||||
111: 98(ptr) AccessChain 108(@patchConstantOutput_flInFactor) 30
|
||||
Store 111 110
|
||||
Branch 64
|
||||
64: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
18(@main(struct-hs_in_t-vf31[3];u1;):14(hs_out_t) Function None 15
|
||||
16(i): 12(ptr) FunctionParameter
|
||||
17(cpid): 13(ptr) FunctionParameter
|
||||
19: Label
|
||||
28(o): 27(ptr) Variable Function
|
||||
31: 9(int) Load 17(cpid)
|
||||
32: 6(float) ConvertUToF 31
|
||||
33: 7(fvec3) CompositeConstruct 32 32 32
|
||||
35: 34(ptr) AccessChain 28(o) 30
|
||||
Store 35 33
|
||||
36:14(hs_out_t) Load 28(o)
|
||||
ReturnValue 36
|
||||
FunctionEnd
|
||||
25(PCF(struct-hs_out_t-vf31[3];):22(hs_pcf_t) Function None 23
|
||||
24(pcf_out): 20 FunctionParameter
|
||||
26: Label
|
||||
112(o): 87(ptr) Variable Function
|
||||
113: 6(float) CompositeExtract 24(pcf_out) 0 0 0
|
||||
114: 95(ptr) AccessChain 112(o) 30 30
|
||||
Store 114 113
|
||||
115: 6(float) CompositeExtract 24(pcf_out) 1 0 0
|
||||
116: 95(ptr) AccessChain 112(o) 30 73
|
||||
Store 116 115
|
||||
117: 6(float) CompositeExtract 24(pcf_out) 2 0 0
|
||||
118: 95(ptr) AccessChain 112(o) 30 80
|
||||
Store 118 117
|
||||
120: 95(ptr) AccessChain 112(o) 73
|
||||
Store 120 119
|
||||
121:22(hs_pcf_t) Load 112(o)
|
||||
ReturnValue 121
|
||||
FunctionEnd
|
|
@ -1,6 +1,7 @@
|
|||
hlsl.hull.void.tesc
|
||||
Shader version: 450
|
||||
vertices = 3
|
||||
vertex spacing = fractional_even_spacing
|
||||
0:? Sequence
|
||||
0:26 Function Definition: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:26 Function Parameters:
|
||||
|
@ -27,7 +28,9 @@ vertices = 3
|
|||
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
|
||||
0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'InvocationId' ( in uint InvocationID)
|
||||
0:26 Function Call: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? Barrier ( temp void)
|
||||
|
@ -38,11 +41,12 @@ vertices = 3
|
|||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? true case
|
||||
0:? Function Call: PCF( ( temp void)
|
||||
0:? Sequence
|
||||
0:? Function Call: PCF( ( temp void)
|
||||
0:33 Function Definition: PCF( ( temp void)
|
||||
0:33 Function Parameters:
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'InvocationId' ( in uint InvocationID)
|
||||
|
||||
|
@ -52,6 +56,7 @@ Linked tessellation control stage:
|
|||
|
||||
Shader version: 450
|
||||
vertices = 3
|
||||
vertex spacing = fractional_even_spacing
|
||||
0:? Sequence
|
||||
0:26 Function Definition: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:26 Function Parameters:
|
||||
|
@ -78,7 +83,9 @@ vertices = 3
|
|||
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
|
||||
0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'InvocationId' ( in uint InvocationID)
|
||||
0:26 Function Call: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? Barrier ( temp void)
|
||||
|
@ -89,23 +96,26 @@ vertices = 3
|
|||
0:? Constant:
|
||||
0:? 0 (const int)
|
||||
0:? true case
|
||||
0:? Function Call: PCF( ( temp void)
|
||||
0:? Sequence
|
||||
0:? Function Call: PCF( ( temp void)
|
||||
0:33 Function Definition: PCF( ( temp void)
|
||||
0:33 Function Parameters:
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 3-component vector of float cpoint})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint})
|
||||
0:? 'InvocationId' ( in uint InvocationID)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 51
|
||||
// Id's are bound by 55
|
||||
|
||||
Capability Tessellation
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint TessellationControl 4 "main" 33 36 44
|
||||
EntryPoint TessellationControl 4 "main" 33 37 39
|
||||
ExecutionMode 4 OutputVertices 3
|
||||
ExecutionMode 4 Triangles
|
||||
ExecutionMode 4 SpacingFractionalEven
|
||||
Name 4 "main"
|
||||
Name 8 "VS_OUT"
|
||||
MemberName 8(VS_OUT) 0 "cpoint"
|
||||
|
@ -117,12 +127,12 @@ vertices = 3
|
|||
Name 21 "output"
|
||||
Name 31 "ip"
|
||||
Name 33 "ip"
|
||||
Name 36 "@entryPointOutput"
|
||||
Name 37 "param"
|
||||
Name 44 "InvocationId"
|
||||
Name 37 "@entryPointOutput"
|
||||
Name 39 "InvocationId"
|
||||
Name 41 "param"
|
||||
Decorate 33(ip) Location 0
|
||||
Decorate 36(@entryPointOutput) Location 0
|
||||
Decorate 44(InvocationId) BuiltIn InvocationId
|
||||
Decorate 37(@entryPointOutput) Location 0
|
||||
Decorate 39(InvocationId) BuiltIn InvocationId
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
@ -140,33 +150,37 @@ vertices = 3
|
|||
24: TypePointer Function 7(fvec3)
|
||||
32: TypePointer Input 11
|
||||
33(ip): 32(ptr) Variable Input
|
||||
35: TypePointer Output 13(HS_OUT)
|
||||
36(@entryPointOutput): 35(ptr) Variable Output
|
||||
40: 9(int) Constant 2
|
||||
41: 9(int) Constant 1
|
||||
42: 9(int) Constant 0
|
||||
43: TypePointer Input 9(int)
|
||||
44(InvocationId): 43(ptr) Variable Input
|
||||
46: TypeBool
|
||||
35: TypeArray 13(HS_OUT) 10
|
||||
36: TypePointer Output 35
|
||||
37(@entryPointOutput): 36(ptr) Variable Output
|
||||
38: TypePointer Input 9(int)
|
||||
39(InvocationId): 38(ptr) Variable Input
|
||||
44: TypePointer Output 13(HS_OUT)
|
||||
46: 9(int) Constant 2
|
||||
47: 9(int) Constant 1
|
||||
48: 9(int) Constant 0
|
||||
50: TypeBool
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
31(ip): 12(ptr) Variable Function
|
||||
37(param): 12(ptr) Variable Function
|
||||
41(param): 12(ptr) Variable Function
|
||||
34: 11 Load 33(ip)
|
||||
Store 31(ip) 34
|
||||
38: 11 Load 31(ip)
|
||||
Store 37(param) 38
|
||||
39: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[3];) 37(param)
|
||||
Store 36(@entryPointOutput) 39
|
||||
ControlBarrier 40 41 42
|
||||
45: 9(int) Load 44(InvocationId)
|
||||
47: 46(bool) IEqual 45 23
|
||||
SelectionMerge 49 None
|
||||
BranchConditional 47 48 49
|
||||
48: Label
|
||||
50: 2 FunctionCall 18(PCF()
|
||||
Branch 49
|
||||
49: Label
|
||||
40: 9(int) Load 39(InvocationId)
|
||||
42: 11 Load 31(ip)
|
||||
Store 41(param) 42
|
||||
43: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[3];) 41(param)
|
||||
45: 44(ptr) AccessChain 37(@entryPointOutput) 40
|
||||
Store 45 43
|
||||
ControlBarrier 46 47 48
|
||||
49: 9(int) Load 39(InvocationId)
|
||||
51: 50(bool) IEqual 49 23
|
||||
SelectionMerge 53 None
|
||||
BranchConditional 51 52 53
|
||||
52: Label
|
||||
54: 2 FunctionCall 18(PCF()
|
||||
Branch 53
|
||||
53: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
16(@main(struct-VS_OUT-vf31[3];): 13(HS_OUT) Function None 14
|
||||
|
|
|
@ -69,12 +69,13 @@ gl_FragCoord origin is upper left
|
|||
0:26 'input' ( in 4-component vector of float)
|
||||
0:30 Test condition and select ( temp void)
|
||||
0:30 Condition
|
||||
0:30 move second child to first child ( temp float)
|
||||
0:30 'ii' ( temp float)
|
||||
0:30 direct index ( temp float)
|
||||
0:30 'input' ( in 4-component vector of float)
|
||||
0:30 Constant:
|
||||
0:30 2 (const int)
|
||||
0:30 Convert float to bool ( temp bool)
|
||||
0:30 move second child to first child ( temp float)
|
||||
0:30 'ii' ( temp float)
|
||||
0:30 direct index ( temp float)
|
||||
0:30 'input' ( in 4-component vector of float)
|
||||
0:30 Constant:
|
||||
0:30 2 (const int)
|
||||
0:30 true case
|
||||
0:31 Pre-Increment ( temp float)
|
||||
0:31 'ii' ( temp float)
|
||||
|
@ -178,12 +179,13 @@ gl_FragCoord origin is upper left
|
|||
0:26 'input' ( in 4-component vector of float)
|
||||
0:30 Test condition and select ( temp void)
|
||||
0:30 Condition
|
||||
0:30 move second child to first child ( temp float)
|
||||
0:30 'ii' ( temp float)
|
||||
0:30 direct index ( temp float)
|
||||
0:30 'input' ( in 4-component vector of float)
|
||||
0:30 Constant:
|
||||
0:30 2 (const int)
|
||||
0:30 Convert float to bool ( temp bool)
|
||||
0:30 move second child to first child ( temp float)
|
||||
0:30 'ii' ( temp float)
|
||||
0:30 direct index ( temp float)
|
||||
0:30 'input' ( in 4-component vector of float)
|
||||
0:30 Constant:
|
||||
0:30 2 (const int)
|
||||
0:30 true case
|
||||
0:31 Pre-Increment ( temp float)
|
||||
0:31 'ii' ( temp float)
|
||||
|
@ -215,24 +217,24 @@ gl_FragCoord origin is upper left
|
|||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 101
|
||||
// Id's are bound by 103
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 94 97
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 96 99
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "PixelShaderFunction"
|
||||
Name 11 "@PixelShaderFunction(vf4;"
|
||||
Name 10 "input"
|
||||
Name 68 "ii"
|
||||
Name 80 "ii"
|
||||
Name 92 "input"
|
||||
Name 82 "ii"
|
||||
Name 94 "input"
|
||||
Name 97 "@entryPointOutput"
|
||||
Name 98 "param"
|
||||
Decorate 94(input) Location 0
|
||||
Decorate 97(@entryPointOutput) Location 0
|
||||
Name 96 "input"
|
||||
Name 99 "@entryPointOutput"
|
||||
Name 100 "param"
|
||||
Decorate 96(input) Location 0
|
||||
Decorate 99(@entryPointOutput) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
@ -244,31 +246,32 @@ gl_FragCoord origin is upper left
|
|||
67: TypePointer Function 6(float)
|
||||
69: TypeInt 32 0
|
||||
70: 69(int) Constant 2
|
||||
76: 6(float) Constant 1065353216
|
||||
78: TypeInt 32 1
|
||||
79: TypePointer Function 78(int)
|
||||
82: 78(int) Constant 1
|
||||
93: TypePointer Input 7(fvec4)
|
||||
94(input): 93(ptr) Variable Input
|
||||
96: TypePointer Output 7(fvec4)
|
||||
97(@entryPointOutput): 96(ptr) Variable Output
|
||||
73: 6(float) Constant 0
|
||||
78: 6(float) Constant 1065353216
|
||||
80: TypeInt 32 1
|
||||
81: TypePointer Function 80(int)
|
||||
84: 80(int) Constant 1
|
||||
95: TypePointer Input 7(fvec4)
|
||||
96(input): 95(ptr) Variable Input
|
||||
98: TypePointer Output 7(fvec4)
|
||||
99(@entryPointOutput): 98(ptr) Variable Output
|
||||
4(PixelShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
92(input): 8(ptr) Variable Function
|
||||
98(param): 8(ptr) Variable Function
|
||||
95: 7(fvec4) Load 94(input)
|
||||
Store 92(input) 95
|
||||
99: 7(fvec4) Load 92(input)
|
||||
Store 98(param) 99
|
||||
100: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 98(param)
|
||||
Store 97(@entryPointOutput) 100
|
||||
94(input): 8(ptr) Variable Function
|
||||
100(param): 8(ptr) Variable Function
|
||||
97: 7(fvec4) Load 96(input)
|
||||
Store 94(input) 97
|
||||
101: 7(fvec4) Load 94(input)
|
||||
Store 100(param) 101
|
||||
102: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 100(param)
|
||||
Store 99(@entryPointOutput) 102
|
||||
Return
|
||||
FunctionEnd
|
||||
11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9
|
||||
10(input): 8(ptr) FunctionParameter
|
||||
12: Label
|
||||
68(ii): 67(ptr) Variable Function
|
||||
80(ii): 79(ptr) Variable Function
|
||||
82(ii): 81(ptr) Variable Function
|
||||
13: 7(fvec4) Load 10(input)
|
||||
14: 7(fvec4) Load 10(input)
|
||||
17: 16(bvec4) FOrdEqual 13 14
|
||||
|
@ -338,28 +341,29 @@ gl_FragCoord origin is upper left
|
|||
71: 67(ptr) AccessChain 10(input) 70
|
||||
72: 6(float) Load 71
|
||||
Store 68(ii) 72
|
||||
SelectionMerge 74 None
|
||||
BranchConditional 72 73 74
|
||||
73: Label
|
||||
75: 6(float) Load 68(ii)
|
||||
77: 6(float) FAdd 75 76
|
||||
Store 68(ii) 77
|
||||
Branch 74
|
||||
74: Label
|
||||
81: 78(int) Load 80(ii)
|
||||
83: 78(int) IAdd 81 82
|
||||
Store 80(ii) 83
|
||||
84: 78(int) Load 80(ii)
|
||||
85: 6(float) ConvertSToF 84
|
||||
86: 15(bool) FOrdEqual 85 76
|
||||
SelectionMerge 88 None
|
||||
BranchConditional 86 87 88
|
||||
87: Label
|
||||
89: 78(int) Load 80(ii)
|
||||
90: 78(int) IAdd 89 82
|
||||
Store 80(ii) 90
|
||||
Branch 88
|
||||
88: Label
|
||||
91: 7(fvec4) Undef
|
||||
ReturnValue 91
|
||||
74: 15(bool) FOrdNotEqual 72 73
|
||||
SelectionMerge 76 None
|
||||
BranchConditional 74 75 76
|
||||
75: Label
|
||||
77: 6(float) Load 68(ii)
|
||||
79: 6(float) FAdd 77 78
|
||||
Store 68(ii) 79
|
||||
Branch 76
|
||||
76: Label
|
||||
83: 80(int) Load 82(ii)
|
||||
85: 80(int) IAdd 83 84
|
||||
Store 82(ii) 85
|
||||
86: 80(int) Load 82(ii)
|
||||
87: 6(float) ConvertSToF 86
|
||||
88: 15(bool) FOrdEqual 87 78
|
||||
SelectionMerge 90 None
|
||||
BranchConditional 88 89 90
|
||||
89: Label
|
||||
91: 80(int) Load 82(ii)
|
||||
92: 80(int) IAdd 91 84
|
||||
Store 82(ii) 92
|
||||
Branch 90
|
||||
90: Label
|
||||
93: 7(fvec4) Undef
|
||||
ReturnValue 93
|
||||
FunctionEnd
|
||||
|
|
|
@ -0,0 +1,549 @@
|
|||
hlsl.implicitBool.frag
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:7 Function Definition: @main( ( temp 4-component vector of float)
|
||||
0:7 Function Parameters:
|
||||
0:? Sequence
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child ( temp 4-component vector of float)
|
||||
0:8 'a' ( temp 4-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 2.000000
|
||||
0:? 2.000000
|
||||
0:? 2.000000
|
||||
0:? 2.000000
|
||||
0:9 Test condition and select ( temp void)
|
||||
0:9 Condition
|
||||
0:9 Convert int to bool ( temp bool)
|
||||
0:9 condi: direct index for structure ( uniform int)
|
||||
0:9 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:9 Constant:
|
||||
0:9 1 (const uint)
|
||||
0:9 true case
|
||||
0:10 Branch: Return with expression
|
||||
0:10 add ( temp 4-component vector of float)
|
||||
0:10 'a' ( temp 4-component vector of float)
|
||||
0:10 Constant:
|
||||
0:10 1.000000
|
||||
0:11 Test condition and select ( temp void)
|
||||
0:11 Condition
|
||||
0:11 Convert float to bool ( temp bool)
|
||||
0:11 condf: direct index for structure ( uniform float)
|
||||
0:11 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 true case
|
||||
0:12 Branch: Return with expression
|
||||
0:12 add ( temp 4-component vector of float)
|
||||
0:12 'a' ( temp 4-component vector of float)
|
||||
0:12 Constant:
|
||||
0:12 2.000000
|
||||
0:13 Test condition and select ( temp void)
|
||||
0:13 Condition
|
||||
0:13 Convert float to bool ( temp bool)
|
||||
0:13 condf1: direct index for structure ( uniform 1-component vector of float)
|
||||
0:13 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:13 Constant:
|
||||
0:13 2 (const uint)
|
||||
0:13 true case
|
||||
0:14 Branch: Return with expression
|
||||
0:14 add ( temp 4-component vector of float)
|
||||
0:14 'a' ( temp 4-component vector of float)
|
||||
0:14 Constant:
|
||||
0:14 3.000000
|
||||
0:15 Test condition and select ( temp void)
|
||||
0:15 Condition
|
||||
0:15 Convert int to bool ( temp bool)
|
||||
0:15 condi1: direct index for structure ( uniform 1-component vector of int)
|
||||
0:15 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:15 Constant:
|
||||
0:15 3 (const uint)
|
||||
0:15 true case
|
||||
0:16 Branch: Return with expression
|
||||
0:16 add ( temp 4-component vector of float)
|
||||
0:16 'a' ( temp 4-component vector of float)
|
||||
0:16 Constant:
|
||||
0:16 4.000000
|
||||
0:17 Test condition and select ( temp void)
|
||||
0:17 Condition
|
||||
0:17 logical-or ( temp bool)
|
||||
0:17 logical-and ( temp bool)
|
||||
0:17 Convert int to bool ( temp bool)
|
||||
0:17 condi: direct index for structure ( uniform int)
|
||||
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:17 Constant:
|
||||
0:17 1 (const uint)
|
||||
0:17 Convert int to bool ( temp bool)
|
||||
0:17 Convert float to int ( temp int)
|
||||
0:17 condf: direct index for structure ( uniform float)
|
||||
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:17 Constant:
|
||||
0:17 0 (const uint)
|
||||
0:17 Convert float to bool ( temp bool)
|
||||
0:17 condf1: direct index for structure ( uniform 1-component vector of float)
|
||||
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:17 Constant:
|
||||
0:17 2 (const uint)
|
||||
0:17 true case
|
||||
0:18 Branch: Return with expression
|
||||
0:18 add ( temp 4-component vector of float)
|
||||
0:18 'a' ( temp 4-component vector of float)
|
||||
0:18 Constant:
|
||||
0:18 5.000000
|
||||
0:20 Sequence
|
||||
0:20 move second child to first child ( temp float)
|
||||
0:20 'f' ( temp float)
|
||||
0:20 condf: direct index for structure ( uniform float)
|
||||
0:20 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:20 Constant:
|
||||
0:20 0 (const uint)
|
||||
0:21 Loop with condition tested first
|
||||
0:21 Loop Condition
|
||||
0:21 Convert float to bool ( temp bool)
|
||||
0:21 'f' ( temp float)
|
||||
0:21 Loop Body
|
||||
0:? Sequence
|
||||
0:21 Pre-Decrement ( temp float)
|
||||
0:21 'f' ( temp float)
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp int)
|
||||
0:23 'i' ( temp int)
|
||||
0:23 condi: direct index for structure ( uniform int)
|
||||
0:23 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:23 Constant:
|
||||
0:23 1 (const uint)
|
||||
0:24 Loop with condition not tested first
|
||||
0:24 Loop Condition
|
||||
0:24 Convert int to bool ( temp bool)
|
||||
0:24 'i' ( temp int)
|
||||
0:24 Loop Body
|
||||
0:24 Pre-Decrement ( temp int)
|
||||
0:24 'i' ( temp int)
|
||||
0:? Sequence
|
||||
0:26 Loop with condition tested first
|
||||
0:26 Loop Condition
|
||||
0:26 Convert int to bool ( temp bool)
|
||||
0:26 'i' ( temp int)
|
||||
0:26 Loop Body
|
||||
0:? Sequence
|
||||
0:26 Pre-Decrement ( temp int)
|
||||
0:26 'i' ( temp int)
|
||||
0:28 Sequence
|
||||
0:28 move second child to first child ( temp float)
|
||||
0:28 'g' ( temp float)
|
||||
0:28 Test condition and select ( temp float)
|
||||
0:28 Condition
|
||||
0:28 Convert float to bool ( temp bool)
|
||||
0:28 condf: direct index for structure ( uniform float)
|
||||
0:28 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:28 Constant:
|
||||
0:28 0 (const uint)
|
||||
0:28 true case
|
||||
0:28 Constant:
|
||||
0:28 7.000000
|
||||
0:28 false case
|
||||
0:28 Constant:
|
||||
0:28 8.000000
|
||||
0:29 add second child into first child ( temp 4-component vector of float)
|
||||
0:29 'a' ( temp 4-component vector of float)
|
||||
0:29 'g' ( temp float)
|
||||
0:31 Branch: Return with expression
|
||||
0:31 subtract ( temp 4-component vector of float)
|
||||
0:31 'a' ( temp 4-component vector of float)
|
||||
0:31 Constant:
|
||||
0:31 1.000000
|
||||
0:7 Function Definition: main( ( temp void)
|
||||
0:7 Function Parameters:
|
||||
0:? Sequence
|
||||
0:7 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
0:7 Function Call: @main( ( temp 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:7 Function Definition: @main( ( temp 4-component vector of float)
|
||||
0:7 Function Parameters:
|
||||
0:? Sequence
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child ( temp 4-component vector of float)
|
||||
0:8 'a' ( temp 4-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 2.000000
|
||||
0:? 2.000000
|
||||
0:? 2.000000
|
||||
0:? 2.000000
|
||||
0:9 Test condition and select ( temp void)
|
||||
0:9 Condition
|
||||
0:9 Convert int to bool ( temp bool)
|
||||
0:9 condi: direct index for structure ( uniform int)
|
||||
0:9 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:9 Constant:
|
||||
0:9 1 (const uint)
|
||||
0:9 true case
|
||||
0:10 Branch: Return with expression
|
||||
0:10 add ( temp 4-component vector of float)
|
||||
0:10 'a' ( temp 4-component vector of float)
|
||||
0:10 Constant:
|
||||
0:10 1.000000
|
||||
0:11 Test condition and select ( temp void)
|
||||
0:11 Condition
|
||||
0:11 Convert float to bool ( temp bool)
|
||||
0:11 condf: direct index for structure ( uniform float)
|
||||
0:11 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:11 Constant:
|
||||
0:11 0 (const uint)
|
||||
0:11 true case
|
||||
0:12 Branch: Return with expression
|
||||
0:12 add ( temp 4-component vector of float)
|
||||
0:12 'a' ( temp 4-component vector of float)
|
||||
0:12 Constant:
|
||||
0:12 2.000000
|
||||
0:13 Test condition and select ( temp void)
|
||||
0:13 Condition
|
||||
0:13 Convert float to bool ( temp bool)
|
||||
0:13 condf1: direct index for structure ( uniform 1-component vector of float)
|
||||
0:13 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:13 Constant:
|
||||
0:13 2 (const uint)
|
||||
0:13 true case
|
||||
0:14 Branch: Return with expression
|
||||
0:14 add ( temp 4-component vector of float)
|
||||
0:14 'a' ( temp 4-component vector of float)
|
||||
0:14 Constant:
|
||||
0:14 3.000000
|
||||
0:15 Test condition and select ( temp void)
|
||||
0:15 Condition
|
||||
0:15 Convert int to bool ( temp bool)
|
||||
0:15 condi1: direct index for structure ( uniform 1-component vector of int)
|
||||
0:15 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:15 Constant:
|
||||
0:15 3 (const uint)
|
||||
0:15 true case
|
||||
0:16 Branch: Return with expression
|
||||
0:16 add ( temp 4-component vector of float)
|
||||
0:16 'a' ( temp 4-component vector of float)
|
||||
0:16 Constant:
|
||||
0:16 4.000000
|
||||
0:17 Test condition and select ( temp void)
|
||||
0:17 Condition
|
||||
0:17 logical-or ( temp bool)
|
||||
0:17 logical-and ( temp bool)
|
||||
0:17 Convert int to bool ( temp bool)
|
||||
0:17 condi: direct index for structure ( uniform int)
|
||||
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:17 Constant:
|
||||
0:17 1 (const uint)
|
||||
0:17 Convert int to bool ( temp bool)
|
||||
0:17 Convert float to int ( temp int)
|
||||
0:17 condf: direct index for structure ( uniform float)
|
||||
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:17 Constant:
|
||||
0:17 0 (const uint)
|
||||
0:17 Convert float to bool ( temp bool)
|
||||
0:17 condf1: direct index for structure ( uniform 1-component vector of float)
|
||||
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:17 Constant:
|
||||
0:17 2 (const uint)
|
||||
0:17 true case
|
||||
0:18 Branch: Return with expression
|
||||
0:18 add ( temp 4-component vector of float)
|
||||
0:18 'a' ( temp 4-component vector of float)
|
||||
0:18 Constant:
|
||||
0:18 5.000000
|
||||
0:20 Sequence
|
||||
0:20 move second child to first child ( temp float)
|
||||
0:20 'f' ( temp float)
|
||||
0:20 condf: direct index for structure ( uniform float)
|
||||
0:20 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:20 Constant:
|
||||
0:20 0 (const uint)
|
||||
0:21 Loop with condition tested first
|
||||
0:21 Loop Condition
|
||||
0:21 Convert float to bool ( temp bool)
|
||||
0:21 'f' ( temp float)
|
||||
0:21 Loop Body
|
||||
0:? Sequence
|
||||
0:21 Pre-Decrement ( temp float)
|
||||
0:21 'f' ( temp float)
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child ( temp int)
|
||||
0:23 'i' ( temp int)
|
||||
0:23 condi: direct index for structure ( uniform int)
|
||||
0:23 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:23 Constant:
|
||||
0:23 1 (const uint)
|
||||
0:24 Loop with condition not tested first
|
||||
0:24 Loop Condition
|
||||
0:24 Convert int to bool ( temp bool)
|
||||
0:24 'i' ( temp int)
|
||||
0:24 Loop Body
|
||||
0:24 Pre-Decrement ( temp int)
|
||||
0:24 'i' ( temp int)
|
||||
0:? Sequence
|
||||
0:26 Loop with condition tested first
|
||||
0:26 Loop Condition
|
||||
0:26 Convert int to bool ( temp bool)
|
||||
0:26 'i' ( temp int)
|
||||
0:26 Loop Body
|
||||
0:? Sequence
|
||||
0:26 Pre-Decrement ( temp int)
|
||||
0:26 'i' ( temp int)
|
||||
0:28 Sequence
|
||||
0:28 move second child to first child ( temp float)
|
||||
0:28 'g' ( temp float)
|
||||
0:28 Test condition and select ( temp float)
|
||||
0:28 Condition
|
||||
0:28 Convert float to bool ( temp bool)
|
||||
0:28 condf: direct index for structure ( uniform float)
|
||||
0:28 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:28 Constant:
|
||||
0:28 0 (const uint)
|
||||
0:28 true case
|
||||
0:28 Constant:
|
||||
0:28 7.000000
|
||||
0:28 false case
|
||||
0:28 Constant:
|
||||
0:28 8.000000
|
||||
0:29 add second child into first child ( temp 4-component vector of float)
|
||||
0:29 'a' ( temp 4-component vector of float)
|
||||
0:29 'g' ( temp float)
|
||||
0:31 Branch: Return with expression
|
||||
0:31 subtract ( temp 4-component vector of float)
|
||||
0:31 'a' ( temp 4-component vector of float)
|
||||
0:31 Constant:
|
||||
0:31 1.000000
|
||||
0:7 Function Definition: main( ( temp void)
|
||||
0:7 Function Parameters:
|
||||
0:? Sequence
|
||||
0:7 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
0:7 Function Call: @main( ( temp 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 145
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 143
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 9 "@main("
|
||||
Name 12 "a"
|
||||
Name 16 "$Global"
|
||||
MemberName 16($Global) 0 "condf"
|
||||
MemberName 16($Global) 1 "condi"
|
||||
MemberName 16($Global) 2 "condf1"
|
||||
MemberName 16($Global) 3 "condi1"
|
||||
Name 18 ""
|
||||
Name 93 "f"
|
||||
Name 106 "i"
|
||||
Name 126 "g"
|
||||
Name 143 "@entryPointOutput"
|
||||
MemberDecorate 16($Global) 0 Offset 0
|
||||
MemberDecorate 16($Global) 1 Offset 4
|
||||
MemberDecorate 16($Global) 2 Offset 16
|
||||
MemberDecorate 16($Global) 3 Offset 32
|
||||
Decorate 16($Global) Block
|
||||
Decorate 18 DescriptorSet 0
|
||||
Decorate 143(@entryPointOutput) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypeFunction 7(fvec4)
|
||||
11: TypePointer Function 7(fvec4)
|
||||
13: 6(float) Constant 1073741824
|
||||
14: 7(fvec4) ConstantComposite 13 13 13 13
|
||||
15: TypeInt 32 1
|
||||
16($Global): TypeStruct 6(float) 15(int) 6(float) 15(int)
|
||||
17: TypePointer Uniform 16($Global)
|
||||
18: 17(ptr) Variable Uniform
|
||||
19: 15(int) Constant 1
|
||||
20: TypePointer Uniform 15(int)
|
||||
23: TypeBool
|
||||
24: TypeInt 32 0
|
||||
25: 24(int) Constant 0
|
||||
30: 6(float) Constant 1065353216
|
||||
34: 15(int) Constant 0
|
||||
35: TypePointer Uniform 6(float)
|
||||
38: 6(float) Constant 0
|
||||
46: 15(int) Constant 2
|
||||
53: 6(float) Constant 1077936128
|
||||
57: 15(int) Constant 3
|
||||
64: 6(float) Constant 1082130432
|
||||
88: 6(float) Constant 1084227584
|
||||
92: TypePointer Function 6(float)
|
||||
105: TypePointer Function 15(int)
|
||||
130: 6(float) Constant 1088421888
|
||||
131: 6(float) Constant 1090519040
|
||||
142: TypePointer Output 7(fvec4)
|
||||
143(@entryPointOutput): 142(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
144: 7(fvec4) FunctionCall 9(@main()
|
||||
Store 143(@entryPointOutput) 144
|
||||
Return
|
||||
FunctionEnd
|
||||
9(@main(): 7(fvec4) Function None 8
|
||||
10: Label
|
||||
12(a): 11(ptr) Variable Function
|
||||
93(f): 92(ptr) Variable Function
|
||||
106(i): 105(ptr) Variable Function
|
||||
126(g): 92(ptr) Variable Function
|
||||
Store 12(a) 14
|
||||
21: 20(ptr) AccessChain 18 19
|
||||
22: 15(int) Load 21
|
||||
26: 23(bool) INotEqual 22 25
|
||||
SelectionMerge 28 None
|
||||
BranchConditional 26 27 28
|
||||
27: Label
|
||||
29: 7(fvec4) Load 12(a)
|
||||
31: 7(fvec4) CompositeConstruct 30 30 30 30
|
||||
32: 7(fvec4) FAdd 29 31
|
||||
ReturnValue 32
|
||||
28: Label
|
||||
36: 35(ptr) AccessChain 18 34
|
||||
37: 6(float) Load 36
|
||||
39: 23(bool) FOrdNotEqual 37 38
|
||||
SelectionMerge 41 None
|
||||
BranchConditional 39 40 41
|
||||
40: Label
|
||||
42: 7(fvec4) Load 12(a)
|
||||
43: 7(fvec4) CompositeConstruct 13 13 13 13
|
||||
44: 7(fvec4) FAdd 42 43
|
||||
ReturnValue 44
|
||||
41: Label
|
||||
47: 35(ptr) AccessChain 18 46
|
||||
48: 6(float) Load 47
|
||||
49: 23(bool) FOrdNotEqual 48 38
|
||||
SelectionMerge 51 None
|
||||
BranchConditional 49 50 51
|
||||
50: Label
|
||||
52: 7(fvec4) Load 12(a)
|
||||
54: 7(fvec4) CompositeConstruct 53 53 53 53
|
||||
55: 7(fvec4) FAdd 52 54
|
||||
ReturnValue 55
|
||||
51: Label
|
||||
58: 20(ptr) AccessChain 18 57
|
||||
59: 15(int) Load 58
|
||||
60: 23(bool) INotEqual 59 25
|
||||
SelectionMerge 62 None
|
||||
BranchConditional 60 61 62
|
||||
61: Label
|
||||
63: 7(fvec4) Load 12(a)
|
||||
65: 7(fvec4) CompositeConstruct 64 64 64 64
|
||||
66: 7(fvec4) FAdd 63 65
|
||||
ReturnValue 66
|
||||
62: Label
|
||||
68: 20(ptr) AccessChain 18 19
|
||||
69: 15(int) Load 68
|
||||
70: 23(bool) INotEqual 69 25
|
||||
SelectionMerge 72 None
|
||||
BranchConditional 70 71 72
|
||||
71: Label
|
||||
73: 35(ptr) AccessChain 18 34
|
||||
74: 6(float) Load 73
|
||||
75: 15(int) ConvertFToS 74
|
||||
76: 23(bool) INotEqual 75 25
|
||||
Branch 72
|
||||
72: Label
|
||||
77: 23(bool) Phi 70 62 76 71
|
||||
78: 23(bool) LogicalNot 77
|
||||
SelectionMerge 80 None
|
||||
BranchConditional 78 79 80
|
||||
79: Label
|
||||
81: 35(ptr) AccessChain 18 46
|
||||
82: 6(float) Load 81
|
||||
83: 23(bool) FOrdNotEqual 82 38
|
||||
Branch 80
|
||||
80: Label
|
||||
84: 23(bool) Phi 77 72 83 79
|
||||
SelectionMerge 86 None
|
||||
BranchConditional 84 85 86
|
||||
85: Label
|
||||
87: 7(fvec4) Load 12(a)
|
||||
89: 7(fvec4) CompositeConstruct 88 88 88 88
|
||||
90: 7(fvec4) FAdd 87 89
|
||||
ReturnValue 90
|
||||
86: Label
|
||||
94: 35(ptr) AccessChain 18 34
|
||||
95: 6(float) Load 94
|
||||
Store 93(f) 95
|
||||
Branch 96
|
||||
96: Label
|
||||
LoopMerge 98 99 None
|
||||
Branch 100
|
||||
100: Label
|
||||
101: 6(float) Load 93(f)
|
||||
102: 23(bool) FOrdNotEqual 101 38
|
||||
BranchConditional 102 97 98
|
||||
97: Label
|
||||
103: 6(float) Load 93(f)
|
||||
104: 6(float) FSub 103 30
|
||||
Store 93(f) 104
|
||||
Branch 99
|
||||
99: Label
|
||||
Branch 96
|
||||
98: Label
|
||||
107: 20(ptr) AccessChain 18 19
|
||||
108: 15(int) Load 107
|
||||
Store 106(i) 108
|
||||
Branch 109
|
||||
109: Label
|
||||
LoopMerge 111 112 None
|
||||
Branch 110
|
||||
110: Label
|
||||
113: 15(int) Load 106(i)
|
||||
114: 15(int) ISub 113 19
|
||||
Store 106(i) 114
|
||||
Branch 112
|
||||
112: Label
|
||||
115: 15(int) Load 106(i)
|
||||
116: 23(bool) INotEqual 115 25
|
||||
BranchConditional 116 109 111
|
||||
111: Label
|
||||
Branch 117
|
||||
117: Label
|
||||
LoopMerge 119 120 None
|
||||
Branch 121
|
||||
121: Label
|
||||
122: 15(int) Load 106(i)
|
||||
123: 23(bool) INotEqual 122 25
|
||||
BranchConditional 123 118 119
|
||||
118: Label
|
||||
124: 15(int) Load 106(i)
|
||||
125: 15(int) ISub 124 19
|
||||
Store 106(i) 125
|
||||
Branch 120
|
||||
120: Label
|
||||
Branch 117
|
||||
119: Label
|
||||
127: 35(ptr) AccessChain 18 34
|
||||
128: 6(float) Load 127
|
||||
129: 23(bool) FOrdNotEqual 128 38
|
||||
132: 6(float) Select 129 130 131
|
||||
Store 126(g) 132
|
||||
133: 6(float) Load 126(g)
|
||||
134: 7(fvec4) Load 12(a)
|
||||
135: 7(fvec4) CompositeConstruct 133 133 133 133
|
||||
136: 7(fvec4) FAdd 134 135
|
||||
Store 12(a) 136
|
||||
137: 7(fvec4) Load 12(a)
|
||||
138: 7(fvec4) CompositeConstruct 30 30 30 30
|
||||
139: 7(fvec4) FSub 137 138
|
||||
ReturnValue 139
|
||||
FunctionEnd
|
|
@ -0,0 +1,335 @@
|
|||
hlsl.intrinsic.frexp.frag
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:3 Function Definition: PixelShaderFunctionS(f1;f1; ( temp float)
|
||||
0:3 Function Parameters:
|
||||
0:3 'inF0' ( in float)
|
||||
0:3 'inF1' ( in float)
|
||||
0:? Sequence
|
||||
0:4 Sequence
|
||||
0:4 move second child to first child ( temp float)
|
||||
0:4 'r000' ( temp float)
|
||||
0:4 frexp ( temp float)
|
||||
0:4 'inF0' ( in float)
|
||||
0:4 'inF1' ( in float)
|
||||
0:5 Branch: Return with expression
|
||||
0:5 Constant:
|
||||
0:5 0.000000
|
||||
0:9 Function Definition: PixelShaderFunction2(vf2;vf2; ( temp 2-component vector of float)
|
||||
0:9 Function Parameters:
|
||||
0:9 'inF0' ( in 2-component vector of float)
|
||||
0:9 'inF1' ( in 2-component vector of float)
|
||||
0:? Sequence
|
||||
0:10 Sequence
|
||||
0:10 move second child to first child ( temp 2-component vector of float)
|
||||
0:10 'r000' ( temp 2-component vector of float)
|
||||
0:10 frexp ( temp 2-component vector of float)
|
||||
0:10 'inF0' ( in 2-component vector of float)
|
||||
0:10 'inF1' ( in 2-component vector of float)
|
||||
0:11 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:15 Function Definition: PixelShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
|
||||
0:15 Function Parameters:
|
||||
0:15 'inF0' ( in 3-component vector of float)
|
||||
0:15 'inF1' ( in 3-component vector of float)
|
||||
0:? Sequence
|
||||
0:16 Sequence
|
||||
0:16 move second child to first child ( temp 3-component vector of float)
|
||||
0:16 'r000' ( temp 3-component vector of float)
|
||||
0:16 frexp ( temp 3-component vector of float)
|
||||
0:16 'inF0' ( in 3-component vector of float)
|
||||
0:16 'inF1' ( in 3-component vector of float)
|
||||
0:17 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:21 Function Definition: PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float)
|
||||
0:21 Function Parameters:
|
||||
0:21 'inF0' ( in 4-component vector of float)
|
||||
0:21 'inF1' ( in 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp 4-component vector of float)
|
||||
0:22 'r000' ( temp 4-component vector of float)
|
||||
0:22 frexp ( temp 4-component vector of float)
|
||||
0:22 'inF0' ( in 4-component vector of float)
|
||||
0:22 'inF1' ( in 4-component vector of float)
|
||||
0:23 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:? 4.000000
|
||||
0:33 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:33 Function Parameters:
|
||||
0:? Sequence
|
||||
0:35 move second child to first child ( temp 4-component vector of float)
|
||||
0:35 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:35 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:35 Constant:
|
||||
0:35 0 (const int)
|
||||
0:35 Constant:
|
||||
0:35 1.000000
|
||||
0:35 1.000000
|
||||
0:35 1.000000
|
||||
0:35 1.000000
|
||||
0:36 Branch: Return with expression
|
||||
0:36 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:33 Function Definition: main( ( temp void)
|
||||
0:33 Function Parameters:
|
||||
0:? Sequence
|
||||
0:33 Sequence
|
||||
0:33 move second child to first child ( temp 4-component vector of float)
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
0:33 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:33 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:3 Function Definition: PixelShaderFunctionS(f1;f1; ( temp float)
|
||||
0:3 Function Parameters:
|
||||
0:3 'inF0' ( in float)
|
||||
0:3 'inF1' ( in float)
|
||||
0:? Sequence
|
||||
0:4 Sequence
|
||||
0:4 move second child to first child ( temp float)
|
||||
0:4 'r000' ( temp float)
|
||||
0:4 frexp ( temp float)
|
||||
0:4 'inF0' ( in float)
|
||||
0:4 'inF1' ( in float)
|
||||
0:5 Branch: Return with expression
|
||||
0:5 Constant:
|
||||
0:5 0.000000
|
||||
0:9 Function Definition: PixelShaderFunction2(vf2;vf2; ( temp 2-component vector of float)
|
||||
0:9 Function Parameters:
|
||||
0:9 'inF0' ( in 2-component vector of float)
|
||||
0:9 'inF1' ( in 2-component vector of float)
|
||||
0:? Sequence
|
||||
0:10 Sequence
|
||||
0:10 move second child to first child ( temp 2-component vector of float)
|
||||
0:10 'r000' ( temp 2-component vector of float)
|
||||
0:10 frexp ( temp 2-component vector of float)
|
||||
0:10 'inF0' ( in 2-component vector of float)
|
||||
0:10 'inF1' ( in 2-component vector of float)
|
||||
0:11 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:15 Function Definition: PixelShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
|
||||
0:15 Function Parameters:
|
||||
0:15 'inF0' ( in 3-component vector of float)
|
||||
0:15 'inF1' ( in 3-component vector of float)
|
||||
0:? Sequence
|
||||
0:16 Sequence
|
||||
0:16 move second child to first child ( temp 3-component vector of float)
|
||||
0:16 'r000' ( temp 3-component vector of float)
|
||||
0:16 frexp ( temp 3-component vector of float)
|
||||
0:16 'inF0' ( in 3-component vector of float)
|
||||
0:16 'inF1' ( in 3-component vector of float)
|
||||
0:17 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:21 Function Definition: PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float)
|
||||
0:21 Function Parameters:
|
||||
0:21 'inF0' ( in 4-component vector of float)
|
||||
0:21 'inF1' ( in 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child ( temp 4-component vector of float)
|
||||
0:22 'r000' ( temp 4-component vector of float)
|
||||
0:22 frexp ( temp 4-component vector of float)
|
||||
0:22 'inF0' ( in 4-component vector of float)
|
||||
0:22 'inF1' ( in 4-component vector of float)
|
||||
0:23 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:? 4.000000
|
||||
0:33 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:33 Function Parameters:
|
||||
0:? Sequence
|
||||
0:35 move second child to first child ( temp 4-component vector of float)
|
||||
0:35 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:35 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:35 Constant:
|
||||
0:35 0 (const int)
|
||||
0:35 Constant:
|
||||
0:35 1.000000
|
||||
0:35 1.000000
|
||||
0:35 1.000000
|
||||
0:35 1.000000
|
||||
0:36 Branch: Return with expression
|
||||
0:36 'ps_output' ( temp structure{ temp 4-component vector of float color})
|
||||
0:33 Function Definition: main( ( temp void)
|
||||
0:33 Function Parameters:
|
||||
0:? Sequence
|
||||
0:33 Sequence
|
||||
0:33 move second child to first child ( temp 4-component vector of float)
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
0:33 color: direct index for structure ( temp 4-component vector of float)
|
||||
0:33 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
|
||||
0:33 Constant:
|
||||
0:33 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 98
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 95
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 11 "PixelShaderFunctionS(f1;f1;"
|
||||
Name 9 "inF0"
|
||||
Name 10 "inF1"
|
||||
Name 18 "PixelShaderFunction2(vf2;vf2;"
|
||||
Name 16 "inF0"
|
||||
Name 17 "inF1"
|
||||
Name 25 "PixelShaderFunction3(vf3;vf3;"
|
||||
Name 23 "inF0"
|
||||
Name 24 "inF1"
|
||||
Name 32 "PixelShaderFunction(vf4;vf4;"
|
||||
Name 30 "inF0"
|
||||
Name 31 "inF1"
|
||||
Name 34 "PS_OUTPUT"
|
||||
MemberName 34(PS_OUTPUT) 0 "color"
|
||||
Name 36 "@main("
|
||||
Name 38 "r000"
|
||||
Name 41 "ResType"
|
||||
Name 49 "r000"
|
||||
Name 52 "ResType"
|
||||
Name 62 "r000"
|
||||
Name 65 "ResType"
|
||||
Name 74 "r000"
|
||||
Name 77 "ResType"
|
||||
Name 87 "ps_output"
|
||||
Name 95 "color"
|
||||
Decorate 95(color) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypePointer Function 6(float)
|
||||
8: TypeFunction 6(float) 7(ptr) 7(ptr)
|
||||
13: TypeVector 6(float) 2
|
||||
14: TypePointer Function 13(fvec2)
|
||||
15: TypeFunction 13(fvec2) 14(ptr) 14(ptr)
|
||||
20: TypeVector 6(float) 3
|
||||
21: TypePointer Function 20(fvec3)
|
||||
22: TypeFunction 20(fvec3) 21(ptr) 21(ptr)
|
||||
27: TypeVector 6(float) 4
|
||||
28: TypePointer Function 27(fvec4)
|
||||
29: TypeFunction 27(fvec4) 28(ptr) 28(ptr)
|
||||
34(PS_OUTPUT): TypeStruct 27(fvec4)
|
||||
35: TypeFunction 34(PS_OUTPUT)
|
||||
40: TypeInt 32 1
|
||||
41(ResType): TypeStruct 6(float) 40(int)
|
||||
46: 6(float) Constant 0
|
||||
51: TypeVector 40(int) 2
|
||||
52(ResType): TypeStruct 13(fvec2) 51(ivec2)
|
||||
57: 6(float) Constant 1065353216
|
||||
58: 6(float) Constant 1073741824
|
||||
59: 13(fvec2) ConstantComposite 57 58
|
||||
64: TypeVector 40(int) 3
|
||||
65(ResType): TypeStruct 20(fvec3) 64(ivec3)
|
||||
70: 6(float) Constant 1077936128
|
||||
71: 20(fvec3) ConstantComposite 57 58 70
|
||||
76: TypeVector 40(int) 4
|
||||
77(ResType): TypeStruct 27(fvec4) 76(ivec4)
|
||||
82: 6(float) Constant 1082130432
|
||||
83: 27(fvec4) ConstantComposite 57 58 70 82
|
||||
86: TypePointer Function 34(PS_OUTPUT)
|
||||
88: 40(int) Constant 0
|
||||
89: 27(fvec4) ConstantComposite 57 57 57 57
|
||||
94: TypePointer Output 27(fvec4)
|
||||
95(color): 94(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
96:34(PS_OUTPUT) FunctionCall 36(@main()
|
||||
97: 27(fvec4) CompositeExtract 96 0
|
||||
Store 95(color) 97
|
||||
Return
|
||||
FunctionEnd
|
||||
11(PixelShaderFunctionS(f1;f1;): 6(float) Function None 8
|
||||
9(inF0): 7(ptr) FunctionParameter
|
||||
10(inF1): 7(ptr) FunctionParameter
|
||||
12: Label
|
||||
38(r000): 7(ptr) Variable Function
|
||||
39: 6(float) Load 9(inF0)
|
||||
42: 41(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 39
|
||||
43: 40(int) CompositeExtract 42 1
|
||||
44: 6(float) ConvertSToF 43
|
||||
Store 10(inF1) 44
|
||||
45: 6(float) CompositeExtract 42 0
|
||||
Store 38(r000) 45
|
||||
ReturnValue 46
|
||||
FunctionEnd
|
||||
18(PixelShaderFunction2(vf2;vf2;): 13(fvec2) Function None 15
|
||||
16(inF0): 14(ptr) FunctionParameter
|
||||
17(inF1): 14(ptr) FunctionParameter
|
||||
19: Label
|
||||
49(r000): 14(ptr) Variable Function
|
||||
50: 13(fvec2) Load 16(inF0)
|
||||
53: 52(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 50
|
||||
54: 51(ivec2) CompositeExtract 53 1
|
||||
55: 13(fvec2) ConvertSToF 54
|
||||
Store 17(inF1) 55
|
||||
56: 13(fvec2) CompositeExtract 53 0
|
||||
Store 49(r000) 56
|
||||
ReturnValue 59
|
||||
FunctionEnd
|
||||
25(PixelShaderFunction3(vf3;vf3;): 20(fvec3) Function None 22
|
||||
23(inF0): 21(ptr) FunctionParameter
|
||||
24(inF1): 21(ptr) FunctionParameter
|
||||
26: Label
|
||||
62(r000): 21(ptr) Variable Function
|
||||
63: 20(fvec3) Load 23(inF0)
|
||||
66: 65(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 63
|
||||
67: 64(ivec3) CompositeExtract 66 1
|
||||
68: 20(fvec3) ConvertSToF 67
|
||||
Store 24(inF1) 68
|
||||
69: 20(fvec3) CompositeExtract 66 0
|
||||
Store 62(r000) 69
|
||||
ReturnValue 71
|
||||
FunctionEnd
|
||||
32(PixelShaderFunction(vf4;vf4;): 27(fvec4) Function None 29
|
||||
30(inF0): 28(ptr) FunctionParameter
|
||||
31(inF1): 28(ptr) FunctionParameter
|
||||
33: Label
|
||||
74(r000): 28(ptr) Variable Function
|
||||
75: 27(fvec4) Load 30(inF0)
|
||||
78: 77(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 75
|
||||
79: 76(ivec4) CompositeExtract 78 1
|
||||
80: 27(fvec4) ConvertSToF 79
|
||||
Store 31(inF1) 80
|
||||
81: 27(fvec4) CompositeExtract 78 0
|
||||
Store 74(r000) 81
|
||||
ReturnValue 83
|
||||
FunctionEnd
|
||||
36(@main():34(PS_OUTPUT) Function None 35
|
||||
37: Label
|
||||
87(ps_output): 86(ptr) Variable Function
|
||||
90: 28(ptr) AccessChain 87(ps_output) 88
|
||||
Store 90 89
|
||||
91:34(PS_OUTPUT) Load 87(ps_output)
|
||||
ReturnValue 91
|
||||
FunctionEnd
|
|
@ -0,0 +1,221 @@
|
|||
hlsl.intrinsic.frexp.vert
|
||||
Shader version: 450
|
||||
0:? Sequence
|
||||
0:2 Function Definition: VertexShaderFunctionS(f1;f1; ( temp float)
|
||||
0:2 Function Parameters:
|
||||
0:2 'inF0' ( in float)
|
||||
0:2 'inF1' ( in float)
|
||||
0:? Sequence
|
||||
0:3 frexp ( temp float)
|
||||
0:3 'inF0' ( in float)
|
||||
0:3 'inF1' ( in float)
|
||||
0:4 Branch: Return with expression
|
||||
0:4 Constant:
|
||||
0:4 0.000000
|
||||
0:8 Function Definition: VertexShaderFunction2(vf2;vf2; ( temp 2-component vector of float)
|
||||
0:8 Function Parameters:
|
||||
0:8 'inF0' ( in 2-component vector of float)
|
||||
0:8 'inF1' ( in 2-component vector of float)
|
||||
0:? Sequence
|
||||
0:9 frexp ( temp 2-component vector of float)
|
||||
0:9 'inF0' ( in 2-component vector of float)
|
||||
0:9 'inF1' ( in 2-component vector of float)
|
||||
0:10 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:14 Function Definition: VertexShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
|
||||
0:14 Function Parameters:
|
||||
0:14 'inF0' ( in 3-component vector of float)
|
||||
0:14 'inF1' ( in 3-component vector of float)
|
||||
0:? Sequence
|
||||
0:15 frexp ( temp 3-component vector of float)
|
||||
0:15 'inF0' ( in 3-component vector of float)
|
||||
0:15 'inF1' ( in 3-component vector of float)
|
||||
0:16 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:20 Function Definition: VertexShaderFunction4(vf4;vf4; ( temp 4-component vector of float)
|
||||
0:20 Function Parameters:
|
||||
0:20 'inF0' ( in 4-component vector of float)
|
||||
0:20 'inF1' ( in 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:21 frexp ( temp 4-component vector of float)
|
||||
0:21 'inF0' ( in 4-component vector of float)
|
||||
0:21 'inF1' ( in 4-component vector of float)
|
||||
0:22 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:? 4.000000
|
||||
0:? Linker Objects
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
|
||||
WARNING: Linking vertex stage: Entry point not found
|
||||
|
||||
Shader version: 450
|
||||
0:? Sequence
|
||||
0:2 Function Definition: VertexShaderFunctionS(f1;f1; ( temp float)
|
||||
0:2 Function Parameters:
|
||||
0:2 'inF0' ( in float)
|
||||
0:2 'inF1' ( in float)
|
||||
0:? Sequence
|
||||
0:3 frexp ( temp float)
|
||||
0:3 'inF0' ( in float)
|
||||
0:3 'inF1' ( in float)
|
||||
0:4 Branch: Return with expression
|
||||
0:4 Constant:
|
||||
0:4 0.000000
|
||||
0:8 Function Definition: VertexShaderFunction2(vf2;vf2; ( temp 2-component vector of float)
|
||||
0:8 Function Parameters:
|
||||
0:8 'inF0' ( in 2-component vector of float)
|
||||
0:8 'inF1' ( in 2-component vector of float)
|
||||
0:? Sequence
|
||||
0:9 frexp ( temp 2-component vector of float)
|
||||
0:9 'inF0' ( in 2-component vector of float)
|
||||
0:9 'inF1' ( in 2-component vector of float)
|
||||
0:10 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:14 Function Definition: VertexShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
|
||||
0:14 Function Parameters:
|
||||
0:14 'inF0' ( in 3-component vector of float)
|
||||
0:14 'inF1' ( in 3-component vector of float)
|
||||
0:? Sequence
|
||||
0:15 frexp ( temp 3-component vector of float)
|
||||
0:15 'inF0' ( in 3-component vector of float)
|
||||
0:15 'inF1' ( in 3-component vector of float)
|
||||
0:16 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:20 Function Definition: VertexShaderFunction4(vf4;vf4; ( temp 4-component vector of float)
|
||||
0:20 Function Parameters:
|
||||
0:20 'inF0' ( in 4-component vector of float)
|
||||
0:20 'inF1' ( in 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:21 frexp ( temp 4-component vector of float)
|
||||
0:21 'inF0' ( in 4-component vector of float)
|
||||
0:21 'inF1' ( in 4-component vector of float)
|
||||
0:22 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:? 4.000000
|
||||
0:? Linker Objects
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 78
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4 "VertexShaderFunction"
|
||||
Name 4 "VertexShaderFunction"
|
||||
Name 11 "VertexShaderFunctionS(f1;f1;"
|
||||
Name 9 "inF0"
|
||||
Name 10 "inF1"
|
||||
Name 18 "VertexShaderFunction2(vf2;vf2;"
|
||||
Name 16 "inF0"
|
||||
Name 17 "inF1"
|
||||
Name 25 "VertexShaderFunction3(vf3;vf3;"
|
||||
Name 23 "inF0"
|
||||
Name 24 "inF1"
|
||||
Name 32 "VertexShaderFunction4(vf4;vf4;"
|
||||
Name 30 "inF0"
|
||||
Name 31 "inF1"
|
||||
Name 36 "ResType"
|
||||
Name 46 "ResType"
|
||||
Name 58 "ResType"
|
||||
Name 69 "ResType"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypePointer Function 6(float)
|
||||
8: TypeFunction 6(float) 7(ptr) 7(ptr)
|
||||
13: TypeVector 6(float) 2
|
||||
14: TypePointer Function 13(fvec2)
|
||||
15: TypeFunction 13(fvec2) 14(ptr) 14(ptr)
|
||||
20: TypeVector 6(float) 3
|
||||
21: TypePointer Function 20(fvec3)
|
||||
22: TypeFunction 20(fvec3) 21(ptr) 21(ptr)
|
||||
27: TypeVector 6(float) 4
|
||||
28: TypePointer Function 27(fvec4)
|
||||
29: TypeFunction 27(fvec4) 28(ptr) 28(ptr)
|
||||
35: TypeInt 32 1
|
||||
36(ResType): TypeStruct 6(float) 35(int)
|
||||
41: 6(float) Constant 0
|
||||
45: TypeVector 35(int) 2
|
||||
46(ResType): TypeStruct 13(fvec2) 45(ivec2)
|
||||
51: 6(float) Constant 1065353216
|
||||
52: 6(float) Constant 1073741824
|
||||
53: 13(fvec2) ConstantComposite 51 52
|
||||
57: TypeVector 35(int) 3
|
||||
58(ResType): TypeStruct 20(fvec3) 57(ivec3)
|
||||
63: 6(float) Constant 1077936128
|
||||
64: 20(fvec3) ConstantComposite 51 52 63
|
||||
68: TypeVector 35(int) 4
|
||||
69(ResType): TypeStruct 27(fvec4) 68(ivec4)
|
||||
74: 6(float) Constant 1082130432
|
||||
75: 27(fvec4) ConstantComposite 51 52 63 74
|
||||
4(VertexShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
11(VertexShaderFunctionS(f1;f1;): 6(float) Function None 8
|
||||
9(inF0): 7(ptr) FunctionParameter
|
||||
10(inF1): 7(ptr) FunctionParameter
|
||||
12: Label
|
||||
34: 6(float) Load 9(inF0)
|
||||
37: 36(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 34
|
||||
38: 35(int) CompositeExtract 37 1
|
||||
39: 6(float) ConvertSToF 38
|
||||
Store 10(inF1) 39
|
||||
40: 6(float) CompositeExtract 37 0
|
||||
ReturnValue 41
|
||||
FunctionEnd
|
||||
18(VertexShaderFunction2(vf2;vf2;): 13(fvec2) Function None 15
|
||||
16(inF0): 14(ptr) FunctionParameter
|
||||
17(inF1): 14(ptr) FunctionParameter
|
||||
19: Label
|
||||
44: 13(fvec2) Load 16(inF0)
|
||||
47: 46(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 44
|
||||
48: 45(ivec2) CompositeExtract 47 1
|
||||
49: 13(fvec2) ConvertSToF 48
|
||||
Store 17(inF1) 49
|
||||
50: 13(fvec2) CompositeExtract 47 0
|
||||
ReturnValue 53
|
||||
FunctionEnd
|
||||
25(VertexShaderFunction3(vf3;vf3;): 20(fvec3) Function None 22
|
||||
23(inF0): 21(ptr) FunctionParameter
|
||||
24(inF1): 21(ptr) FunctionParameter
|
||||
26: Label
|
||||
56: 20(fvec3) Load 23(inF0)
|
||||
59: 58(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 56
|
||||
60: 57(ivec3) CompositeExtract 59 1
|
||||
61: 20(fvec3) ConvertSToF 60
|
||||
Store 24(inF1) 61
|
||||
62: 20(fvec3) CompositeExtract 59 0
|
||||
ReturnValue 64
|
||||
FunctionEnd
|
||||
32(VertexShaderFunction4(vf4;vf4;): 27(fvec4) Function None 29
|
||||
30(inF0): 28(ptr) FunctionParameter
|
||||
31(inF1): 28(ptr) FunctionParameter
|
||||
33: Label
|
||||
67: 27(fvec4) Load 30(inF0)
|
||||
70: 69(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 67
|
||||
71: 68(ivec4) CompositeExtract 70 1
|
||||
72: 27(fvec4) ConvertSToF 71
|
||||
Store 31(inF1) 72
|
||||
73: 27(fvec4) CompositeExtract 70 0
|
||||
ReturnValue 75
|
||||
FunctionEnd
|
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,5 @@
|
|||
hlsl.intrinsics.negative.frag
|
||||
ERROR: 0:10: 'determinant' : no matching overloaded function found
|
||||
ERROR: 0:23: 'length' : ambiguous best function under implicit type conversion
|
||||
ERROR: 0:25: 'normalize' : ambiguous best function under implicit type conversion
|
||||
ERROR: 0:26: 'reflect' : ambiguous best function under implicit type conversion
|
||||
ERROR: 0:27: 'refract' : ambiguous best function under implicit type conversion
|
||||
|
@ -59,7 +58,7 @@ ERROR: 0:133: 'normalize' : no matching overloaded function found
|
|||
ERROR: 0:133: 'reflect' : no matching overloaded function found
|
||||
ERROR: 0:133: 'refract' : no matching overloaded function found
|
||||
ERROR: 0:133: 'reversebits' : no matching overloaded function found
|
||||
ERROR: 60 compilation errors. No code generated.
|
||||
ERROR: 59 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 450
|
||||
|
@ -120,8 +119,7 @@ ERROR: node is still EOpNull!
|
|||
0:14 Convert float to uint ( temp uint)
|
||||
0:14 'inF0' ( in float)
|
||||
0:23 length ( temp float)
|
||||
0:23 Construct vec2 ( in 2-component vector of float)
|
||||
0:23 'inF0' ( in float)
|
||||
0:23 'inF0' ( in float)
|
||||
0:24 Function Call: msad4(u1;vu2;vu4; ( temp 4-component vector of uint)
|
||||
0:24 Convert float to uint ( temp uint)
|
||||
0:24 'inF0' ( in float)
|
||||
|
@ -582,8 +580,7 @@ ERROR: node is still EOpNull!
|
|||
0:14 Convert float to uint ( temp uint)
|
||||
0:14 'inF0' ( in float)
|
||||
0:23 length ( temp float)
|
||||
0:23 Construct vec2 ( in 2-component vector of float)
|
||||
0:23 'inF0' ( in float)
|
||||
0:23 'inF0' ( in float)
|
||||
0:24 Function Call: msad4(u1;vu2;vu4; ( temp 4-component vector of uint)
|
||||
0:24 Convert float to uint ( temp uint)
|
||||
0:24 'inF0' ( in float)
|
||||
|
|
|
@ -341,8 +341,8 @@ gl_FragCoord origin is upper left
|
|||
0:51 move second child to first child ( temp float)
|
||||
0:51 'r50' ( temp float)
|
||||
0:51 Construct float ( temp float)
|
||||
0:? imageLoad ( temp 4-component vector of float)
|
||||
0:51 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
|
||||
0:? textureFetch ( temp 4-component vector of float)
|
||||
0:51 'g_tTexbfs' (layout( r32f) uniform samplerBuffer)
|
||||
0:51 Convert uint to int ( temp int)
|
||||
0:51 upos: direct index for structure ( uniform uint)
|
||||
0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
|
||||
|
@ -352,8 +352,8 @@ gl_FragCoord origin is upper left
|
|||
0:52 move second child to first child ( temp float)
|
||||
0:52 'r51' ( temp float)
|
||||
0:52 Construct float ( temp float)
|
||||
0:? imageLoad ( temp 4-component vector of float)
|
||||
0:52 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
|
||||
0:? textureFetch ( temp 4-component vector of float)
|
||||
0:52 'g_tTexbfs' (layout( r32f) uniform samplerBuffer)
|
||||
0:52 Convert float to int ( temp int)
|
||||
0:52 fpos: direct index for structure ( uniform float)
|
||||
0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
|
||||
|
@ -437,7 +437,7 @@ gl_FragCoord origin is upper left
|
|||
0:20 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
|
||||
0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
|
||||
0:? 'g_tTexbfs' (layout( r32f) uniform samplerBuffer)
|
||||
0:? 'g_tTex1df4' ( uniform texture1D)
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
@ -787,8 +787,8 @@ gl_FragCoord origin is upper left
|
|||
0:51 move second child to first child ( temp float)
|
||||
0:51 'r50' ( temp float)
|
||||
0:51 Construct float ( temp float)
|
||||
0:? imageLoad ( temp 4-component vector of float)
|
||||
0:51 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
|
||||
0:? textureFetch ( temp 4-component vector of float)
|
||||
0:51 'g_tTexbfs' (layout( r32f) uniform samplerBuffer)
|
||||
0:51 Convert uint to int ( temp int)
|
||||
0:51 upos: direct index for structure ( uniform uint)
|
||||
0:51 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
|
||||
|
@ -798,8 +798,8 @@ gl_FragCoord origin is upper left
|
|||
0:52 move second child to first child ( temp float)
|
||||
0:52 'r51' ( temp float)
|
||||
0:52 Construct float ( temp float)
|
||||
0:? imageLoad ( temp 4-component vector of float)
|
||||
0:52 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
|
||||
0:? textureFetch ( temp 4-component vector of float)
|
||||
0:52 'g_tTexbfs' (layout( r32f) uniform samplerBuffer)
|
||||
0:52 Convert float to int ( temp int)
|
||||
0:52 fpos: direct index for structure ( uniform float)
|
||||
0:52 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
|
||||
|
@ -883,13 +883,13 @@ gl_FragCoord origin is upper left
|
|||
0:20 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
|
||||
0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
|
||||
0:? 'g_tTexbfs' (layout( r32f) uniform samplerBuffer)
|
||||
0:? 'g_tTex1df4' ( uniform texture1D)
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 322
|
||||
// Id's are bound by 325
|
||||
|
||||
Capability Shader
|
||||
Capability Sampled1D
|
||||
|
@ -897,7 +897,7 @@ gl_FragCoord origin is upper left
|
|||
Capability ImageQuery
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 319
|
||||
EntryPoint Fragment 4 "main" 322
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 8 "PS_OUTPUT"
|
||||
|
@ -938,19 +938,19 @@ gl_FragCoord origin is upper left
|
|||
Name 229 "r42"
|
||||
Name 243 "r43"
|
||||
Name 255 "r50"
|
||||
Name 258 "g_tTexbfs"
|
||||
Name 266 "r51"
|
||||
Name 274 "sizeQueryTemp"
|
||||
Name 277 "g_tTex1df4"
|
||||
Name 280 "WidthI"
|
||||
Name 283 "sizeQueryTemp"
|
||||
Name 289 "NumberOfLevelsU"
|
||||
Name 292 "sizeQueryTemp"
|
||||
Name 295 "WidthU"
|
||||
Name 297 "NumberOfLevelsI"
|
||||
Name 301 "sizeQueryTemp"
|
||||
Name 310 "ps_output"
|
||||
Name 319 "color"
|
||||
Name 259 "g_tTexbfs"
|
||||
Name 268 "r51"
|
||||
Name 277 "sizeQueryTemp"
|
||||
Name 280 "g_tTex1df4"
|
||||
Name 283 "WidthI"
|
||||
Name 286 "sizeQueryTemp"
|
||||
Name 292 "NumberOfLevelsU"
|
||||
Name 295 "sizeQueryTemp"
|
||||
Name 298 "WidthU"
|
||||
Name 300 "NumberOfLevelsI"
|
||||
Name 304 "sizeQueryTemp"
|
||||
Name 313 "ps_output"
|
||||
Name 322 "color"
|
||||
MemberDecorate 19($Global) 0 Offset 0
|
||||
MemberDecorate 19($Global) 1 Offset 4
|
||||
MemberDecorate 19($Global) 2 Offset 8
|
||||
|
@ -963,10 +963,9 @@ gl_FragCoord origin is upper left
|
|||
MemberDecorate 19($Global) 9 Offset 52
|
||||
Decorate 19($Global) Block
|
||||
Decorate 21 DescriptorSet 0
|
||||
Decorate 258(g_tTexbfs) DescriptorSet 0
|
||||
Decorate 258(g_tTexbfs) NonWritable
|
||||
Decorate 277(g_tTex1df4) DescriptorSet 0
|
||||
Decorate 319(color) Location 0
|
||||
Decorate 259(g_tTexbfs) DescriptorSet 0
|
||||
Decorate 280(g_tTex1df4) DescriptorSet 0
|
||||
Decorate 322(color) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
@ -1013,24 +1012,25 @@ gl_FragCoord origin is upper left
|
|||
107: 16(ivec2) ConstantComposite 44 44
|
||||
109: 14(int) Constant 4
|
||||
110: TypePointer Uniform 16(ivec2)
|
||||
256: TypeImage 6(float) Buffer nonsampled format:R32f
|
||||
257: TypePointer UniformConstant 256
|
||||
258(g_tTexbfs): 257(ptr) Variable UniformConstant
|
||||
260: 14(int) Constant 8
|
||||
268: 14(int) Constant 9
|
||||
275: TypeImage 6(float) 1D sampled format:Unknown
|
||||
276: TypePointer UniformConstant 275
|
||||
277(g_tTex1df4): 276(ptr) Variable UniformConstant
|
||||
285: 15(int) Constant 6
|
||||
309: TypePointer Function 8(PS_OUTPUT)
|
||||
313: TypePointer Function 7(fvec4)
|
||||
318: TypePointer Output 7(fvec4)
|
||||
319(color): 318(ptr) Variable Output
|
||||
256: TypeImage 6(float) Buffer sampled format:R32f
|
||||
257: TypeSampledImage 256
|
||||
258: TypePointer UniformConstant 257
|
||||
259(g_tTexbfs): 258(ptr) Variable UniformConstant
|
||||
261: 14(int) Constant 8
|
||||
270: 14(int) Constant 9
|
||||
278: TypeImage 6(float) 1D sampled format:Unknown
|
||||
279: TypePointer UniformConstant 278
|
||||
280(g_tTex1df4): 279(ptr) Variable UniformConstant
|
||||
288: 15(int) Constant 6
|
||||
312: TypePointer Function 8(PS_OUTPUT)
|
||||
316: TypePointer Function 7(fvec4)
|
||||
321: TypePointer Output 7(fvec4)
|
||||
322(color): 321(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
320:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
321: 7(fvec4) CompositeExtract 320 0
|
||||
Store 319(color) 321
|
||||
323:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
324: 7(fvec4) CompositeExtract 323 0
|
||||
Store 322(color) 324
|
||||
Return
|
||||
FunctionEnd
|
||||
10(@main():8(PS_OUTPUT) Function None 9
|
||||
|
@ -1058,16 +1058,16 @@ gl_FragCoord origin is upper left
|
|||
229(r42): 73(ptr) Variable Function
|
||||
243(r43): 101(ptr) Variable Function
|
||||
255(r50): 12(ptr) Variable Function
|
||||
266(r51): 12(ptr) Variable Function
|
||||
274(sizeQueryTemp): 37(ptr) Variable Function
|
||||
280(WidthI): 48(ptr) Variable Function
|
||||
283(sizeQueryTemp): 37(ptr) Variable Function
|
||||
289(NumberOfLevelsU): 37(ptr) Variable Function
|
||||
292(sizeQueryTemp): 37(ptr) Variable Function
|
||||
295(WidthU): 37(ptr) Variable Function
|
||||
297(NumberOfLevelsI): 48(ptr) Variable Function
|
||||
301(sizeQueryTemp): 37(ptr) Variable Function
|
||||
310(ps_output): 309(ptr) Variable Function
|
||||
268(r51): 12(ptr) Variable Function
|
||||
277(sizeQueryTemp): 37(ptr) Variable Function
|
||||
283(WidthI): 48(ptr) Variable Function
|
||||
286(sizeQueryTemp): 37(ptr) Variable Function
|
||||
292(NumberOfLevelsU): 37(ptr) Variable Function
|
||||
295(sizeQueryTemp): 37(ptr) Variable Function
|
||||
298(WidthU): 37(ptr) Variable Function
|
||||
300(NumberOfLevelsI): 48(ptr) Variable Function
|
||||
304(sizeQueryTemp): 37(ptr) Variable Function
|
||||
313(ps_output): 312(ptr) Variable Function
|
||||
24: 23(ptr) AccessChain 21 22
|
||||
25: 15(int) Load 24
|
||||
28: 26(bool) INotEqual 25 27
|
||||
|
@ -1271,58 +1271,60 @@ gl_FragCoord origin is upper left
|
|||
253: 17(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 247 250 252
|
||||
254: 16(ivec2) Bitcast 253
|
||||
Store 243(r43) 254
|
||||
259: 256 Load 258(g_tTexbfs)
|
||||
261: 23(ptr) AccessChain 21 260
|
||||
262: 15(int) Load 261
|
||||
263: 14(int) Bitcast 262
|
||||
264: 7(fvec4) ImageRead 259 263
|
||||
265: 6(float) CompositeExtract 264 0
|
||||
Store 255(r50) 265
|
||||
267: 256 Load 258(g_tTexbfs)
|
||||
269: 33(ptr) AccessChain 21 268
|
||||
270: 6(float) Load 269
|
||||
271: 14(int) ConvertFToS 270
|
||||
272: 7(fvec4) ImageRead 267 271
|
||||
273: 6(float) CompositeExtract 272 0
|
||||
Store 266(r51) 273
|
||||
278: 275 Load 277(g_tTex1df4)
|
||||
279: 15(int) ImageQuerySizeLod 278 53
|
||||
Store 274(sizeQueryTemp) 279
|
||||
281: 15(int) Load 274(sizeQueryTemp)
|
||||
282: 14(int) Bitcast 281
|
||||
Store 280(WidthI) 282
|
||||
284: 275 Load 277(g_tTex1df4)
|
||||
286: 15(int) ImageQuerySizeLod 284 285
|
||||
Store 283(sizeQueryTemp) 286
|
||||
287: 15(int) Load 283(sizeQueryTemp)
|
||||
288: 14(int) Bitcast 287
|
||||
Store 280(WidthI) 288
|
||||
290: 275 Load 277(g_tTex1df4)
|
||||
291: 15(int) ImageQueryLevels 290
|
||||
Store 289(NumberOfLevelsU) 291
|
||||
293: 275 Load 277(g_tTex1df4)
|
||||
294: 15(int) ImageQuerySizeLod 293 285
|
||||
Store 292(sizeQueryTemp) 294
|
||||
296: 15(int) Load 292(sizeQueryTemp)
|
||||
Store 295(WidthU) 296
|
||||
298: 275 Load 277(g_tTex1df4)
|
||||
299: 15(int) ImageQueryLevels 298
|
||||
300: 14(int) Bitcast 299
|
||||
Store 297(NumberOfLevelsI) 300
|
||||
302: 275 Load 277(g_tTex1df4)
|
||||
303: 15(int) ImageQuerySizeLod 302 285
|
||||
Store 301(sizeQueryTemp) 303
|
||||
304: 15(int) Load 301(sizeQueryTemp)
|
||||
305: 14(int) Bitcast 304
|
||||
Store 280(WidthI) 305
|
||||
306: 275 Load 277(g_tTex1df4)
|
||||
307: 15(int) ImageQueryLevels 306
|
||||
260: 257 Load 259(g_tTexbfs)
|
||||
262: 23(ptr) AccessChain 21 261
|
||||
263: 15(int) Load 262
|
||||
264: 14(int) Bitcast 263
|
||||
265: 256 Image 260
|
||||
266: 7(fvec4) ImageFetch 265 264
|
||||
267: 6(float) CompositeExtract 266 0
|
||||
Store 255(r50) 267
|
||||
269: 257 Load 259(g_tTexbfs)
|
||||
271: 33(ptr) AccessChain 21 270
|
||||
272: 6(float) Load 271
|
||||
273: 14(int) ConvertFToS 272
|
||||
274: 256 Image 269
|
||||
275: 7(fvec4) ImageFetch 274 273
|
||||
276: 6(float) CompositeExtract 275 0
|
||||
Store 268(r51) 276
|
||||
281: 278 Load 280(g_tTex1df4)
|
||||
282: 15(int) ImageQuerySizeLod 281 53
|
||||
Store 277(sizeQueryTemp) 282
|
||||
284: 15(int) Load 277(sizeQueryTemp)
|
||||
285: 14(int) Bitcast 284
|
||||
Store 283(WidthI) 285
|
||||
287: 278 Load 280(g_tTex1df4)
|
||||
289: 15(int) ImageQuerySizeLod 287 288
|
||||
Store 286(sizeQueryTemp) 289
|
||||
290: 15(int) Load 286(sizeQueryTemp)
|
||||
291: 14(int) Bitcast 290
|
||||
Store 283(WidthI) 291
|
||||
293: 278 Load 280(g_tTex1df4)
|
||||
294: 15(int) ImageQueryLevels 293
|
||||
Store 292(NumberOfLevelsU) 294
|
||||
296: 278 Load 280(g_tTex1df4)
|
||||
297: 15(int) ImageQuerySizeLod 296 288
|
||||
Store 295(sizeQueryTemp) 297
|
||||
299: 15(int) Load 295(sizeQueryTemp)
|
||||
Store 298(WidthU) 299
|
||||
301: 278 Load 280(g_tTex1df4)
|
||||
302: 15(int) ImageQueryLevels 301
|
||||
303: 14(int) Bitcast 302
|
||||
Store 300(NumberOfLevelsI) 303
|
||||
305: 278 Load 280(g_tTex1df4)
|
||||
306: 15(int) ImageQuerySizeLod 305 288
|
||||
Store 304(sizeQueryTemp) 306
|
||||
307: 15(int) Load 304(sizeQueryTemp)
|
||||
308: 14(int) Bitcast 307
|
||||
Store 297(NumberOfLevelsI) 308
|
||||
311: 6(float) Load 13(r00)
|
||||
312: 7(fvec4) CompositeConstruct 311 311 311 311
|
||||
314: 313(ptr) AccessChain 310(ps_output) 53
|
||||
Store 314 312
|
||||
315:8(PS_OUTPUT) Load 310(ps_output)
|
||||
ReturnValue 315
|
||||
Store 283(WidthI) 308
|
||||
309: 278 Load 280(g_tTex1df4)
|
||||
310: 15(int) ImageQueryLevels 309
|
||||
311: 14(int) Bitcast 310
|
||||
Store 300(NumberOfLevelsI) 311
|
||||
314: 6(float) Load 13(r00)
|
||||
315: 7(fvec4) CompositeConstruct 314 314 314 314
|
||||
317: 316(ptr) AccessChain 313(ps_output) 53
|
||||
Store 317 315
|
||||
318:8(PS_OUTPUT) Load 313(ps_output)
|
||||
ReturnValue 318
|
||||
FunctionEnd
|
||||
|
|
|
@ -95,7 +95,7 @@ gl_FragCoord origin is upper left
|
|||
0:20 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
|
||||
0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
|
||||
0:? 'g_tTexbfs' (layout( r32f) uniform samplerBuffer)
|
||||
0:? 'g_tTex1df4' ( uniform texture1D)
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
@ -199,13 +199,13 @@ gl_FragCoord origin is upper left
|
|||
0:20 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int i, uniform uint u, uniform float f, uniform bool b, uniform 2-component vector of int i2, uniform 2-component vector of uint u2, uniform 2-component vector of float f2, uniform 2-component vector of bool b2, uniform uint upos, uniform float fpos})
|
||||
0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
|
||||
0:? 'g_tTexbfs' (layout( r32f) uniform samplerBuffer)
|
||||
0:? 'g_tTex1df4' ( uniform texture1D)
|
||||
0:? 'color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 80
|
||||
// Id's are bound by 81
|
||||
|
||||
Capability Shader
|
||||
Capability Sampled1D
|
||||
|
@ -242,7 +242,7 @@ gl_FragCoord origin is upper left
|
|||
Name 57 "sizeQueryTemp"
|
||||
Name 66 "ps_output"
|
||||
Name 74 "color"
|
||||
Name 79 "g_tTexbfs"
|
||||
Name 80 "g_tTexbfs"
|
||||
MemberDecorate 17($Global) 0 Offset 0
|
||||
MemberDecorate 17($Global) 1 Offset 4
|
||||
MemberDecorate 17($Global) 2 Offset 8
|
||||
|
@ -257,8 +257,7 @@ gl_FragCoord origin is upper left
|
|||
Decorate 19 DescriptorSet 0
|
||||
Decorate 31(g_tTex1df4) DescriptorSet 0
|
||||
Decorate 74(color) Location 0
|
||||
Decorate 79(g_tTexbfs) DescriptorSet 0
|
||||
Decorate 79(g_tTexbfs) NonWritable
|
||||
Decorate 80(g_tTexbfs) DescriptorSet 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
@ -289,9 +288,10 @@ gl_FragCoord origin is upper left
|
|||
68: TypePointer Function 7(fvec4)
|
||||
73: TypePointer Output 7(fvec4)
|
||||
74(color): 73(ptr) Variable Output
|
||||
77: TypeImage 6(float) Buffer nonsampled format:R32f
|
||||
78: TypePointer UniformConstant 77
|
||||
79(g_tTexbfs): 78(ptr) Variable UniformConstant
|
||||
77: TypeImage 6(float) Buffer sampled format:R32f
|
||||
78: TypeSampledImage 77
|
||||
79: TypePointer UniformConstant 78
|
||||
80(g_tTexbfs): 79(ptr) Variable UniformConstant
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
75:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -8,8 +8,8 @@ gl_FragCoord origin is upper left
|
|||
0:28 Sequence
|
||||
0:28 move second child to first child ( temp 4-component vector of float)
|
||||
0:28 'r00' ( temp 4-component vector of float)
|
||||
0:28 imageLoad ( temp 4-component vector of float)
|
||||
0:28 'g_tTexbf4' (layout( rgba32f) readonly uniform imageBuffer)
|
||||
0:28 textureFetch ( temp 4-component vector of float)
|
||||
0:28 'g_tTexbf4' (layout( rgba32f) uniform samplerBuffer)
|
||||
0:28 c1: direct index for structure ( uniform int)
|
||||
0:28 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:28 Constant:
|
||||
|
@ -17,8 +17,8 @@ gl_FragCoord origin is upper left
|
|||
0:29 Sequence
|
||||
0:29 move second child to first child ( temp 4-component vector of int)
|
||||
0:29 'r01' ( temp 4-component vector of int)
|
||||
0:29 imageLoad ( temp 4-component vector of int)
|
||||
0:29 'g_tTexbi4' (layout( rgba32i) readonly uniform iimageBuffer)
|
||||
0:29 textureFetch ( temp 4-component vector of int)
|
||||
0:29 'g_tTexbi4' (layout( rgba32i) uniform isamplerBuffer)
|
||||
0:29 c1: direct index for structure ( uniform int)
|
||||
0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:29 Constant:
|
||||
|
@ -26,8 +26,8 @@ gl_FragCoord origin is upper left
|
|||
0:30 Sequence
|
||||
0:30 move second child to first child ( temp 4-component vector of uint)
|
||||
0:30 'r02' ( temp 4-component vector of uint)
|
||||
0:30 imageLoad ( temp 4-component vector of uint)
|
||||
0:30 'g_tTexbu4' (layout( rgba32ui) readonly uniform uimageBuffer)
|
||||
0:30 textureFetch ( temp 4-component vector of uint)
|
||||
0:30 'g_tTexbu4' (layout( rgba32ui) uniform usamplerBuffer)
|
||||
0:30 c1: direct index for structure ( uniform int)
|
||||
0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:30 Constant:
|
||||
|
@ -71,10 +71,10 @@ gl_FragCoord origin is upper left
|
|||
0:24 Constant:
|
||||
0:24 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) readonly uniform imageBuffer)
|
||||
0:? 'g_tTexbf4' (layout( rgba32f) readonly uniform imageBuffer)
|
||||
0:? 'g_tTexbi4' (layout( rgba32i) readonly uniform iimageBuffer)
|
||||
0:? 'g_tTexbu4' (layout( rgba32ui) readonly uniform uimageBuffer)
|
||||
0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) uniform samplerBuffer)
|
||||
0:? 'g_tTexbf4' (layout( rgba32f) uniform samplerBuffer)
|
||||
0:? 'g_tTexbi4' (layout( rgba32i) uniform isamplerBuffer)
|
||||
0:? 'g_tTexbu4' (layout( rgba32ui) uniform usamplerBuffer)
|
||||
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:? 'Color' (layout( location=0) out 4-component vector of float)
|
||||
0:? 'Depth' ( out float FragDepth)
|
||||
|
@ -92,8 +92,8 @@ gl_FragCoord origin is upper left
|
|||
0:28 Sequence
|
||||
0:28 move second child to first child ( temp 4-component vector of float)
|
||||
0:28 'r00' ( temp 4-component vector of float)
|
||||
0:28 imageLoad ( temp 4-component vector of float)
|
||||
0:28 'g_tTexbf4' (layout( rgba32f) readonly uniform imageBuffer)
|
||||
0:28 textureFetch ( temp 4-component vector of float)
|
||||
0:28 'g_tTexbf4' (layout( rgba32f) uniform samplerBuffer)
|
||||
0:28 c1: direct index for structure ( uniform int)
|
||||
0:28 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:28 Constant:
|
||||
|
@ -101,8 +101,8 @@ gl_FragCoord origin is upper left
|
|||
0:29 Sequence
|
||||
0:29 move second child to first child ( temp 4-component vector of int)
|
||||
0:29 'r01' ( temp 4-component vector of int)
|
||||
0:29 imageLoad ( temp 4-component vector of int)
|
||||
0:29 'g_tTexbi4' (layout( rgba32i) readonly uniform iimageBuffer)
|
||||
0:29 textureFetch ( temp 4-component vector of int)
|
||||
0:29 'g_tTexbi4' (layout( rgba32i) uniform isamplerBuffer)
|
||||
0:29 c1: direct index for structure ( uniform int)
|
||||
0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:29 Constant:
|
||||
|
@ -110,8 +110,8 @@ gl_FragCoord origin is upper left
|
|||
0:30 Sequence
|
||||
0:30 move second child to first child ( temp 4-component vector of uint)
|
||||
0:30 'r02' ( temp 4-component vector of uint)
|
||||
0:30 imageLoad ( temp 4-component vector of uint)
|
||||
0:30 'g_tTexbu4' (layout( rgba32ui) readonly uniform uimageBuffer)
|
||||
0:30 textureFetch ( temp 4-component vector of uint)
|
||||
0:30 'g_tTexbu4' (layout( rgba32ui) uniform usamplerBuffer)
|
||||
0:30 c1: direct index for structure ( uniform int)
|
||||
0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:30 Constant:
|
||||
|
@ -155,23 +155,23 @@ gl_FragCoord origin is upper left
|
|||
0:24 Constant:
|
||||
0:24 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) readonly uniform imageBuffer)
|
||||
0:? 'g_tTexbf4' (layout( rgba32f) readonly uniform imageBuffer)
|
||||
0:? 'g_tTexbi4' (layout( rgba32i) readonly uniform iimageBuffer)
|
||||
0:? 'g_tTexbu4' (layout( rgba32ui) readonly uniform uimageBuffer)
|
||||
0:? 'g_tTexbf4_test' (layout( binding=0 rgba32f) uniform samplerBuffer)
|
||||
0:? 'g_tTexbf4' (layout( rgba32f) uniform samplerBuffer)
|
||||
0:? 'g_tTexbi4' (layout( rgba32i) uniform isamplerBuffer)
|
||||
0:? 'g_tTexbu4' (layout( rgba32ui) uniform usamplerBuffer)
|
||||
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:? 'Color' (layout( location=0) out 4-component vector of float)
|
||||
0:? 'Depth' ( out float FragDepth)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 72
|
||||
// Id's are bound by 78
|
||||
|
||||
Capability Shader
|
||||
Capability SampledBuffer
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 64 68
|
||||
EntryPoint Fragment 4 "main" 70 74
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 8 "PS_OUTPUT"
|
||||
|
@ -179,47 +179,43 @@ gl_FragCoord origin is upper left
|
|||
MemberName 8(PS_OUTPUT) 1 "Depth"
|
||||
Name 10 "@main("
|
||||
Name 13 "r00"
|
||||
Name 16 "g_tTexbf4"
|
||||
Name 22 "$Global"
|
||||
MemberName 22($Global) 0 "c1"
|
||||
MemberName 22($Global) 1 "c2"
|
||||
MemberName 22($Global) 2 "c3"
|
||||
MemberName 22($Global) 3 "c4"
|
||||
MemberName 22($Global) 4 "o1"
|
||||
MemberName 22($Global) 5 "o2"
|
||||
MemberName 22($Global) 6 "o3"
|
||||
MemberName 22($Global) 7 "o4"
|
||||
Name 24 ""
|
||||
Name 31 "r01"
|
||||
Name 34 "g_tTexbi4"
|
||||
Name 42 "r02"
|
||||
Name 45 "g_tTexbu4"
|
||||
Name 51 "psout"
|
||||
Name 61 "flattenTemp"
|
||||
Name 64 "Color"
|
||||
Name 68 "Depth"
|
||||
Name 71 "g_tTexbf4_test"
|
||||
Decorate 16(g_tTexbf4) DescriptorSet 0
|
||||
Decorate 16(g_tTexbf4) NonWritable
|
||||
MemberDecorate 22($Global) 0 Offset 0
|
||||
MemberDecorate 22($Global) 1 Offset 8
|
||||
MemberDecorate 22($Global) 2 Offset 16
|
||||
MemberDecorate 22($Global) 3 Offset 32
|
||||
MemberDecorate 22($Global) 4 Offset 48
|
||||
MemberDecorate 22($Global) 5 Offset 56
|
||||
MemberDecorate 22($Global) 6 Offset 64
|
||||
MemberDecorate 22($Global) 7 Offset 80
|
||||
Decorate 22($Global) Block
|
||||
Decorate 24 DescriptorSet 0
|
||||
Decorate 34(g_tTexbi4) DescriptorSet 0
|
||||
Decorate 34(g_tTexbi4) NonWritable
|
||||
Decorate 45(g_tTexbu4) DescriptorSet 0
|
||||
Decorate 45(g_tTexbu4) NonWritable
|
||||
Decorate 64(Color) Location 0
|
||||
Decorate 68(Depth) BuiltIn FragDepth
|
||||
Decorate 71(g_tTexbf4_test) DescriptorSet 0
|
||||
Decorate 71(g_tTexbf4_test) Binding 0
|
||||
Decorate 71(g_tTexbf4_test) NonWritable
|
||||
Name 17 "g_tTexbf4"
|
||||
Name 23 "$Global"
|
||||
MemberName 23($Global) 0 "c1"
|
||||
MemberName 23($Global) 1 "c2"
|
||||
MemberName 23($Global) 2 "c3"
|
||||
MemberName 23($Global) 3 "c4"
|
||||
MemberName 23($Global) 4 "o1"
|
||||
MemberName 23($Global) 5 "o2"
|
||||
MemberName 23($Global) 6 "o3"
|
||||
MemberName 23($Global) 7 "o4"
|
||||
Name 25 ""
|
||||
Name 33 "r01"
|
||||
Name 37 "g_tTexbi4"
|
||||
Name 46 "r02"
|
||||
Name 50 "g_tTexbu4"
|
||||
Name 57 "psout"
|
||||
Name 67 "flattenTemp"
|
||||
Name 70 "Color"
|
||||
Name 74 "Depth"
|
||||
Name 77 "g_tTexbf4_test"
|
||||
Decorate 17(g_tTexbf4) DescriptorSet 0
|
||||
MemberDecorate 23($Global) 0 Offset 0
|
||||
MemberDecorate 23($Global) 1 Offset 8
|
||||
MemberDecorate 23($Global) 2 Offset 16
|
||||
MemberDecorate 23($Global) 3 Offset 32
|
||||
MemberDecorate 23($Global) 4 Offset 48
|
||||
MemberDecorate 23($Global) 5 Offset 56
|
||||
MemberDecorate 23($Global) 6 Offset 64
|
||||
MemberDecorate 23($Global) 7 Offset 80
|
||||
Decorate 23($Global) Block
|
||||
Decorate 25 DescriptorSet 0
|
||||
Decorate 37(g_tTexbi4) DescriptorSet 0
|
||||
Decorate 50(g_tTexbu4) DescriptorSet 0
|
||||
Decorate 70(Color) Location 0
|
||||
Decorate 74(Depth) BuiltIn FragDepth
|
||||
Decorate 77(g_tTexbf4_test) DescriptorSet 0
|
||||
Decorate 77(g_tTexbf4_test) Binding 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
@ -227,76 +223,82 @@ gl_FragCoord origin is upper left
|
|||
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
|
||||
9: TypeFunction 8(PS_OUTPUT)
|
||||
12: TypePointer Function 7(fvec4)
|
||||
14: TypeImage 6(float) Buffer nonsampled format:Rgba32f
|
||||
15: TypePointer UniformConstant 14
|
||||
16(g_tTexbf4): 15(ptr) Variable UniformConstant
|
||||
18: TypeInt 32 1
|
||||
19: TypeVector 18(int) 2
|
||||
20: TypeVector 18(int) 3
|
||||
21: TypeVector 18(int) 4
|
||||
22($Global): TypeStruct 18(int) 19(ivec2) 20(ivec3) 21(ivec4) 18(int) 19(ivec2) 20(ivec3) 21(ivec4)
|
||||
23: TypePointer Uniform 22($Global)
|
||||
24: 23(ptr) Variable Uniform
|
||||
25: 18(int) Constant 0
|
||||
26: TypePointer Uniform 18(int)
|
||||
30: TypePointer Function 21(ivec4)
|
||||
32: TypeImage 18(int) Buffer nonsampled format:Rgba32i
|
||||
33: TypePointer UniformConstant 32
|
||||
34(g_tTexbi4): 33(ptr) Variable UniformConstant
|
||||
39: TypeInt 32 0
|
||||
40: TypeVector 39(int) 4
|
||||
41: TypePointer Function 40(ivec4)
|
||||
43: TypeImage 39(int) Buffer nonsampled format:Rgba32ui
|
||||
44: TypePointer UniformConstant 43
|
||||
45(g_tTexbu4): 44(ptr) Variable UniformConstant
|
||||
50: TypePointer Function 8(PS_OUTPUT)
|
||||
52: 6(float) Constant 1065353216
|
||||
53: 7(fvec4) ConstantComposite 52 52 52 52
|
||||
55: 18(int) Constant 1
|
||||
56: TypePointer Function 6(float)
|
||||
63: TypePointer Output 7(fvec4)
|
||||
64(Color): 63(ptr) Variable Output
|
||||
67: TypePointer Output 6(float)
|
||||
68(Depth): 67(ptr) Variable Output
|
||||
71(g_tTexbf4_test): 15(ptr) Variable UniformConstant
|
||||
14: TypeImage 6(float) Buffer sampled format:Rgba32f
|
||||
15: TypeSampledImage 14
|
||||
16: TypePointer UniformConstant 15
|
||||
17(g_tTexbf4): 16(ptr) Variable UniformConstant
|
||||
19: TypeInt 32 1
|
||||
20: TypeVector 19(int) 2
|
||||
21: TypeVector 19(int) 3
|
||||
22: TypeVector 19(int) 4
|
||||
23($Global): TypeStruct 19(int) 20(ivec2) 21(ivec3) 22(ivec4) 19(int) 20(ivec2) 21(ivec3) 22(ivec4)
|
||||
24: TypePointer Uniform 23($Global)
|
||||
25: 24(ptr) Variable Uniform
|
||||
26: 19(int) Constant 0
|
||||
27: TypePointer Uniform 19(int)
|
||||
32: TypePointer Function 22(ivec4)
|
||||
34: TypeImage 19(int) Buffer sampled format:Rgba32i
|
||||
35: TypeSampledImage 34
|
||||
36: TypePointer UniformConstant 35
|
||||
37(g_tTexbi4): 36(ptr) Variable UniformConstant
|
||||
43: TypeInt 32 0
|
||||
44: TypeVector 43(int) 4
|
||||
45: TypePointer Function 44(ivec4)
|
||||
47: TypeImage 43(int) Buffer sampled format:Rgba32ui
|
||||
48: TypeSampledImage 47
|
||||
49: TypePointer UniformConstant 48
|
||||
50(g_tTexbu4): 49(ptr) Variable UniformConstant
|
||||
56: TypePointer Function 8(PS_OUTPUT)
|
||||
58: 6(float) Constant 1065353216
|
||||
59: 7(fvec4) ConstantComposite 58 58 58 58
|
||||
61: 19(int) Constant 1
|
||||
62: TypePointer Function 6(float)
|
||||
69: TypePointer Output 7(fvec4)
|
||||
70(Color): 69(ptr) Variable Output
|
||||
73: TypePointer Output 6(float)
|
||||
74(Depth): 73(ptr) Variable Output
|
||||
77(g_tTexbf4_test): 16(ptr) Variable UniformConstant
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
61(flattenTemp): 50(ptr) Variable Function
|
||||
62:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
Store 61(flattenTemp) 62
|
||||
65: 12(ptr) AccessChain 61(flattenTemp) 25
|
||||
66: 7(fvec4) Load 65
|
||||
Store 64(Color) 66
|
||||
69: 56(ptr) AccessChain 61(flattenTemp) 55
|
||||
70: 6(float) Load 69
|
||||
Store 68(Depth) 70
|
||||
67(flattenTemp): 56(ptr) Variable Function
|
||||
68:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
Store 67(flattenTemp) 68
|
||||
71: 12(ptr) AccessChain 67(flattenTemp) 26
|
||||
72: 7(fvec4) Load 71
|
||||
Store 70(Color) 72
|
||||
75: 62(ptr) AccessChain 67(flattenTemp) 61
|
||||
76: 6(float) Load 75
|
||||
Store 74(Depth) 76
|
||||
Return
|
||||
FunctionEnd
|
||||
10(@main():8(PS_OUTPUT) Function None 9
|
||||
11: Label
|
||||
13(r00): 12(ptr) Variable Function
|
||||
31(r01): 30(ptr) Variable Function
|
||||
42(r02): 41(ptr) Variable Function
|
||||
51(psout): 50(ptr) Variable Function
|
||||
17: 14 Load 16(g_tTexbf4)
|
||||
27: 26(ptr) AccessChain 24 25
|
||||
28: 18(int) Load 27
|
||||
29: 7(fvec4) ImageRead 17 28
|
||||
Store 13(r00) 29
|
||||
35: 32 Load 34(g_tTexbi4)
|
||||
36: 26(ptr) AccessChain 24 25
|
||||
37: 18(int) Load 36
|
||||
38: 21(ivec4) ImageRead 35 37
|
||||
Store 31(r01) 38
|
||||
46: 43 Load 45(g_tTexbu4)
|
||||
47: 26(ptr) AccessChain 24 25
|
||||
48: 18(int) Load 47
|
||||
49: 40(ivec4) ImageRead 46 48
|
||||
Store 42(r02) 49
|
||||
54: 12(ptr) AccessChain 51(psout) 25
|
||||
Store 54 53
|
||||
57: 56(ptr) AccessChain 51(psout) 55
|
||||
Store 57 52
|
||||
58:8(PS_OUTPUT) Load 51(psout)
|
||||
ReturnValue 58
|
||||
33(r01): 32(ptr) Variable Function
|
||||
46(r02): 45(ptr) Variable Function
|
||||
57(psout): 56(ptr) Variable Function
|
||||
18: 15 Load 17(g_tTexbf4)
|
||||
28: 27(ptr) AccessChain 25 26
|
||||
29: 19(int) Load 28
|
||||
30: 14 Image 18
|
||||
31: 7(fvec4) ImageFetch 30 29
|
||||
Store 13(r00) 31
|
||||
38: 35 Load 37(g_tTexbi4)
|
||||
39: 27(ptr) AccessChain 25 26
|
||||
40: 19(int) Load 39
|
||||
41: 34 Image 38
|
||||
42: 22(ivec4) ImageFetch 41 40
|
||||
Store 33(r01) 42
|
||||
51: 48 Load 50(g_tTexbu4)
|
||||
52: 27(ptr) AccessChain 25 26
|
||||
53: 19(int) Load 52
|
||||
54: 47 Image 51
|
||||
55: 44(ivec4) ImageFetch 54 53
|
||||
Store 46(r02) 55
|
||||
60: 12(ptr) AccessChain 57(psout) 26
|
||||
Store 60 59
|
||||
63: 62(ptr) AccessChain 57(psout) 61
|
||||
Store 63 58
|
||||
64:8(PS_OUTPUT) Load 57(psout)
|
||||
ReturnValue 64
|
||||
FunctionEnd
|
||||
|
|
|
@ -9,8 +9,8 @@ gl_FragCoord origin is upper left
|
|||
0:28 move second child to first child ( temp float)
|
||||
0:28 'r00' ( temp float)
|
||||
0:28 Construct float ( temp float)
|
||||
0:? imageLoad ( temp 4-component vector of float)
|
||||
0:28 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
|
||||
0:? textureFetch ( temp 4-component vector of float)
|
||||
0:28 'g_tTexbfs' (layout( r32f) uniform samplerBuffer)
|
||||
0:28 c1: direct index for structure ( uniform int)
|
||||
0:28 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:28 Constant:
|
||||
|
@ -19,8 +19,8 @@ gl_FragCoord origin is upper left
|
|||
0:29 move second child to first child ( temp int)
|
||||
0:29 'r01' ( temp int)
|
||||
0:29 Construct int ( temp int)
|
||||
0:? imageLoad ( temp 4-component vector of int)
|
||||
0:29 'g_tTexbis' (layout( r32i) readonly uniform iimageBuffer)
|
||||
0:? textureFetch ( temp 4-component vector of int)
|
||||
0:29 'g_tTexbis' (layout( r32i) uniform isamplerBuffer)
|
||||
0:29 c1: direct index for structure ( uniform int)
|
||||
0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:29 Constant:
|
||||
|
@ -29,8 +29,8 @@ gl_FragCoord origin is upper left
|
|||
0:30 move second child to first child ( temp uint)
|
||||
0:30 'r02' ( temp uint)
|
||||
0:30 Construct uint ( temp uint)
|
||||
0:? imageLoad ( temp 4-component vector of uint)
|
||||
0:30 'g_tTexbus' (layout( r32ui) readonly uniform uimageBuffer)
|
||||
0:? textureFetch ( temp 4-component vector of uint)
|
||||
0:30 'g_tTexbus' (layout( r32ui) uniform usamplerBuffer)
|
||||
0:30 c1: direct index for structure ( uniform int)
|
||||
0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:30 Constant:
|
||||
|
@ -74,10 +74,10 @@ gl_FragCoord origin is upper left
|
|||
0:24 Constant:
|
||||
0:24 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'g_tTexbfs_test' (layout( binding=0 r32f) readonly uniform imageBuffer)
|
||||
0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
|
||||
0:? 'g_tTexbis' (layout( r32i) readonly uniform iimageBuffer)
|
||||
0:? 'g_tTexbus' (layout( r32ui) readonly uniform uimageBuffer)
|
||||
0:? 'g_tTexbfs_test' (layout( binding=0 r32f) uniform samplerBuffer)
|
||||
0:? 'g_tTexbfs' (layout( r32f) uniform samplerBuffer)
|
||||
0:? 'g_tTexbis' (layout( r32i) uniform isamplerBuffer)
|
||||
0:? 'g_tTexbus' (layout( r32ui) uniform usamplerBuffer)
|
||||
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:? 'Color' (layout( location=0) out 4-component vector of float)
|
||||
0:? 'Depth' ( out float FragDepth)
|
||||
|
@ -96,8 +96,8 @@ gl_FragCoord origin is upper left
|
|||
0:28 move second child to first child ( temp float)
|
||||
0:28 'r00' ( temp float)
|
||||
0:28 Construct float ( temp float)
|
||||
0:? imageLoad ( temp 4-component vector of float)
|
||||
0:28 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
|
||||
0:? textureFetch ( temp 4-component vector of float)
|
||||
0:28 'g_tTexbfs' (layout( r32f) uniform samplerBuffer)
|
||||
0:28 c1: direct index for structure ( uniform int)
|
||||
0:28 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:28 Constant:
|
||||
|
@ -106,8 +106,8 @@ gl_FragCoord origin is upper left
|
|||
0:29 move second child to first child ( temp int)
|
||||
0:29 'r01' ( temp int)
|
||||
0:29 Construct int ( temp int)
|
||||
0:? imageLoad ( temp 4-component vector of int)
|
||||
0:29 'g_tTexbis' (layout( r32i) readonly uniform iimageBuffer)
|
||||
0:? textureFetch ( temp 4-component vector of int)
|
||||
0:29 'g_tTexbis' (layout( r32i) uniform isamplerBuffer)
|
||||
0:29 c1: direct index for structure ( uniform int)
|
||||
0:29 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:29 Constant:
|
||||
|
@ -116,8 +116,8 @@ gl_FragCoord origin is upper left
|
|||
0:30 move second child to first child ( temp uint)
|
||||
0:30 'r02' ( temp uint)
|
||||
0:30 Construct uint ( temp uint)
|
||||
0:? imageLoad ( temp 4-component vector of uint)
|
||||
0:30 'g_tTexbus' (layout( r32ui) readonly uniform uimageBuffer)
|
||||
0:? textureFetch ( temp 4-component vector of uint)
|
||||
0:30 'g_tTexbus' (layout( r32ui) uniform usamplerBuffer)
|
||||
0:30 c1: direct index for structure ( uniform int)
|
||||
0:30 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:30 Constant:
|
||||
|
@ -161,23 +161,23 @@ gl_FragCoord origin is upper left
|
|||
0:24 Constant:
|
||||
0:24 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'g_tTexbfs_test' (layout( binding=0 r32f) readonly uniform imageBuffer)
|
||||
0:? 'g_tTexbfs' (layout( r32f) readonly uniform imageBuffer)
|
||||
0:? 'g_tTexbis' (layout( r32i) readonly uniform iimageBuffer)
|
||||
0:? 'g_tTexbus' (layout( r32ui) readonly uniform uimageBuffer)
|
||||
0:? 'g_tTexbfs_test' (layout( binding=0 r32f) uniform samplerBuffer)
|
||||
0:? 'g_tTexbfs' (layout( r32f) uniform samplerBuffer)
|
||||
0:? 'g_tTexbis' (layout( r32i) uniform isamplerBuffer)
|
||||
0:? 'g_tTexbus' (layout( r32ui) uniform usamplerBuffer)
|
||||
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4})
|
||||
0:? 'Color' (layout( location=0) out 4-component vector of float)
|
||||
0:? 'Depth' ( out float FragDepth)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 75
|
||||
// Id's are bound by 81
|
||||
|
||||
Capability Shader
|
||||
Capability SampledBuffer
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 67 71
|
||||
EntryPoint Fragment 4 "main" 73 77
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 8 "PS_OUTPUT"
|
||||
|
@ -185,47 +185,43 @@ gl_FragCoord origin is upper left
|
|||
MemberName 8(PS_OUTPUT) 1 "Depth"
|
||||
Name 10 "@main("
|
||||
Name 13 "r00"
|
||||
Name 16 "g_tTexbfs"
|
||||
Name 22 "$Global"
|
||||
MemberName 22($Global) 0 "c1"
|
||||
MemberName 22($Global) 1 "c2"
|
||||
MemberName 22($Global) 2 "c3"
|
||||
MemberName 22($Global) 3 "c4"
|
||||
MemberName 22($Global) 4 "o1"
|
||||
MemberName 22($Global) 5 "o2"
|
||||
MemberName 22($Global) 6 "o3"
|
||||
MemberName 22($Global) 7 "o4"
|
||||
Name 24 ""
|
||||
Name 32 "r01"
|
||||
Name 35 "g_tTexbis"
|
||||
Name 43 "r02"
|
||||
Name 46 "g_tTexbus"
|
||||
Name 54 "psout"
|
||||
Name 64 "flattenTemp"
|
||||
Name 67 "Color"
|
||||
Name 71 "Depth"
|
||||
Name 74 "g_tTexbfs_test"
|
||||
Decorate 16(g_tTexbfs) DescriptorSet 0
|
||||
Decorate 16(g_tTexbfs) NonWritable
|
||||
MemberDecorate 22($Global) 0 Offset 0
|
||||
MemberDecorate 22($Global) 1 Offset 8
|
||||
MemberDecorate 22($Global) 2 Offset 16
|
||||
MemberDecorate 22($Global) 3 Offset 32
|
||||
MemberDecorate 22($Global) 4 Offset 48
|
||||
MemberDecorate 22($Global) 5 Offset 56
|
||||
MemberDecorate 22($Global) 6 Offset 64
|
||||
MemberDecorate 22($Global) 7 Offset 80
|
||||
Decorate 22($Global) Block
|
||||
Decorate 24 DescriptorSet 0
|
||||
Decorate 35(g_tTexbis) DescriptorSet 0
|
||||
Decorate 35(g_tTexbis) NonWritable
|
||||
Decorate 46(g_tTexbus) DescriptorSet 0
|
||||
Decorate 46(g_tTexbus) NonWritable
|
||||
Decorate 67(Color) Location 0
|
||||
Decorate 71(Depth) BuiltIn FragDepth
|
||||
Decorate 74(g_tTexbfs_test) DescriptorSet 0
|
||||
Decorate 74(g_tTexbfs_test) Binding 0
|
||||
Decorate 74(g_tTexbfs_test) NonWritable
|
||||
Name 17 "g_tTexbfs"
|
||||
Name 23 "$Global"
|
||||
MemberName 23($Global) 0 "c1"
|
||||
MemberName 23($Global) 1 "c2"
|
||||
MemberName 23($Global) 2 "c3"
|
||||
MemberName 23($Global) 3 "c4"
|
||||
MemberName 23($Global) 4 "o1"
|
||||
MemberName 23($Global) 5 "o2"
|
||||
MemberName 23($Global) 6 "o3"
|
||||
MemberName 23($Global) 7 "o4"
|
||||
Name 25 ""
|
||||
Name 34 "r01"
|
||||
Name 38 "g_tTexbis"
|
||||
Name 47 "r02"
|
||||
Name 51 "g_tTexbus"
|
||||
Name 60 "psout"
|
||||
Name 70 "flattenTemp"
|
||||
Name 73 "Color"
|
||||
Name 77 "Depth"
|
||||
Name 80 "g_tTexbfs_test"
|
||||
Decorate 17(g_tTexbfs) DescriptorSet 0
|
||||
MemberDecorate 23($Global) 0 Offset 0
|
||||
MemberDecorate 23($Global) 1 Offset 8
|
||||
MemberDecorate 23($Global) 2 Offset 16
|
||||
MemberDecorate 23($Global) 3 Offset 32
|
||||
MemberDecorate 23($Global) 4 Offset 48
|
||||
MemberDecorate 23($Global) 5 Offset 56
|
||||
MemberDecorate 23($Global) 6 Offset 64
|
||||
MemberDecorate 23($Global) 7 Offset 80
|
||||
Decorate 23($Global) Block
|
||||
Decorate 25 DescriptorSet 0
|
||||
Decorate 38(g_tTexbis) DescriptorSet 0
|
||||
Decorate 51(g_tTexbus) DescriptorSet 0
|
||||
Decorate 73(Color) Location 0
|
||||
Decorate 77(Depth) BuiltIn FragDepth
|
||||
Decorate 80(g_tTexbfs_test) DescriptorSet 0
|
||||
Decorate 80(g_tTexbfs_test) Binding 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
@ -233,79 +229,85 @@ gl_FragCoord origin is upper left
|
|||
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
|
||||
9: TypeFunction 8(PS_OUTPUT)
|
||||
12: TypePointer Function 6(float)
|
||||
14: TypeImage 6(float) Buffer nonsampled format:R32f
|
||||
15: TypePointer UniformConstant 14
|
||||
16(g_tTexbfs): 15(ptr) Variable UniformConstant
|
||||
18: TypeInt 32 1
|
||||
19: TypeVector 18(int) 2
|
||||
20: TypeVector 18(int) 3
|
||||
21: TypeVector 18(int) 4
|
||||
22($Global): TypeStruct 18(int) 19(ivec2) 20(ivec3) 21(ivec4) 18(int) 19(ivec2) 20(ivec3) 21(ivec4)
|
||||
23: TypePointer Uniform 22($Global)
|
||||
24: 23(ptr) Variable Uniform
|
||||
25: 18(int) Constant 0
|
||||
26: TypePointer Uniform 18(int)
|
||||
31: TypePointer Function 18(int)
|
||||
33: TypeImage 18(int) Buffer nonsampled format:R32i
|
||||
34: TypePointer UniformConstant 33
|
||||
35(g_tTexbis): 34(ptr) Variable UniformConstant
|
||||
41: TypeInt 32 0
|
||||
42: TypePointer Function 41(int)
|
||||
44: TypeImage 41(int) Buffer nonsampled format:R32ui
|
||||
45: TypePointer UniformConstant 44
|
||||
46(g_tTexbus): 45(ptr) Variable UniformConstant
|
||||
50: TypeVector 41(int) 4
|
||||
53: TypePointer Function 8(PS_OUTPUT)
|
||||
55: 6(float) Constant 1065353216
|
||||
56: 7(fvec4) ConstantComposite 55 55 55 55
|
||||
57: TypePointer Function 7(fvec4)
|
||||
59: 18(int) Constant 1
|
||||
66: TypePointer Output 7(fvec4)
|
||||
67(Color): 66(ptr) Variable Output
|
||||
70: TypePointer Output 6(float)
|
||||
71(Depth): 70(ptr) Variable Output
|
||||
74(g_tTexbfs_test): 15(ptr) Variable UniformConstant
|
||||
14: TypeImage 6(float) Buffer sampled format:R32f
|
||||
15: TypeSampledImage 14
|
||||
16: TypePointer UniformConstant 15
|
||||
17(g_tTexbfs): 16(ptr) Variable UniformConstant
|
||||
19: TypeInt 32 1
|
||||
20: TypeVector 19(int) 2
|
||||
21: TypeVector 19(int) 3
|
||||
22: TypeVector 19(int) 4
|
||||
23($Global): TypeStruct 19(int) 20(ivec2) 21(ivec3) 22(ivec4) 19(int) 20(ivec2) 21(ivec3) 22(ivec4)
|
||||
24: TypePointer Uniform 23($Global)
|
||||
25: 24(ptr) Variable Uniform
|
||||
26: 19(int) Constant 0
|
||||
27: TypePointer Uniform 19(int)
|
||||
33: TypePointer Function 19(int)
|
||||
35: TypeImage 19(int) Buffer sampled format:R32i
|
||||
36: TypeSampledImage 35
|
||||
37: TypePointer UniformConstant 36
|
||||
38(g_tTexbis): 37(ptr) Variable UniformConstant
|
||||
45: TypeInt 32 0
|
||||
46: TypePointer Function 45(int)
|
||||
48: TypeImage 45(int) Buffer sampled format:R32ui
|
||||
49: TypeSampledImage 48
|
||||
50: TypePointer UniformConstant 49
|
||||
51(g_tTexbus): 50(ptr) Variable UniformConstant
|
||||
56: TypeVector 45(int) 4
|
||||
59: TypePointer Function 8(PS_OUTPUT)
|
||||
61: 6(float) Constant 1065353216
|
||||
62: 7(fvec4) ConstantComposite 61 61 61 61
|
||||
63: TypePointer Function 7(fvec4)
|
||||
65: 19(int) Constant 1
|
||||
72: TypePointer Output 7(fvec4)
|
||||
73(Color): 72(ptr) Variable Output
|
||||
76: TypePointer Output 6(float)
|
||||
77(Depth): 76(ptr) Variable Output
|
||||
80(g_tTexbfs_test): 16(ptr) Variable UniformConstant
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
64(flattenTemp): 53(ptr) Variable Function
|
||||
65:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
Store 64(flattenTemp) 65
|
||||
68: 57(ptr) AccessChain 64(flattenTemp) 25
|
||||
69: 7(fvec4) Load 68
|
||||
Store 67(Color) 69
|
||||
72: 12(ptr) AccessChain 64(flattenTemp) 59
|
||||
73: 6(float) Load 72
|
||||
Store 71(Depth) 73
|
||||
70(flattenTemp): 59(ptr) Variable Function
|
||||
71:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
Store 70(flattenTemp) 71
|
||||
74: 63(ptr) AccessChain 70(flattenTemp) 26
|
||||
75: 7(fvec4) Load 74
|
||||
Store 73(Color) 75
|
||||
78: 12(ptr) AccessChain 70(flattenTemp) 65
|
||||
79: 6(float) Load 78
|
||||
Store 77(Depth) 79
|
||||
Return
|
||||
FunctionEnd
|
||||
10(@main():8(PS_OUTPUT) Function None 9
|
||||
11: Label
|
||||
13(r00): 12(ptr) Variable Function
|
||||
32(r01): 31(ptr) Variable Function
|
||||
43(r02): 42(ptr) Variable Function
|
||||
54(psout): 53(ptr) Variable Function
|
||||
17: 14 Load 16(g_tTexbfs)
|
||||
27: 26(ptr) AccessChain 24 25
|
||||
28: 18(int) Load 27
|
||||
29: 7(fvec4) ImageRead 17 28
|
||||
30: 6(float) CompositeExtract 29 0
|
||||
Store 13(r00) 30
|
||||
36: 33 Load 35(g_tTexbis)
|
||||
37: 26(ptr) AccessChain 24 25
|
||||
38: 18(int) Load 37
|
||||
39: 21(ivec4) ImageRead 36 38
|
||||
40: 18(int) CompositeExtract 39 0
|
||||
Store 32(r01) 40
|
||||
47: 44 Load 46(g_tTexbus)
|
||||
48: 26(ptr) AccessChain 24 25
|
||||
49: 18(int) Load 48
|
||||
51: 50(ivec4) ImageRead 47 49
|
||||
52: 41(int) CompositeExtract 51 0
|
||||
Store 43(r02) 52
|
||||
58: 57(ptr) AccessChain 54(psout) 25
|
||||
Store 58 56
|
||||
60: 12(ptr) AccessChain 54(psout) 59
|
||||
Store 60 55
|
||||
61:8(PS_OUTPUT) Load 54(psout)
|
||||
ReturnValue 61
|
||||
34(r01): 33(ptr) Variable Function
|
||||
47(r02): 46(ptr) Variable Function
|
||||
60(psout): 59(ptr) Variable Function
|
||||
18: 15 Load 17(g_tTexbfs)
|
||||
28: 27(ptr) AccessChain 25 26
|
||||
29: 19(int) Load 28
|
||||
30: 14 Image 18
|
||||
31: 7(fvec4) ImageFetch 30 29
|
||||
32: 6(float) CompositeExtract 31 0
|
||||
Store 13(r00) 32
|
||||
39: 36 Load 38(g_tTexbis)
|
||||
40: 27(ptr) AccessChain 25 26
|
||||
41: 19(int) Load 40
|
||||
42: 35 Image 39
|
||||
43: 22(ivec4) ImageFetch 42 41
|
||||
44: 19(int) CompositeExtract 43 0
|
||||
Store 34(r01) 44
|
||||
52: 49 Load 51(g_tTexbus)
|
||||
53: 27(ptr) AccessChain 25 26
|
||||
54: 19(int) Load 53
|
||||
55: 48 Image 52
|
||||
57: 56(ivec4) ImageFetch 55 54
|
||||
58: 45(int) CompositeExtract 57 0
|
||||
Store 47(r02) 58
|
||||
64: 63(ptr) AccessChain 60(psout) 26
|
||||
Store 64 62
|
||||
66: 12(ptr) AccessChain 60(psout) 65
|
||||
Store 66 61
|
||||
67:8(PS_OUTPUT) Load 60(psout)
|
||||
ReturnValue 67
|
||||
FunctionEnd
|
||||
|
|
|
@ -31,17 +31,19 @@ gl_FragCoord origin is upper left
|
|||
0:17 3 (const uint)
|
||||
0:19 Test condition and select ( temp void)
|
||||
0:19 Condition
|
||||
0:19 ival: direct index for structure ( uniform int)
|
||||
0:19 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
|
||||
0:19 Constant:
|
||||
0:19 0 (const uint)
|
||||
0:19 Convert int to bool ( temp bool)
|
||||
0:19 ival: direct index for structure ( uniform int)
|
||||
0:19 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
|
||||
0:19 Constant:
|
||||
0:19 0 (const uint)
|
||||
0:19 true case is null
|
||||
0:20 Test condition and select ( temp void)
|
||||
0:20 Condition
|
||||
0:20 fval: direct index for structure ( uniform float)
|
||||
0:20 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
|
||||
0:20 Constant:
|
||||
0:20 2 (const uint)
|
||||
0:20 Convert float to bool ( temp bool)
|
||||
0:20 fval: direct index for structure ( uniform float)
|
||||
0:20 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
|
||||
0:20 Constant:
|
||||
0:20 2 (const uint)
|
||||
0:20 true case is null
|
||||
0:21 Test condition and select ( temp void)
|
||||
0:21 Condition
|
||||
|
@ -123,17 +125,19 @@ gl_FragCoord origin is upper left
|
|||
0:17 3 (const uint)
|
||||
0:19 Test condition and select ( temp void)
|
||||
0:19 Condition
|
||||
0:19 ival: direct index for structure ( uniform int)
|
||||
0:19 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
|
||||
0:19 Constant:
|
||||
0:19 0 (const uint)
|
||||
0:19 Convert int to bool ( temp bool)
|
||||
0:19 ival: direct index for structure ( uniform int)
|
||||
0:19 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
|
||||
0:19 Constant:
|
||||
0:19 0 (const uint)
|
||||
0:19 true case is null
|
||||
0:20 Test condition and select ( temp void)
|
||||
0:20 Condition
|
||||
0:20 fval: direct index for structure ( uniform float)
|
||||
0:20 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
|
||||
0:20 Constant:
|
||||
0:20 2 (const uint)
|
||||
0:20 Convert float to bool ( temp bool)
|
||||
0:20 fval: direct index for structure ( uniform float)
|
||||
0:20 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
|
||||
0:20 Constant:
|
||||
0:20 2 (const uint)
|
||||
0:20 true case is null
|
||||
0:21 Test condition and select ( temp void)
|
||||
0:21 Condition
|
||||
|
@ -181,12 +185,12 @@ gl_FragCoord origin is upper left
|
|||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 82
|
||||
// Id's are bound by 84
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 79
|
||||
EntryPoint Fragment 4 "main" 81
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 8 "PS_OUTPUT"
|
||||
|
@ -198,15 +202,15 @@ gl_FragCoord origin is upper left
|
|||
MemberName 14($Global) 2 "fval"
|
||||
MemberName 14($Global) 3 "fval4"
|
||||
Name 16 ""
|
||||
Name 70 "psout"
|
||||
Name 79 "Color"
|
||||
Name 72 "psout"
|
||||
Name 81 "Color"
|
||||
MemberDecorate 14($Global) 0 Offset 0
|
||||
MemberDecorate 14($Global) 1 Offset 16
|
||||
MemberDecorate 14($Global) 2 Offset 32
|
||||
MemberDecorate 14($Global) 3 Offset 48
|
||||
Decorate 14($Global) Block
|
||||
Decorate 16 DescriptorSet 0
|
||||
Decorate 79(Color) Location 0
|
||||
Decorate 81(Color) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
@ -234,22 +238,22 @@ gl_FragCoord origin is upper left
|
|||
42: 12(int) Constant 3
|
||||
43: TypePointer Uniform 7(fvec4)
|
||||
46: 7(fvec4) ConstantComposite 39 39 39 39
|
||||
69: TypePointer Function 8(PS_OUTPUT)
|
||||
71: 6(float) Constant 1065353216
|
||||
72: 7(fvec4) ConstantComposite 71 71 71 71
|
||||
73: TypePointer Function 7(fvec4)
|
||||
78: TypePointer Output 7(fvec4)
|
||||
79(Color): 78(ptr) Variable Output
|
||||
71: TypePointer Function 8(PS_OUTPUT)
|
||||
73: 6(float) Constant 1065353216
|
||||
74: 7(fvec4) ConstantComposite 73 73 73 73
|
||||
75: TypePointer Function 7(fvec4)
|
||||
80: TypePointer Output 7(fvec4)
|
||||
81(Color): 80(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
80:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
81: 7(fvec4) CompositeExtract 80 0
|
||||
Store 79(Color) 81
|
||||
82:8(PS_OUTPUT) FunctionCall 10(@main()
|
||||
83: 7(fvec4) CompositeExtract 82 0
|
||||
Store 81(Color) 83
|
||||
Return
|
||||
FunctionEnd
|
||||
10(@main():8(PS_OUTPUT) Function None 9
|
||||
11: Label
|
||||
70(psout): 69(ptr) Variable Function
|
||||
72(psout): 71(ptr) Variable Function
|
||||
19: 18(ptr) AccessChain 16 17
|
||||
20: 12(int) Load 19
|
||||
24: 21(bool) INotEqual 20 23
|
||||
|
@ -268,38 +272,40 @@ gl_FragCoord origin is upper left
|
|||
48: 30(bvec4) LogicalNot 47
|
||||
49: 18(ptr) AccessChain 16 17
|
||||
50: 12(int) Load 49
|
||||
SelectionMerge 52 None
|
||||
BranchConditional 50 51 52
|
||||
51: Label
|
||||
Branch 52
|
||||
52: Label
|
||||
53: 36(ptr) AccessChain 16 35
|
||||
54: 6(float) Load 53
|
||||
SelectionMerge 56 None
|
||||
BranchConditional 54 55 56
|
||||
55: Label
|
||||
Branch 56
|
||||
56: Label
|
||||
57: 18(ptr) AccessChain 16 17
|
||||
58: 12(int) Load 57
|
||||
59: 21(bool) INotEqual 58 23
|
||||
60: 21(bool) LogicalNot 59
|
||||
SelectionMerge 62 None
|
||||
BranchConditional 60 61 62
|
||||
61: Label
|
||||
Branch 62
|
||||
62: Label
|
||||
63: 36(ptr) AccessChain 16 35
|
||||
64: 6(float) Load 63
|
||||
65: 21(bool) FOrdNotEqual 64 39
|
||||
66: 21(bool) LogicalNot 65
|
||||
SelectionMerge 68 None
|
||||
BranchConditional 66 67 68
|
||||
67: Label
|
||||
Branch 68
|
||||
68: Label
|
||||
74: 73(ptr) AccessChain 70(psout) 17
|
||||
Store 74 72
|
||||
75:8(PS_OUTPUT) Load 70(psout)
|
||||
ReturnValue 75
|
||||
51: 21(bool) INotEqual 50 23
|
||||
SelectionMerge 53 None
|
||||
BranchConditional 51 52 53
|
||||
52: Label
|
||||
Branch 53
|
||||
53: Label
|
||||
54: 36(ptr) AccessChain 16 35
|
||||
55: 6(float) Load 54
|
||||
56: 21(bool) FOrdNotEqual 55 39
|
||||
SelectionMerge 58 None
|
||||
BranchConditional 56 57 58
|
||||
57: Label
|
||||
Branch 58
|
||||
58: Label
|
||||
59: 18(ptr) AccessChain 16 17
|
||||
60: 12(int) Load 59
|
||||
61: 21(bool) INotEqual 60 23
|
||||
62: 21(bool) LogicalNot 61
|
||||
SelectionMerge 64 None
|
||||
BranchConditional 62 63 64
|
||||
63: Label
|
||||
Branch 64
|
||||
64: Label
|
||||
65: 36(ptr) AccessChain 16 35
|
||||
66: 6(float) Load 65
|
||||
67: 21(bool) FOrdNotEqual 66 39
|
||||
68: 21(bool) LogicalNot 67
|
||||
SelectionMerge 70 None
|
||||
BranchConditional 68 69 70
|
||||
69: Label
|
||||
Branch 70
|
||||
70: Label
|
||||
76: 75(ptr) AccessChain 72(psout) 17
|
||||
Store 76 74
|
||||
77:8(PS_OUTPUT) Load 72(psout)
|
||||
ReturnValue 77
|
||||
FunctionEnd
|
||||
|
|
|
@ -0,0 +1,233 @@
|
|||
hlsl.logicalConvert.frag
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:2 Function Definition: @main( ( temp 4-component vector of float)
|
||||
0:2 Function Parameters:
|
||||
0:? Sequence
|
||||
0:3 Test condition and select ( temp void)
|
||||
0:3 Condition
|
||||
0:3 Constant:
|
||||
0:3 false (const bool)
|
||||
0:3 true case
|
||||
0:4 Branch: Return with expression
|
||||
0:4 Constant:
|
||||
0:4 0.000000
|
||||
0:4 0.000000
|
||||
0:4 0.000000
|
||||
0:4 0.000000
|
||||
0:5 Test condition and select ( temp void)
|
||||
0:5 Condition
|
||||
0:5 Constant:
|
||||
0:5 false (const bool)
|
||||
0:5 true case
|
||||
0:6 Branch: Return with expression
|
||||
0:6 Constant:
|
||||
0:6 0.000000
|
||||
0:6 0.000000
|
||||
0:6 0.000000
|
||||
0:6 0.000000
|
||||
0:7 Test condition and select ( temp void)
|
||||
0:7 Condition
|
||||
0:7 Constant:
|
||||
0:7 true (const bool)
|
||||
0:7 true case
|
||||
0:8 Branch: Return with expression
|
||||
0:8 Constant:
|
||||
0:8 0.000000
|
||||
0:8 0.000000
|
||||
0:8 0.000000
|
||||
0:8 0.000000
|
||||
0:9 Test condition and select ( temp void)
|
||||
0:9 Condition
|
||||
0:9 Constant:
|
||||
0:9 true (const bool)
|
||||
0:9 true case
|
||||
0:10 Branch: Return with expression
|
||||
0:10 Constant:
|
||||
0:10 0.000000
|
||||
0:10 0.000000
|
||||
0:10 0.000000
|
||||
0:10 0.000000
|
||||
0:11 Test condition and select ( temp void)
|
||||
0:11 Condition
|
||||
0:11 Constant:
|
||||
0:11 false (const bool)
|
||||
0:11 true case
|
||||
0:12 Branch: Return with expression
|
||||
0:12 Constant:
|
||||
0:12 0.000000
|
||||
0:12 0.000000
|
||||
0:12 0.000000
|
||||
0:12 0.000000
|
||||
0:13 Test condition and select ( temp void)
|
||||
0:13 Condition
|
||||
0:13 Constant:
|
||||
0:13 false (const bool)
|
||||
0:13 true case
|
||||
0:14 Branch: Return with expression
|
||||
0:14 Constant:
|
||||
0:14 0.000000
|
||||
0:14 0.000000
|
||||
0:14 0.000000
|
||||
0:14 0.000000
|
||||
0:2 Function Definition: main( ( temp void)
|
||||
0:2 Function Parameters:
|
||||
0:? Sequence
|
||||
0:2 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
0:2 Function Call: @main( ( temp 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:2 Function Definition: @main( ( temp 4-component vector of float)
|
||||
0:2 Function Parameters:
|
||||
0:? Sequence
|
||||
0:3 Test condition and select ( temp void)
|
||||
0:3 Condition
|
||||
0:3 Constant:
|
||||
0:3 false (const bool)
|
||||
0:3 true case
|
||||
0:4 Branch: Return with expression
|
||||
0:4 Constant:
|
||||
0:4 0.000000
|
||||
0:4 0.000000
|
||||
0:4 0.000000
|
||||
0:4 0.000000
|
||||
0:5 Test condition and select ( temp void)
|
||||
0:5 Condition
|
||||
0:5 Constant:
|
||||
0:5 false (const bool)
|
||||
0:5 true case
|
||||
0:6 Branch: Return with expression
|
||||
0:6 Constant:
|
||||
0:6 0.000000
|
||||
0:6 0.000000
|
||||
0:6 0.000000
|
||||
0:6 0.000000
|
||||
0:7 Test condition and select ( temp void)
|
||||
0:7 Condition
|
||||
0:7 Constant:
|
||||
0:7 true (const bool)
|
||||
0:7 true case
|
||||
0:8 Branch: Return with expression
|
||||
0:8 Constant:
|
||||
0:8 0.000000
|
||||
0:8 0.000000
|
||||
0:8 0.000000
|
||||
0:8 0.000000
|
||||
0:9 Test condition and select ( temp void)
|
||||
0:9 Condition
|
||||
0:9 Constant:
|
||||
0:9 true (const bool)
|
||||
0:9 true case
|
||||
0:10 Branch: Return with expression
|
||||
0:10 Constant:
|
||||
0:10 0.000000
|
||||
0:10 0.000000
|
||||
0:10 0.000000
|
||||
0:10 0.000000
|
||||
0:11 Test condition and select ( temp void)
|
||||
0:11 Condition
|
||||
0:11 Constant:
|
||||
0:11 false (const bool)
|
||||
0:11 true case
|
||||
0:12 Branch: Return with expression
|
||||
0:12 Constant:
|
||||
0:12 0.000000
|
||||
0:12 0.000000
|
||||
0:12 0.000000
|
||||
0:12 0.000000
|
||||
0:13 Test condition and select ( temp void)
|
||||
0:13 Condition
|
||||
0:13 Constant:
|
||||
0:13 false (const bool)
|
||||
0:13 true case
|
||||
0:14 Branch: Return with expression
|
||||
0:14 Constant:
|
||||
0:14 0.000000
|
||||
0:14 0.000000
|
||||
0:14 0.000000
|
||||
0:14 0.000000
|
||||
0:2 Function Definition: main( ( temp void)
|
||||
0:2 Function Parameters:
|
||||
0:? Sequence
|
||||
0:2 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
0:2 Function Call: @main( ( temp 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 38
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 36
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 9 "@main("
|
||||
Name 36 "@entryPointOutput"
|
||||
Decorate 36(@entryPointOutput) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypeFunction 7(fvec4)
|
||||
11: TypeBool
|
||||
12: 11(bool) ConstantFalse
|
||||
15: 6(float) Constant 0
|
||||
16: 7(fvec4) ConstantComposite 15 15 15 15
|
||||
21: 11(bool) ConstantTrue
|
||||
35: TypePointer Output 7(fvec4)
|
||||
36(@entryPointOutput): 35(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
37: 7(fvec4) FunctionCall 9(@main()
|
||||
Store 36(@entryPointOutput) 37
|
||||
Return
|
||||
FunctionEnd
|
||||
9(@main(): 7(fvec4) Function None 8
|
||||
10: Label
|
||||
SelectionMerge 14 None
|
||||
BranchConditional 12 13 14
|
||||
13: Label
|
||||
ReturnValue 16
|
||||
14: Label
|
||||
SelectionMerge 19 None
|
||||
BranchConditional 12 18 19
|
||||
18: Label
|
||||
ReturnValue 16
|
||||
19: Label
|
||||
SelectionMerge 23 None
|
||||
BranchConditional 21 22 23
|
||||
22: Label
|
||||
ReturnValue 16
|
||||
23: Label
|
||||
SelectionMerge 26 None
|
||||
BranchConditional 21 25 26
|
||||
25: Label
|
||||
ReturnValue 16
|
||||
26: Label
|
||||
SelectionMerge 29 None
|
||||
BranchConditional 12 28 29
|
||||
28: Label
|
||||
ReturnValue 16
|
||||
29: Label
|
||||
SelectionMerge 32 None
|
||||
BranchConditional 12 31 32
|
||||
31: Label
|
||||
ReturnValue 16
|
||||
32: Label
|
||||
34: 7(fvec4) Undef
|
||||
ReturnValue 34
|
||||
FunctionEnd
|
|
@ -6,8 +6,8 @@ Shader version: 450
|
|||
0:4 'Index' ( in uint)
|
||||
0:? Sequence
|
||||
0:5 Branch: Return with expression
|
||||
0:5 imageLoad ( temp 4-component vector of float)
|
||||
0:5 'Position' (layout( rgba32f) readonly uniform imageBuffer)
|
||||
0:5 textureFetch ( temp 4-component vector of float)
|
||||
0:5 'Position' (layout( rgba32f) uniform samplerBuffer)
|
||||
0:5 Convert uint to int ( temp int)
|
||||
0:5 'Index' ( in uint)
|
||||
0:9 Function Definition: @RealEntrypoint(u1; ( temp 4-component vector of float)
|
||||
|
@ -28,7 +28,7 @@ Shader version: 450
|
|||
0:9 Function Call: @RealEntrypoint(u1; ( temp 4-component vector of float)
|
||||
0:? 'Index' ( temp uint)
|
||||
0:? Linker Objects
|
||||
0:? 'Position' (layout( rgba32f) readonly uniform imageBuffer)
|
||||
0:? 'Position' (layout( rgba32f) uniform samplerBuffer)
|
||||
0:? '@entryPointOutput' ( out 4-component vector of float Position)
|
||||
0:? 'Index' ( in uint VertexIndex)
|
||||
|
||||
|
@ -43,8 +43,8 @@ Shader version: 450
|
|||
0:4 'Index' ( in uint)
|
||||
0:? Sequence
|
||||
0:5 Branch: Return with expression
|
||||
0:5 imageLoad ( temp 4-component vector of float)
|
||||
0:5 'Position' (layout( rgba32f) readonly uniform imageBuffer)
|
||||
0:5 textureFetch ( temp 4-component vector of float)
|
||||
0:5 'Position' (layout( rgba32f) uniform samplerBuffer)
|
||||
0:5 Convert uint to int ( temp int)
|
||||
0:5 'Index' ( in uint)
|
||||
0:9 Function Definition: @RealEntrypoint(u1; ( temp 4-component vector of float)
|
||||
|
@ -65,34 +65,33 @@ Shader version: 450
|
|||
0:9 Function Call: @RealEntrypoint(u1; ( temp 4-component vector of float)
|
||||
0:? 'Index' ( temp uint)
|
||||
0:? Linker Objects
|
||||
0:? 'Position' (layout( rgba32f) readonly uniform imageBuffer)
|
||||
0:? 'Position' (layout( rgba32f) uniform samplerBuffer)
|
||||
0:? '@entryPointOutput' ( out 4-component vector of float Position)
|
||||
0:? 'Index' ( in uint VertexIndex)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 41
|
||||
// Id's are bound by 43
|
||||
|
||||
Capability Shader
|
||||
Capability SampledBuffer
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4 "RealEntrypoint" 34 37
|
||||
EntryPoint Vertex 4 "RealEntrypoint" 36 39
|
||||
Name 4 "RealEntrypoint"
|
||||
Name 12 "FakeEntrypoint(u1;"
|
||||
Name 11 "Index"
|
||||
Name 15 "@RealEntrypoint(u1;"
|
||||
Name 14 "Index"
|
||||
Name 19 "Position"
|
||||
Name 27 "param"
|
||||
Name 32 "Index"
|
||||
Name 20 "Position"
|
||||
Name 29 "param"
|
||||
Name 34 "Index"
|
||||
Name 37 "@entryPointOutput"
|
||||
Name 38 "param"
|
||||
Decorate 19(Position) DescriptorSet 0
|
||||
Decorate 19(Position) NonWritable
|
||||
Decorate 34(Index) BuiltIn VertexIndex
|
||||
Decorate 37(@entryPointOutput) BuiltIn Position
|
||||
Name 36 "Index"
|
||||
Name 39 "@entryPointOutput"
|
||||
Name 40 "param"
|
||||
Decorate 20(Position) DescriptorSet 0
|
||||
Decorate 36(Index) BuiltIn VertexIndex
|
||||
Decorate 39(@entryPointOutput) BuiltIn Position
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
|
@ -100,41 +99,43 @@ Shader version: 450
|
|||
8: TypeFloat 32
|
||||
9: TypeVector 8(float) 4
|
||||
10: TypeFunction 9(fvec4) 7(ptr)
|
||||
17: TypeImage 8(float) Buffer nonsampled format:Rgba32f
|
||||
18: TypePointer UniformConstant 17
|
||||
19(Position): 18(ptr) Variable UniformConstant
|
||||
22: TypeInt 32 1
|
||||
33: TypePointer Input 6(int)
|
||||
34(Index): 33(ptr) Variable Input
|
||||
36: TypePointer Output 9(fvec4)
|
||||
37(@entryPointOutput): 36(ptr) Variable Output
|
||||
17: TypeImage 8(float) Buffer sampled format:Rgba32f
|
||||
18: TypeSampledImage 17
|
||||
19: TypePointer UniformConstant 18
|
||||
20(Position): 19(ptr) Variable UniformConstant
|
||||
23: TypeInt 32 1
|
||||
35: TypePointer Input 6(int)
|
||||
36(Index): 35(ptr) Variable Input
|
||||
38: TypePointer Output 9(fvec4)
|
||||
39(@entryPointOutput): 38(ptr) Variable Output
|
||||
4(RealEntrypoint): 2 Function None 3
|
||||
5: Label
|
||||
32(Index): 7(ptr) Variable Function
|
||||
38(param): 7(ptr) Variable Function
|
||||
35: 6(int) Load 34(Index)
|
||||
Store 32(Index) 35
|
||||
39: 6(int) Load 32(Index)
|
||||
Store 38(param) 39
|
||||
40: 9(fvec4) FunctionCall 15(@RealEntrypoint(u1;) 38(param)
|
||||
Store 37(@entryPointOutput) 40
|
||||
34(Index): 7(ptr) Variable Function
|
||||
40(param): 7(ptr) Variable Function
|
||||
37: 6(int) Load 36(Index)
|
||||
Store 34(Index) 37
|
||||
41: 6(int) Load 34(Index)
|
||||
Store 40(param) 41
|
||||
42: 9(fvec4) FunctionCall 15(@RealEntrypoint(u1;) 40(param)
|
||||
Store 39(@entryPointOutput) 42
|
||||
Return
|
||||
FunctionEnd
|
||||
12(FakeEntrypoint(u1;): 9(fvec4) Function None 10
|
||||
11(Index): 7(ptr) FunctionParameter
|
||||
13: Label
|
||||
20: 17 Load 19(Position)
|
||||
21: 6(int) Load 11(Index)
|
||||
23: 22(int) Bitcast 21
|
||||
24: 9(fvec4) ImageRead 20 23
|
||||
ReturnValue 24
|
||||
21: 18 Load 20(Position)
|
||||
22: 6(int) Load 11(Index)
|
||||
24: 23(int) Bitcast 22
|
||||
25: 17 Image 21
|
||||
26: 9(fvec4) ImageFetch 25 24
|
||||
ReturnValue 26
|
||||
FunctionEnd
|
||||
15(@RealEntrypoint(u1;): 9(fvec4) Function None 10
|
||||
14(Index): 7(ptr) FunctionParameter
|
||||
16: Label
|
||||
27(param): 7(ptr) Variable Function
|
||||
28: 6(int) Load 14(Index)
|
||||
Store 27(param) 28
|
||||
29: 9(fvec4) FunctionCall 12(FakeEntrypoint(u1;) 27(param)
|
||||
ReturnValue 29
|
||||
29(param): 7(ptr) Variable Function
|
||||
30: 6(int) Load 14(Index)
|
||||
Store 29(param) 30
|
||||
31: 9(fvec4) FunctionCall 12(FakeEntrypoint(u1;) 29(param)
|
||||
ReturnValue 31
|
||||
FunctionEnd
|
||||
|
|
|
@ -0,0 +1,180 @@
|
|||
hlsl.namespace.frag
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:5 Function Definition: N1::getVec( ( temp 4-component vector of float)
|
||||
0:5 Function Parameters:
|
||||
0:? Sequence
|
||||
0:5 Branch: Return with expression
|
||||
0:5 'v1' ( global 4-component vector of float)
|
||||
0:10 Function Definition: N2::getVec( ( temp 4-component vector of float)
|
||||
0:10 Function Parameters:
|
||||
0:? Sequence
|
||||
0:10 Branch: Return with expression
|
||||
0:10 'v2' ( global 4-component vector of float)
|
||||
0:12 Function Definition: N2::N3::getVec( ( temp 4-component vector of float)
|
||||
0:12 Function Parameters:
|
||||
0:? Sequence
|
||||
0:12 Branch: Return with expression
|
||||
0:12 'v2' ( global 4-component vector of float)
|
||||
0:15 Function Definition: N2::N3::C1::getVec( ( temp 4-component vector of float)
|
||||
0:15 Function Parameters:
|
||||
0:15 '@this' ( temp structure{})
|
||||
0:? Sequence
|
||||
0:15 Branch: Return with expression
|
||||
0:15 'v2' ( global 4-component vector of float)
|
||||
0:21 Function Definition: @main( ( temp 4-component vector of float)
|
||||
0:21 Function Parameters:
|
||||
0:? Sequence
|
||||
0:22 Branch: Return with expression
|
||||
0:22 add ( temp 4-component vector of float)
|
||||
0:22 add ( temp 4-component vector of float)
|
||||
0:22 add ( temp 4-component vector of float)
|
||||
0:22 Function Call: N1::getVec( ( temp 4-component vector of float)
|
||||
0:22 Function Call: N2::getVec( ( temp 4-component vector of float)
|
||||
0:22 Function Call: N2::N3::getVec( ( temp 4-component vector of float)
|
||||
0:22 vector-scale ( temp 4-component vector of float)
|
||||
0:22 Function Call: N2::N3::C1::getVec( ( temp 4-component vector of float)
|
||||
0:22 'N2::gf' ( global float)
|
||||
0:21 Function Definition: main( ( temp void)
|
||||
0:21 Function Parameters:
|
||||
0:? Sequence
|
||||
0:21 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
0:21 Function Call: @main( ( temp 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'v1' ( global 4-component vector of float)
|
||||
0:? 'v2' ( global 4-component vector of float)
|
||||
0:? 'N2::gf' ( global float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:5 Function Definition: N1::getVec( ( temp 4-component vector of float)
|
||||
0:5 Function Parameters:
|
||||
0:? Sequence
|
||||
0:5 Branch: Return with expression
|
||||
0:5 'v1' ( global 4-component vector of float)
|
||||
0:10 Function Definition: N2::getVec( ( temp 4-component vector of float)
|
||||
0:10 Function Parameters:
|
||||
0:? Sequence
|
||||
0:10 Branch: Return with expression
|
||||
0:10 'v2' ( global 4-component vector of float)
|
||||
0:12 Function Definition: N2::N3::getVec( ( temp 4-component vector of float)
|
||||
0:12 Function Parameters:
|
||||
0:? Sequence
|
||||
0:12 Branch: Return with expression
|
||||
0:12 'v2' ( global 4-component vector of float)
|
||||
0:15 Function Definition: N2::N3::C1::getVec( ( temp 4-component vector of float)
|
||||
0:15 Function Parameters:
|
||||
0:15 '@this' ( temp structure{})
|
||||
0:? Sequence
|
||||
0:15 Branch: Return with expression
|
||||
0:15 'v2' ( global 4-component vector of float)
|
||||
0:21 Function Definition: @main( ( temp 4-component vector of float)
|
||||
0:21 Function Parameters:
|
||||
0:? Sequence
|
||||
0:22 Branch: Return with expression
|
||||
0:22 add ( temp 4-component vector of float)
|
||||
0:22 add ( temp 4-component vector of float)
|
||||
0:22 add ( temp 4-component vector of float)
|
||||
0:22 Function Call: N1::getVec( ( temp 4-component vector of float)
|
||||
0:22 Function Call: N2::getVec( ( temp 4-component vector of float)
|
||||
0:22 Function Call: N2::N3::getVec( ( temp 4-component vector of float)
|
||||
0:22 vector-scale ( temp 4-component vector of float)
|
||||
0:22 Function Call: N2::N3::C1::getVec( ( temp 4-component vector of float)
|
||||
0:22 'N2::gf' ( global float)
|
||||
0:21 Function Definition: main( ( temp void)
|
||||
0:21 Function Parameters:
|
||||
0:? Sequence
|
||||
0:21 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
0:21 Function Call: @main( ( temp 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'v1' ( global 4-component vector of float)
|
||||
0:? 'v2' ( global 4-component vector of float)
|
||||
0:? 'N2::gf' ( global float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 54
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 52
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 9 "N1::getVec("
|
||||
Name 11 "N2::getVec("
|
||||
Name 13 "N2::N3::getVec("
|
||||
Name 15 "C1"
|
||||
Name 19 "N2::N3::C1::getVec("
|
||||
Name 18 "@this"
|
||||
Name 21 "@main("
|
||||
Name 24 "v1"
|
||||
Name 28 "v2"
|
||||
Name 45 "N2::gf"
|
||||
Name 52 "@entryPointOutput"
|
||||
Decorate 52(@entryPointOutput) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypeFunction 7(fvec4)
|
||||
15(C1): TypeStruct
|
||||
16: TypePointer Function 15(C1)
|
||||
17: TypeFunction 7(fvec4) 16(ptr)
|
||||
23: TypePointer Private 7(fvec4)
|
||||
24(v1): 23(ptr) Variable Private
|
||||
28(v2): 23(ptr) Variable Private
|
||||
44: TypePointer Private 6(float)
|
||||
45(N2::gf): 44(ptr) Variable Private
|
||||
51: TypePointer Output 7(fvec4)
|
||||
52(@entryPointOutput): 51(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
53: 7(fvec4) FunctionCall 21(@main()
|
||||
Store 52(@entryPointOutput) 53
|
||||
Return
|
||||
FunctionEnd
|
||||
9(N1::getVec(): 7(fvec4) Function None 8
|
||||
10: Label
|
||||
25: 7(fvec4) Load 24(v1)
|
||||
ReturnValue 25
|
||||
FunctionEnd
|
||||
11(N2::getVec(): 7(fvec4) Function None 8
|
||||
12: Label
|
||||
29: 7(fvec4) Load 28(v2)
|
||||
ReturnValue 29
|
||||
FunctionEnd
|
||||
13(N2::N3::getVec(): 7(fvec4) Function None 8
|
||||
14: Label
|
||||
32: 7(fvec4) Load 28(v2)
|
||||
ReturnValue 32
|
||||
FunctionEnd
|
||||
19(N2::N3::C1::getVec(): 7(fvec4) Function None 17
|
||||
18(@this): 16(ptr) FunctionParameter
|
||||
20: Label
|
||||
35: 7(fvec4) Load 28(v2)
|
||||
ReturnValue 35
|
||||
FunctionEnd
|
||||
21(@main(): 7(fvec4) Function None 8
|
||||
22: Label
|
||||
38: 7(fvec4) FunctionCall 9(N1::getVec()
|
||||
39: 7(fvec4) FunctionCall 11(N2::getVec()
|
||||
40: 7(fvec4) FAdd 38 39
|
||||
41: 7(fvec4) FunctionCall 13(N2::N3::getVec()
|
||||
42: 7(fvec4) FAdd 40 41
|
||||
43: 7(fvec4) FunctionCall 19(N2::N3::C1::getVec()
|
||||
46: 6(float) Load 45(N2::gf)
|
||||
47: 7(fvec4) VectorTimesScalar 43 46
|
||||
48: 7(fvec4) FAdd 42 47
|
||||
ReturnValue 48
|
||||
FunctionEnd
|
|
@ -0,0 +1,111 @@
|
|||
hlsl.scalar-length.frag
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:2 Function Definition: @main( ( temp 4-component vector of float)
|
||||
0:2 Function Parameters:
|
||||
0:? Sequence
|
||||
0:3 Sequence
|
||||
0:3 move second child to first child ( temp 4-component vector of float)
|
||||
0:3 'test' ( temp 4-component vector of float)
|
||||
0:3 Constant:
|
||||
0:3 0.000000
|
||||
0:3 1.000000
|
||||
0:3 2.000000
|
||||
0:3 3.000000
|
||||
0:5 Branch: Return with expression
|
||||
0:5 Construct vec4 ( temp 4-component vector of float)
|
||||
0:5 length ( temp float)
|
||||
0:5 direct index ( temp float)
|
||||
0:5 'test' ( temp 4-component vector of float)
|
||||
0:5 Constant:
|
||||
0:5 3 (const int)
|
||||
0:2 Function Definition: main( ( temp void)
|
||||
0:2 Function Parameters:
|
||||
0:? Sequence
|
||||
0:2 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
0:2 Function Call: @main( ( temp 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:2 Function Definition: @main( ( temp 4-component vector of float)
|
||||
0:2 Function Parameters:
|
||||
0:? Sequence
|
||||
0:3 Sequence
|
||||
0:3 move second child to first child ( temp 4-component vector of float)
|
||||
0:3 'test' ( temp 4-component vector of float)
|
||||
0:3 Constant:
|
||||
0:3 0.000000
|
||||
0:3 1.000000
|
||||
0:3 2.000000
|
||||
0:3 3.000000
|
||||
0:5 Branch: Return with expression
|
||||
0:5 Construct vec4 ( temp 4-component vector of float)
|
||||
0:5 length ( temp float)
|
||||
0:5 direct index ( temp float)
|
||||
0:5 'test' ( temp 4-component vector of float)
|
||||
0:5 Constant:
|
||||
0:5 3 (const int)
|
||||
0:2 Function Definition: main( ( temp void)
|
||||
0:2 Function Parameters:
|
||||
0:? Sequence
|
||||
0:2 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
0:2 Function Call: @main( ( temp 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 30
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 28
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 9 "@main("
|
||||
Name 12 "test"
|
||||
Name 28 "@entryPointOutput"
|
||||
Decorate 28(@entryPointOutput) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypeFunction 7(fvec4)
|
||||
11: TypePointer Function 7(fvec4)
|
||||
13: 6(float) Constant 0
|
||||
14: 6(float) Constant 1065353216
|
||||
15: 6(float) Constant 1073741824
|
||||
16: 6(float) Constant 1077936128
|
||||
17: 7(fvec4) ConstantComposite 13 14 15 16
|
||||
18: TypeInt 32 0
|
||||
19: 18(int) Constant 3
|
||||
20: TypePointer Function 6(float)
|
||||
27: TypePointer Output 7(fvec4)
|
||||
28(@entryPointOutput): 27(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
29: 7(fvec4) FunctionCall 9(@main()
|
||||
Store 28(@entryPointOutput) 29
|
||||
Return
|
||||
FunctionEnd
|
||||
9(@main(): 7(fvec4) Function None 8
|
||||
10: Label
|
||||
12(test): 11(ptr) Variable Function
|
||||
Store 12(test) 17
|
||||
21: 20(ptr) AccessChain 12(test) 19
|
||||
22: 6(float) Load 21
|
||||
23: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 22
|
||||
24: 7(fvec4) CompositeConstruct 23 23 23 23
|
||||
ReturnValue 24
|
||||
FunctionEnd
|
|
@ -3,7 +3,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 44
|
||||
// Id's are bound by 46
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
|
@ -56,7 +56,8 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||
38: 18(fvec4) ConstantComposite 37 37 37 37
|
||||
39: 17(float) Constant 1065353216
|
||||
40: 18(fvec4) ConstantComposite 39 39 39 39
|
||||
42: TypePointer Output 18(fvec4)
|
||||
41: TypeVector 6(bool) 4
|
||||
44: TypePointer Output 18(fvec4)
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
30(param): 7(ptr) Variable Function
|
||||
|
@ -65,9 +66,10 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||
35: 6(bool) INotEqual 33 34
|
||||
Store 30(param) 35
|
||||
36: 6(bool) FunctionCall 10(foo(b1;) 30(param)
|
||||
41: 18(fvec4) Select 36 38 40
|
||||
43: 42(ptr) AccessChain 24 26
|
||||
Store 43 41
|
||||
42: 41(bvec4) CompositeConstruct 36 36 36 36
|
||||
43: 18(fvec4) Select 42 38 40
|
||||
45: 44(ptr) AccessChain 24 26
|
||||
Store 45 43
|
||||
Return
|
||||
FunctionEnd
|
||||
10(foo(b1;): 6(bool) Function None 8
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
spv.deepRvalue.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 150
|
||||
// Id's are bound by 152
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 144
|
||||
EntryPoint Fragment 4 "main" 146
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 330
|
||||
Name 4 "main"
|
||||
|
@ -21,12 +21,12 @@ spv.deepRvalue.frag
|
|||
Name 106 "h"
|
||||
Name 107 "i"
|
||||
Name 111 "samp2D"
|
||||
Name 129 "str"
|
||||
MemberName 129(str) 0 "a"
|
||||
MemberName 129(str) 1 "b"
|
||||
MemberName 129(str) 2 "c"
|
||||
Name 131 "t"
|
||||
Name 144 "gl_FragColor"
|
||||
Name 131 "str"
|
||||
MemberName 131(str) 0 "a"
|
||||
MemberName 131(str) 1 "b"
|
||||
MemberName 131(str) 2 "c"
|
||||
Name 133 "t"
|
||||
Name 146 "gl_FragColor"
|
||||
Decorate 111(samp2D) DescriptorSet 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
|
@ -77,19 +77,20 @@ spv.deepRvalue.frag
|
|||
115: 113(fvec2) ConstantComposite 114 114
|
||||
119: 6(float) Constant 1036831949
|
||||
120: TypeBool
|
||||
128: TypeArray 113(fvec2) 84
|
||||
129(str): TypeStruct 81(int) 128 120(bool)
|
||||
130: TypePointer Function 129(str)
|
||||
132: 113(fvec2) ConstantComposite 10 11
|
||||
133: 6(float) Constant 1082130432
|
||||
134: 113(fvec2) ConstantComposite 133 12
|
||||
135: 6(float) Constant 1086324736
|
||||
136: 113(fvec2) ConstantComposite 135 13
|
||||
137: 128 ConstantComposite 132 134 136
|
||||
138: 120(bool) ConstantTrue
|
||||
139: 129(str) ConstantComposite 82 137 138
|
||||
143: TypePointer Output 7(fvec4)
|
||||
144(gl_FragColor): 143(ptr) Variable Output
|
||||
124: TypeVector 120(bool) 4
|
||||
130: TypeArray 113(fvec2) 84
|
||||
131(str): TypeStruct 81(int) 130 120(bool)
|
||||
132: TypePointer Function 131(str)
|
||||
134: 113(fvec2) ConstantComposite 10 11
|
||||
135: 6(float) Constant 1082130432
|
||||
136: 113(fvec2) ConstantComposite 135 12
|
||||
137: 6(float) Constant 1086324736
|
||||
138: 113(fvec2) ConstantComposite 137 13
|
||||
139: 130 ConstantComposite 134 136 138
|
||||
140: 120(bool) ConstantTrue
|
||||
141: 131(str) ConstantComposite 82 139 140
|
||||
145: TypePointer Output 7(fvec4)
|
||||
146(gl_FragColor): 145(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
35(m): 34(ptr) Variable Function
|
||||
|
@ -98,7 +99,7 @@ spv.deepRvalue.frag
|
|||
87(g): 79(ptr) Variable Function
|
||||
106(h): 79(ptr) Variable Function
|
||||
107(i): 79(ptr) Variable Function
|
||||
131(t): 130(ptr) Variable Function
|
||||
133(t): 132(ptr) Variable Function
|
||||
Store 9(v1) 14
|
||||
Store 15(v2) 20
|
||||
Store 21(v3) 26
|
||||
|
@ -174,21 +175,22 @@ spv.deepRvalue.frag
|
|||
121: 120(bool) FOrdGreaterThan 118 119
|
||||
122: 7(fvec4) Load 9(v1)
|
||||
123: 7(fvec4) Load 15(v2)
|
||||
124: 7(fvec4) Select 121 122 123
|
||||
125: 6(float) CompositeExtract 124 3
|
||||
126: 6(float) Load 107(i)
|
||||
127: 6(float) FAdd 126 125
|
||||
Store 107(i) 127
|
||||
Store 131(t) 139
|
||||
140: 6(float) CompositeExtract 139 1 2 1
|
||||
141: 6(float) Load 107(i)
|
||||
142: 6(float) FAdd 141 140
|
||||
Store 107(i) 142
|
||||
145: 6(float) Load 80(f)
|
||||
146: 6(float) Load 87(g)
|
||||
147: 6(float) Load 106(h)
|
||||
148: 6(float) Load 107(i)
|
||||
149: 7(fvec4) CompositeConstruct 145 146 147 148
|
||||
Store 144(gl_FragColor) 149
|
||||
125: 124(bvec4) CompositeConstruct 121 121 121 121
|
||||
126: 7(fvec4) Select 125 122 123
|
||||
127: 6(float) CompositeExtract 126 3
|
||||
128: 6(float) Load 107(i)
|
||||
129: 6(float) FAdd 128 127
|
||||
Store 107(i) 129
|
||||
Store 133(t) 141
|
||||
142: 6(float) CompositeExtract 141 1 2 1
|
||||
143: 6(float) Load 107(i)
|
||||
144: 6(float) FAdd 143 142
|
||||
Store 107(i) 144
|
||||
147: 6(float) Load 80(f)
|
||||
148: 6(float) Load 87(g)
|
||||
149: 6(float) Load 106(h)
|
||||
150: 6(float) Load 107(i)
|
||||
151: 7(fvec4) CompositeConstruct 147 148 149 150
|
||||
Store 146(gl_FragColor) 151
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
|
@ -3,7 +3,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 374
|
||||
// Id's are bound by 376
|
||||
|
||||
Capability Shader
|
||||
Capability SampledRect
|
||||
|
@ -16,7 +16,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||
Capability StorageImageWriteWithoutFormat
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 132 142 152 248 362 373
|
||||
EntryPoint Fragment 4 "main" 132 142 152 248 362 375
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
|
@ -42,7 +42,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||
Name 248 "value"
|
||||
Name 357 "wo2D"
|
||||
Name 362 "fragData"
|
||||
Name 373 "ic4D"
|
||||
Name 375 "ic4D"
|
||||
Decorate 15(i1D) DescriptorSet 0
|
||||
Decorate 15(i1D) Binding 0
|
||||
Decorate 27(i2D) DescriptorSet 0
|
||||
|
@ -76,7 +76,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||
Decorate 357(wo2D) DescriptorSet 0
|
||||
Decorate 357(wo2D) Binding 1
|
||||
Decorate 357(wo2D) NonReadable
|
||||
Decorate 373(ic4D) Flat
|
||||
Decorate 375(ic4D) Flat
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
|
@ -164,9 +164,10 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||
361: TypePointer Output 125(fvec4)
|
||||
362(fragData): 361(ptr) Variable Output
|
||||
367: TypeBool
|
||||
371: TypeVector 6(int) 4
|
||||
372: TypePointer Input 371(ivec4)
|
||||
373(ic4D): 372(ptr) Variable Input
|
||||
370: TypeVector 367(bool) 4
|
||||
373: TypeVector 6(int) 4
|
||||
374: TypePointer Input 373(ivec4)
|
||||
375(ic4D): 374(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(iv): 8(ptr) Variable Function
|
||||
|
@ -503,7 +504,8 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||
366: 18(int) Bitcast 365
|
||||
368: 367(bool) INotEqual 363 366
|
||||
369: 125(fvec4) Load 127(v)
|
||||
370: 125(fvec4) Select 368 369 129
|
||||
Store 362(fragData) 370
|
||||
371: 370(bvec4) CompositeConstruct 368 368 368 368
|
||||
372: 125(fvec4) Select 371 369 129
|
||||
Store 362(fragData) 372
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
|
@ -3,7 +3,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 160
|
||||
// Id's are bound by 162
|
||||
|
||||
Capability Shader
|
||||
Capability Float64
|
||||
|
@ -168,7 +168,9 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
|||
156: 154(fvec2) ConstantComposite 155 155
|
||||
157: 39(float) Constant 1073741824
|
||||
158: 154(fvec2) ConstantComposite 157 157
|
||||
159: 154(fvec2) SpecConstantOp 169 153 156 158
|
||||
159: TypeVector 22(bool) 2
|
||||
160: 159(bvec2) SpecConstantComposite 153 153
|
||||
161: 154(fvec2) SpecConstantOp 169 160 156 158
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
Return
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
|
||||
float GetEntitySelectClip()
|
||||
{
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
float4 main() : SV_TARGET
|
||||
{
|
||||
clip(GetEntitySelectClip());
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
|
||||
struct ds_in_t
|
||||
{
|
||||
float4 pos : POSITION;
|
||||
float3 norm : TEXCOORD0;
|
||||
};
|
||||
|
||||
struct pcf_in_t
|
||||
{
|
||||
float flTessFactor [3] : SV_TessFactor;
|
||||
float flInsideTessFactor : SV_InsideTessFactor;
|
||||
};
|
||||
|
||||
struct gs_in_t
|
||||
{
|
||||
float4 pos : POSITION;
|
||||
float3 norm : TEXCOORD0;
|
||||
};
|
||||
|
||||
[domain ( "tri" )]
|
||||
gs_in_t main (const OutputPatch <ds_in_t, 3> i, float3 tesscoord : SV_DomainLocation, pcf_in_t pcf_data )
|
||||
{
|
||||
gs_in_t o;
|
||||
|
||||
o.pos = i[0].pos + tesscoord.x;
|
||||
o.norm = i[0].norm + tesscoord.y;
|
||||
|
||||
tesscoord.z;
|
||||
|
||||
return o;
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
// ***
|
||||
// per-control-point invocation of PCF from entry point return value
|
||||
// ***
|
||||
|
||||
struct hs_in_t
|
||||
{
|
||||
float3 val : TEXCOORD0;
|
||||
};
|
||||
|
||||
struct hs_pcf_t
|
||||
{
|
||||
float tfactor[3] : SV_TessFactor; // must turn into a size 4 array in SPIR-V
|
||||
float flInFactor : SV_InsideTessFactor; // must turn into a size 2 array in SPIR-V
|
||||
};
|
||||
|
||||
struct hs_out_t
|
||||
{
|
||||
float3 val : TEXCOORD0;
|
||||
};
|
||||
|
||||
[ domain ("tri") ]
|
||||
[ partitioning ("fractional_odd") ]
|
||||
[ outputtopology ("triangle_cw") ]
|
||||
[ outputcontrolpoints (3) ]
|
||||
[ patchconstantfunc ( "PCF" ) ]
|
||||
hs_out_t main (InputPatch <hs_in_t, 3> i , uint cpid : SV_OutputControlPointID)
|
||||
{
|
||||
hs_out_t o;
|
||||
o.val = cpid;
|
||||
return o;
|
||||
}
|
||||
|
||||
hs_pcf_t PCF( const OutputPatch <hs_out_t, 3> pcf_out)
|
||||
{
|
||||
hs_pcf_t o;
|
||||
|
||||
o.tfactor[0] = pcf_out[0].val.x;
|
||||
o.tfactor[1] = pcf_out[1].val.x;
|
||||
o.tfactor[2] = pcf_out[2].val.x;
|
||||
o.flInFactor = 4;
|
||||
|
||||
return o;
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
float condf;
|
||||
int condi;
|
||||
float1 condf1;
|
||||
int1 condi1;
|
||||
|
||||
float4 main() : SV_Target0
|
||||
{
|
||||
float4 a = float4(2.0, 2.0, 2.0, 2.0);
|
||||
if (condi)
|
||||
return a + 1.0;
|
||||
if (condf)
|
||||
return a + 2.0;
|
||||
if (condf1)
|
||||
return a + 3.0;
|
||||
if (condi1)
|
||||
return a + 4.0;
|
||||
if (condi && condf || condf1)
|
||||
return a + 5.0;
|
||||
|
||||
float f = condf;
|
||||
while (f) { --f; }
|
||||
|
||||
int i = condi;
|
||||
do { --i; } while (i);
|
||||
|
||||
for (; i; ) { --i; }
|
||||
|
||||
float g = condf ? 7.0 : 8.0;
|
||||
a += g;
|
||||
|
||||
return a - 1.0;
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
|
||||
float PixelShaderFunctionS(float inF0, float inF1)
|
||||
{
|
||||
float r000 = frexp(inF0, inF1);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float2 PixelShaderFunction2(float2 inF0, float2 inF1)
|
||||
{
|
||||
float2 r000 = frexp(inF0, inF1);
|
||||
return float2(1,2);
|
||||
}
|
||||
|
||||
float3 PixelShaderFunction3(float3 inF0, float3 inF1)
|
||||
{
|
||||
float3 r000 = frexp(inF0, inF1);
|
||||
return float3(1,2,3);
|
||||
}
|
||||
|
||||
float4 PixelShaderFunction(float4 inF0, float4 inF1)
|
||||
{
|
||||
float4 r000 = frexp(inF0, inF1);
|
||||
return float4(1,2,3,4);
|
||||
}
|
||||
|
||||
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
|
||||
#define MATFNS(MT) \
|
||||
MT r000 = frexp(inF0, inF1);
|
||||
|
||||
struct PS_OUTPUT { float4 color : SV_Target0; };
|
||||
|
||||
PS_OUTPUT main()
|
||||
{
|
||||
PS_OUTPUT ps_output;
|
||||
ps_output.color = 1.0;
|
||||
return ps_output;
|
||||
};
|
|
@ -0,0 +1,28 @@
|
|||
float VertexShaderFunctionS(float inF0, float inF1)
|
||||
{
|
||||
frexp(inF0, inF1);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float2 VertexShaderFunction2(float2 inF0, float2 inF1)
|
||||
{
|
||||
frexp(inF0, inF1);
|
||||
return float2(1,2);
|
||||
}
|
||||
|
||||
float3 VertexShaderFunction3(float3 inF0, float3 inF1)
|
||||
{
|
||||
frexp(inF0, inF1);
|
||||
return float3(1,2,3);
|
||||
}
|
||||
|
||||
float4 VertexShaderFunction4(float4 inF0, float4 inF1)
|
||||
{
|
||||
frexp(inF0, inF1);
|
||||
return float4(1,2,3,4);
|
||||
}
|
||||
|
||||
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
|
||||
#define MATFNS() \
|
||||
frexp(inF0, inF1);
|
||||
|
|
@ -52,7 +52,6 @@ float PixelShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint i
|
|||
// TODO: fma(inD0, inD1, inD2);
|
||||
float r033 = fmod(inF0, inF1);
|
||||
float r034 = frac(inF0);
|
||||
float r035 = frexp(inF0, inF1);
|
||||
float r036 = fwidth(inF0);
|
||||
bool r037 = isinf(inF0);
|
||||
bool r038 = isnan(inF0);
|
||||
|
@ -136,7 +135,6 @@ float2 PixelShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, u
|
|||
// TODO: fma(inD0, inD1, inD2);
|
||||
float2 r035 = fmod(inF0, inF1);
|
||||
float2 r036 = frac(inF0);
|
||||
float2 r037 = frexp(inF0, inF1);
|
||||
float2 r038 = fwidth(inF0);
|
||||
bool2 r039 = isinf(inF0);
|
||||
bool2 r040 = isnan(inF0);
|
||||
|
@ -217,7 +215,6 @@ float3 PixelShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, u
|
|||
// TODO: fma(inD0, inD1, inD2);
|
||||
float3 r036 = fmod(inF0, inF1);
|
||||
float3 r037 = frac(inF0);
|
||||
float3 r038 = frexp(inF0, inF1);
|
||||
float3 r039 = fwidth(inF0);
|
||||
bool3 r040 = isinf(inF0);
|
||||
bool3 r041 = isnan(inF0);
|
||||
|
@ -299,7 +296,6 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, ui
|
|||
// TODO: fma(inD0, inD1, inD2);
|
||||
float4 r036 = fmod(inF0, inF1);
|
||||
float4 r037 = frac(inF0);
|
||||
float4 r038 = frexp(inF0, inF1);
|
||||
float4 r039 = fwidth(inF0);
|
||||
bool4 r040 = isinf(inF0);
|
||||
bool4 r041 = isnan(inF0);
|
||||
|
@ -369,7 +365,6 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, ui
|
|||
MT r021 = floor(inF0); \
|
||||
MT r022 = fmod(inF0, inF1); \
|
||||
MT r023 = frac(inF0); \
|
||||
MT r024 = frexp(inF0, inF1); \
|
||||
MT r025 = fwidth(inF0); \
|
||||
MT r026 = ldexp(inF0, inF1); \
|
||||
MT r026a = lerp(inF0, inF1, inF2); \
|
||||
|
|
|
@ -28,7 +28,6 @@ float VertexShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint
|
|||
// TODO: fma(inD0, inD1, inD2);
|
||||
fmod(inF0, inF1);
|
||||
frac(inF0);
|
||||
frexp(inF0, inF1);
|
||||
isinf(inF0);
|
||||
isnan(inF0);
|
||||
ldexp(inF0, inF1);
|
||||
|
@ -99,7 +98,6 @@ float2 VertexShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0,
|
|||
// TODO: fma(inD0, inD1, inD2);
|
||||
fmod(inF0, inF1);
|
||||
frac(inF0);
|
||||
frexp(inF0, inF1);
|
||||
isinf(inF0);
|
||||
isnan(inF0);
|
||||
ldexp(inF0, inF1);
|
||||
|
@ -170,7 +168,6 @@ float3 VertexShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0,
|
|||
// TODO: fma(inD0, inD1, inD2);
|
||||
fmod(inF0, inF1);
|
||||
frac(inF0);
|
||||
frexp(inF0, inF1);
|
||||
isinf(inF0);
|
||||
isnan(inF0);
|
||||
ldexp(inF0, inF1);
|
||||
|
@ -241,7 +238,6 @@ float4 VertexShaderFunction4(float4 inF0, float4 inF1, float4 inF2, uint4 inU0,
|
|||
// TODO: fma(inD0, inD1, inD2);
|
||||
fmod(inF0, inF1);
|
||||
frac(inF0);
|
||||
frexp(inF0, inF1);
|
||||
isinf(inF0);
|
||||
isnan(inF0);
|
||||
ldexp(inF0, inF1);
|
||||
|
@ -305,7 +301,6 @@ float4 VertexShaderFunction4(float4 inF0, float4 inF1, float4 inF2, uint4 inU0,
|
|||
floor(inF0); \
|
||||
fmod(inF0, inF1); \
|
||||
frac(inF0); \
|
||||
frexp(inF0, inF1); \
|
||||
ldexp(inF0, inF1); \
|
||||
lerp(inF0, inF1, inF2); \
|
||||
log(inF0); \
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
float4 main() : SV_TARGET
|
||||
{
|
||||
if (!(0) && (0) || (!1))
|
||||
return 0.0.xxxx;
|
||||
if (0)
|
||||
return 0.0.xxxx;
|
||||
if (!(bool)0)
|
||||
return 0.0.xxxx;
|
||||
if (!0)
|
||||
return 0.0.xxxx;
|
||||
if (!(bool)1)
|
||||
return 0.0.xxxx;
|
||||
if (!1)
|
||||
return 0.0.xxxx;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
static float4 v1;
|
||||
static float4 v2;
|
||||
|
||||
namespace N1 {
|
||||
float4 getVec() { return v1; }
|
||||
}
|
||||
|
||||
namespace N2 {
|
||||
static float gf;
|
||||
float4 getVec() { return v2; }
|
||||
namespace N3 {
|
||||
float4 getVec() { return v2; }
|
||||
|
||||
class C1 {
|
||||
float4 getVec() { return v2; }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
float4 main() : SV_Target0
|
||||
{
|
||||
return N1::getVec() + N2::getVec() + N2::N3::getVec() + N2::N3::C1::getVec() * N2::gf;
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
float4 main() : SV_Target0
|
||||
{
|
||||
float4 test = { 0, 1, 2, 3 };
|
||||
|
||||
return length(test.a);
|
||||
}
|
|
@ -2,5 +2,5 @@
|
|||
// 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).
|
||||
|
||||
#define GLSLANG_REVISION "Overload400-PrecQual.1937"
|
||||
#define GLSLANG_DATE "24-Mar-2017"
|
||||
#define GLSLANG_REVISION "Overload400-PrecQual.1958"
|
||||
#define GLSLANG_DATE "31-Mar-2017"
|
||||
|
|
|
@ -356,12 +356,12 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo
|
|||
node->updatePrecision();
|
||||
|
||||
// If it's a (non-specialization) constant, it must be folded.
|
||||
if (child->getAsConstantUnion())
|
||||
return child->getAsConstantUnion()->fold(op, node->getType());
|
||||
if (node->getOperand()->getAsConstantUnion())
|
||||
return node->getOperand()->getAsConstantUnion()->fold(op, node->getType());
|
||||
|
||||
// If it's a specialization constant, the result is too,
|
||||
// if the operation is allowed for specialization constants.
|
||||
if (child->getType().getQualifier().isSpecConstant() && isSpecializationOperation(*node))
|
||||
if (node->getOperand()->getType().getQualifier().isSpecConstant() && isSpecializationOperation(*node))
|
||||
node->getWritableType().getQualifier().makeSpecConstant();
|
||||
|
||||
return node;
|
||||
|
|
|
@ -531,7 +531,7 @@ void TParseContextBase::parseSwizzleSelector(const TSourceLoc& loc, const TStrin
|
|||
// Make the passed-in variable information become a member of the
|
||||
// global uniform block. If this doesn't exist yet, make it.
|
||||
//
|
||||
void TParseContextBase::growGlobalUniformBlock(TSourceLoc& loc, TType& memberType, TString& memberName, TTypeList* typeList)
|
||||
void TParseContextBase::growGlobalUniformBlock(const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* typeList)
|
||||
{
|
||||
// Make the global block, if not yet made.
|
||||
if (globalUniformBlock == nullptr) {
|
||||
|
|
|
@ -2990,7 +2990,7 @@ void TParseContext::arrayDimMerge(TType& type, const TArraySizes* sizes)
|
|||
// Do all the semantic checking for declaring or redeclaring an array, with and
|
||||
// without a size, and make the right changes to the symbol table.
|
||||
//
|
||||
void TParseContext::declareArray(const TSourceLoc& loc, TString& identifier, const TType& type, TSymbol*& symbol)
|
||||
void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifier, const TType& type, TSymbol*& symbol)
|
||||
{
|
||||
if (symbol == nullptr) {
|
||||
bool currentScope;
|
||||
|
@ -5053,7 +5053,7 @@ TVariable* TParseContext::makeInternalVariable(const char* name, const TType& ty
|
|||
//
|
||||
// Return the successfully declared variable.
|
||||
//
|
||||
TVariable* TParseContext::declareNonArray(const TSourceLoc& loc, TString& identifier, TType& type)
|
||||
TVariable* TParseContext::declareNonArray(const TSourceLoc& loc, const TString& identifier, const TType& type)
|
||||
{
|
||||
// make a new variable
|
||||
TVariable* variable = new TVariable(&identifier, type);
|
||||
|
@ -5770,7 +5770,7 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q
|
|||
}
|
||||
|
||||
// Do all block-declaration checking regarding its qualifiers.
|
||||
void TParseContext::blockQualifierCheck(const TSourceLoc& loc, const TQualifier& qualifier, bool instanceName)
|
||||
void TParseContext::blockQualifierCheck(const TSourceLoc& loc, const TQualifier& qualifier, bool /*instanceName*/)
|
||||
{
|
||||
// The 4.5 specification says:
|
||||
//
|
||||
|
|
|
@ -136,7 +136,7 @@ public:
|
|||
TSymbolTable& symbolTable; // symbol table that goes with the current language, version, and profile
|
||||
|
||||
// Manage the global uniform block (default uniforms in GLSL, $Global in HLSL)
|
||||
virtual void growGlobalUniformBlock(TSourceLoc&, TType&, TString& memberName, TTypeList* typeList = nullptr);
|
||||
virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr);
|
||||
|
||||
virtual bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*);
|
||||
virtual void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*);
|
||||
|
@ -174,7 +174,7 @@ protected:
|
|||
int firstNewMember; // the index of the first member not yet inserted into the symbol table
|
||||
// override this to set the language-specific name
|
||||
virtual const char* getGlobalUniformBlockName() const { return ""; }
|
||||
virtual void setUniformBlockDefaults(TType& block) const { }
|
||||
virtual void setUniformBlockDefaults(TType&) const { }
|
||||
virtual void finalizeGlobalUniformBlockLayout(TVariable&) { }
|
||||
virtual void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken,
|
||||
const char* szExtraInfoFormat, TPrefixType prefix,
|
||||
|
@ -371,8 +371,8 @@ protected:
|
|||
void nonInitConstCheck(const TSourceLoc&, TString& identifier, TType& type);
|
||||
void inheritGlobalDefaults(TQualifier& dst) const;
|
||||
TVariable* makeInternalVariable(const char* name, const TType&) const;
|
||||
TVariable* declareNonArray(const TSourceLoc&, TString& identifier, TType&);
|
||||
void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&);
|
||||
TVariable* declareNonArray(const TSourceLoc&, const TString& identifier, const TType&);
|
||||
void declareArray(const TSourceLoc&, const TString& identifier, const TType&, TSymbol*&);
|
||||
TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable);
|
||||
TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer);
|
||||
void finish() override;
|
||||
|
|
|
@ -884,6 +884,13 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree)
|
|||
|
||||
case EShLangTessControl:
|
||||
infoSink.debug << "vertices = " << vertices << "\n";
|
||||
|
||||
if (inputPrimitive != ElgNone)
|
||||
infoSink.debug << "input primitive = " << TQualifier::getGeometryString(inputPrimitive) << "\n";
|
||||
if (vertexSpacing != EvsNone)
|
||||
infoSink.debug << "vertex spacing = " << TQualifier::getVertexSpacingString(vertexSpacing) << "\n";
|
||||
if (vertexOrder != EvoNone)
|
||||
infoSink.debug << "triangle order = " << TQualifier::getVertexOrderString(vertexOrder) << "\n";
|
||||
break;
|
||||
|
||||
case EShLangTessEvaluation:
|
||||
|
|
|
@ -445,19 +445,19 @@ struct TDefaultIoResolver : public glslang::TIoMapResolver
|
|||
return 0;
|
||||
}
|
||||
|
||||
bool validateInOut(EShLanguage stage, const char* name, const TType& type, bool is_live) override
|
||||
bool validateInOut(EShLanguage /*stage*/, const char* /*name*/, const TType& /*type*/, bool /*is_live*/) override
|
||||
{
|
||||
return true;
|
||||
}
|
||||
int resolveInOutLocation(EShLanguage stage, const char* name, const TType& type, bool is_live) override
|
||||
int resolveInOutLocation(EShLanguage /*stage*/, const char* /*name*/, const TType& /*type*/, bool /*is_live*/) override
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
int resolveInOutComponent(EShLanguage stage, const char* name, const TType& type, bool is_live) override
|
||||
int resolveInOutComponent(EShLanguage /*stage*/, const char* /*name*/, const TType& /*type*/, bool /*is_live*/) override
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
int resolveInOutIndex(EShLanguage stage, const char* name, const TType& type, bool is_live) override
|
||||
int resolveInOutIndex(EShLanguage /*stage*/, const char* /*name*/, const TType& /*type*/, bool /*is_live*/) override
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -461,10 +461,12 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled)
|
|||
case EShLangTessEvaluation:
|
||||
if (inputPrimitive == ElgNone)
|
||||
error(infoSink, "At least one shader must specify an input layout primitive");
|
||||
if (vertexSpacing == EvsNone)
|
||||
vertexSpacing = EvsEqual;
|
||||
if (vertexOrder == EvoNone)
|
||||
vertexOrder = EvoCcw;
|
||||
if (source == EShSourceGlsl) {
|
||||
if (vertexSpacing == EvsNone)
|
||||
vertexSpacing = EvsEqual;
|
||||
if (vertexOrder == EvoNone)
|
||||
vertexOrder = EvoCcw;
|
||||
}
|
||||
break;
|
||||
case EShLangGeometry:
|
||||
if (inputPrimitive == ElgNone)
|
||||
|
|
|
@ -93,6 +93,7 @@ INSTANTIATE_TEST_CASE_P(
|
|||
{"hlsl.calculatelod.dx10.frag", "main"},
|
||||
{"hlsl.calculatelodunclamped.dx10.frag", "main"},
|
||||
{"hlsl.cast.frag", "PixelShaderFunction"},
|
||||
{"hlsl.clip.frag", "main"},
|
||||
{"hlsl.comparison.vec.frag", "main"},
|
||||
{"hlsl.conditional.frag", "PixelShaderFunction"},
|
||||
{"hlsl.constructexpr.frag", "main"},
|
||||
|
@ -122,11 +123,14 @@ INSTANTIATE_TEST_CASE_P(
|
|||
{"hlsl.getdimensions.rw.dx10.frag", "main"},
|
||||
{"hlsl.getdimensions.dx10.vert", "main"},
|
||||
{"hlsl.getsampleposition.dx10.frag", "main"},
|
||||
{"hlsl.domain.1.tese", "main"},
|
||||
{"hlsl.hull.1.tesc", "main"},
|
||||
{"hlsl.hull.2.tesc", "main"},
|
||||
{"hlsl.hull.void.tesc", "main"},
|
||||
{"hlsl.hull.ctrlpt-1.tesc", "main"},
|
||||
{"hlsl.identifier.sample.frag", "main"},
|
||||
{"hlsl.if.frag", "PixelShaderFunction"},
|
||||
{"hlsl.implicitBool.frag", "main"},
|
||||
{"hlsl.inoutquals.frag", "main"},
|
||||
{"hlsl.init.frag", "ShaderFunction"},
|
||||
{"hlsl.init2.frag", "main"},
|
||||
|
@ -138,6 +142,7 @@ INSTANTIATE_TEST_CASE_P(
|
|||
{"hlsl.intrinsics.f1632.frag", "main"},
|
||||
{"hlsl.intrinsics.f3216.frag", "main"},
|
||||
{"hlsl.intrinsics.frag", "main"},
|
||||
{"hlsl.intrinsic.frexp.frag", "main"},
|
||||
{"hlsl.intrinsics.lit.frag", "PixelShaderFunction"},
|
||||
{"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"},
|
||||
{"hlsl.intrinsics.negative.frag", "PixelShaderFunction"},
|
||||
|
@ -157,9 +162,11 @@ INSTANTIATE_TEST_CASE_P(
|
|||
{"hlsl.load.rwtexture.array.dx10.frag", "main"},
|
||||
{"hlsl.load.offset.dx10.frag", "main"},
|
||||
{"hlsl.load.offsetarray.dx10.frag", "main"},
|
||||
{"hlsl.logical.unary.frag", "main"},
|
||||
{"hlsl.logical.binary.frag", "main"},
|
||||
{"hlsl.logical.binary.vec.frag", "main"},
|
||||
{"hlsl.logicalConvert.frag", "main"},
|
||||
{"hlsl.logical.unary.frag", "main"},
|
||||
{"hlsl.namespace.frag", "main"},
|
||||
{"hlsl.matNx1.frag", "main"},
|
||||
{"hlsl.matrixSwizzle.vert", "ShaderFunction"},
|
||||
{"hlsl.mintypes.frag", "main"},
|
||||
|
@ -212,6 +219,7 @@ INSTANTIATE_TEST_CASE_P(
|
|||
{"hlsl.samplelevel.offset.dx10.frag", "main"},
|
||||
{"hlsl.samplelevel.offsetarray.dx10.frag", "main"},
|
||||
{"hlsl.sample.sub-vec4.dx10.frag", "main"},
|
||||
{"hlsl.scalar-length.frag", "main"},
|
||||
{"hlsl.semicolons.frag", "main"},
|
||||
{"hlsl.shapeConv.frag", "main"},
|
||||
{"hlsl.shapeConvRet.frag", "main"},
|
||||
|
@ -239,6 +247,7 @@ INSTANTIATE_TEST_CASE_P(
|
|||
{"hlsl.structStructName.frag", "main"},
|
||||
{"hlsl.this.frag", "main"},
|
||||
{"hlsl.intrinsics.vert", "VertexShaderFunction"},
|
||||
{"hlsl.intrinsic.frexp.vert", "VertexShaderFunction"},
|
||||
{"hlsl.matType.frag", "PixelShaderFunction"},
|
||||
{"hlsl.matType.bool.frag", "main"},
|
||||
{"hlsl.matType.int.frag", "main"},
|
||||
|
|
|
@ -134,22 +134,17 @@ bool HlslGrammar::acceptIdentifier(HlslToken& idToken)
|
|||
}
|
||||
|
||||
// compilationUnit
|
||||
// : list of externalDeclaration
|
||||
// | SEMICOLONS
|
||||
// : declaration_list EOF
|
||||
//
|
||||
bool HlslGrammar::acceptCompilationUnit()
|
||||
{
|
||||
TIntermNode* unitNode = nullptr;
|
||||
|
||||
while (! peekTokenClass(EHTokNone)) {
|
||||
// HLSL allows semicolons between global declarations, e.g, between functions.
|
||||
if (acceptTokenClass(EHTokSemicolon))
|
||||
continue;
|
||||
if (! acceptDeclarationList(unitNode))
|
||||
return false;
|
||||
|
||||
// externalDeclaration
|
||||
if (! acceptDeclaration(unitNode))
|
||||
return false;
|
||||
}
|
||||
if (! peekTokenClass(EHTokNone))
|
||||
return false;
|
||||
|
||||
// set root of AST
|
||||
if (unitNode && !unitNode->getAsAggregate())
|
||||
|
@ -159,6 +154,34 @@ bool HlslGrammar::acceptCompilationUnit()
|
|||
return true;
|
||||
}
|
||||
|
||||
// Recognize the following, but with the extra condition that it can be
|
||||
// successfully terminated by EOF or '}'.
|
||||
//
|
||||
// declaration_list
|
||||
// : list of declaration_or_semicolon followed by EOF or RIGHT_BRACE
|
||||
//
|
||||
// declaration_or_semicolon
|
||||
// : declaration
|
||||
// : SEMICOLON
|
||||
//
|
||||
bool HlslGrammar::acceptDeclarationList(TIntermNode*& nodeList)
|
||||
{
|
||||
do {
|
||||
// HLSL allows extra semicolons between global declarations
|
||||
do { } while (acceptTokenClass(EHTokSemicolon));
|
||||
|
||||
// EOF or RIGHT_BRACE
|
||||
if (peekTokenClass(EHTokNone) || peekTokenClass(EHTokRightBrace))
|
||||
return true;
|
||||
|
||||
// declaration
|
||||
if (! acceptDeclaration(nodeList))
|
||||
return false;
|
||||
} while (true);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// sampler_state
|
||||
// : LEFT_BRACE [sampler_state_assignment ... ] RIGHT_BRACE
|
||||
//
|
||||
|
@ -289,6 +312,7 @@ bool HlslGrammar::acceptSamplerDeclarationDX9(TType& /*type*/)
|
|||
// | fully_specified_type identifier function_parameters post_decls compound_statement // function definition
|
||||
// | fully_specified_type identifier sampler_state post_decls compound_statement // sampler definition
|
||||
// | typedef declaration
|
||||
// | NAMESPACE IDENTIFIER LEFT_BRACE declaration_list RIGHT_BRACE
|
||||
//
|
||||
// declarator_list
|
||||
// : declarator COMMA declarator COMMA declarator... // zero or more declarators
|
||||
|
@ -314,6 +338,30 @@ bool HlslGrammar::acceptSamplerDeclarationDX9(TType& /*type*/)
|
|||
//
|
||||
bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
|
||||
{
|
||||
// NAMESPACE IDENTIFIER LEFT_BRACE declaration_list RIGHT_BRACE
|
||||
if (acceptTokenClass(EHTokNamespace)) {
|
||||
HlslToken namespaceToken;
|
||||
if (!acceptIdentifier(namespaceToken)) {
|
||||
expected("namespace name");
|
||||
return false;
|
||||
}
|
||||
parseContext.pushNamespace(*namespaceToken.string);
|
||||
if (!acceptTokenClass(EHTokLeftBrace)) {
|
||||
expected("{");
|
||||
return false;
|
||||
}
|
||||
if (!acceptDeclarationList(nodeList)) {
|
||||
expected("declaration list");
|
||||
return false;
|
||||
}
|
||||
if (!acceptTokenClass(EHTokRightBrace)) {
|
||||
expected("}");
|
||||
return false;
|
||||
}
|
||||
parseContext.popNamespace();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool declarator_list = false; // true when processing comma separation
|
||||
|
||||
// attributes
|
||||
|
@ -342,15 +390,17 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
|
|||
HlslToken idToken;
|
||||
TIntermAggregate* initializers = nullptr;
|
||||
while (acceptIdentifier(idToken)) {
|
||||
const TString *fullName = idToken.string;
|
||||
if (parseContext.symbolTable.atGlobalLevel())
|
||||
parseContext.getFullNamespaceName(fullName);
|
||||
if (peekTokenClass(EHTokLeftParen)) {
|
||||
// looks like function parameters
|
||||
TString* fnName = idToken.string;
|
||||
|
||||
// Potentially rename shader entry point function. No-op most of the time.
|
||||
parseContext.renameShaderFunction(fnName);
|
||||
parseContext.renameShaderFunction(fullName);
|
||||
|
||||
// function_parameters
|
||||
declarator.function = new TFunction(fnName, declaredType);
|
||||
declarator.function = new TFunction(fullName, declaredType);
|
||||
if (!acceptFunctionParameters(*declarator.function)) {
|
||||
expected("function parameter list");
|
||||
return false;
|
||||
|
@ -424,19 +474,19 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
|
|||
// TODO: strings are not yet handled.
|
||||
if (variableType.getBasicType() != EbtString && parseContext.getAnnotationNestingLevel() == 0) {
|
||||
if (typedefDecl)
|
||||
parseContext.declareTypedef(idToken.loc, *idToken.string, variableType);
|
||||
parseContext.declareTypedef(idToken.loc, *fullName, variableType);
|
||||
else if (variableType.getBasicType() == EbtBlock)
|
||||
parseContext.declareBlock(idToken.loc, variableType, idToken.string);
|
||||
parseContext.declareBlock(idToken.loc, variableType, fullName);
|
||||
else {
|
||||
if (variableType.getQualifier().storage == EvqUniform && ! variableType.containsOpaque()) {
|
||||
// this isn't really an individual variable, but a member of the $Global buffer
|
||||
parseContext.growGlobalUniformBlock(idToken.loc, variableType, *idToken.string);
|
||||
parseContext.growGlobalUniformBlock(idToken.loc, variableType, *fullName);
|
||||
} else {
|
||||
// Declare the variable and add any initializer code to the AST.
|
||||
// The top-level node is always made into an aggregate, as that's
|
||||
// historically how the AST has been.
|
||||
initializers = intermediate.growAggregate(initializers,
|
||||
parseContext.declareVariable(idToken.loc, *idToken.string, variableType, expressionNode),
|
||||
parseContext.declareVariable(idToken.loc, *fullName, variableType, expressionNode),
|
||||
idToken.loc);
|
||||
}
|
||||
}
|
||||
|
@ -561,10 +611,6 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList)
|
|||
qualifier.layoutFormat = type.getQualifier().layoutFormat;
|
||||
qualifier.precision = type.getQualifier().precision;
|
||||
|
||||
// Propagate sampler readonly qualifier for buffers
|
||||
if (type.getBasicType() == EbtSampler)
|
||||
qualifier.readonly = type.getQualifier().readonly;
|
||||
|
||||
if (type.getQualifier().storage == EvqVaryingOut ||
|
||||
type.getQualifier().storage == EvqBuffer) {
|
||||
qualifier.storage = type.getQualifier().storage;
|
||||
|
@ -1099,25 +1145,24 @@ bool HlslGrammar::acceptTextureType(TType& type)
|
|||
bool array = false;
|
||||
bool ms = false;
|
||||
bool image = false;
|
||||
bool readonly = false;
|
||||
|
||||
switch (textureType) {
|
||||
case EHTokTexture1d: dim = Esd1D; break;
|
||||
case EHTokTexture1darray: dim = Esd1D; array = true; break;
|
||||
case EHTokTexture2d: dim = Esd2D; break;
|
||||
case EHTokTexture2darray: dim = Esd2D; array = true; break;
|
||||
case EHTokTexture3d: dim = Esd3D; break;
|
||||
case EHTokTextureCube: dim = EsdCube; break;
|
||||
case EHTokTextureCubearray: dim = EsdCube; array = true; break;
|
||||
case EHTokTexture2DMS: dim = Esd2D; ms = true; break;
|
||||
case EHTokTexture2DMSarray: dim = Esd2D; array = true; ms = true; break;
|
||||
case EHTokBuffer: dim = EsdBuffer; readonly=true; image=true; break;
|
||||
case EHTokRWBuffer: dim = EsdBuffer; image=true; break;
|
||||
case EHTokRWTexture1d: dim = Esd1D; array=false; image=true; break;
|
||||
case EHTokRWTexture1darray: dim = Esd1D; array=true; image=true; break;
|
||||
case EHTokRWTexture2d: dim = Esd2D; array=false; image=true; break;
|
||||
case EHTokRWTexture2darray: dim = Esd2D; array=true; image=true; break;
|
||||
case EHTokRWTexture3d: dim = Esd3D; array=false; image=true; break;
|
||||
case EHTokBuffer: dim = EsdBuffer; break;
|
||||
case EHTokTexture1d: dim = Esd1D; break;
|
||||
case EHTokTexture1darray: dim = Esd1D; array = true; break;
|
||||
case EHTokTexture2d: dim = Esd2D; break;
|
||||
case EHTokTexture2darray: dim = Esd2D; array = true; break;
|
||||
case EHTokTexture3d: dim = Esd3D; break;
|
||||
case EHTokTextureCube: dim = EsdCube; break;
|
||||
case EHTokTextureCubearray: dim = EsdCube; array = true; break;
|
||||
case EHTokTexture2DMS: dim = Esd2D; ms = true; break;
|
||||
case EHTokTexture2DMSarray: dim = Esd2D; array = true; ms = true; break;
|
||||
case EHTokRWBuffer: dim = EsdBuffer; image=true; break;
|
||||
case EHTokRWTexture1d: dim = Esd1D; array=false; image=true; break;
|
||||
case EHTokRWTexture1darray: dim = Esd1D; array=true; image=true; break;
|
||||
case EHTokRWTexture2d: dim = Esd2D; array=false; image=true; break;
|
||||
case EHTokRWTexture2darray: dim = Esd2D; array=true; image=true; break;
|
||||
case EHTokRWTexture3d: dim = Esd3D; array=false; image=true; break;
|
||||
default:
|
||||
return false; // not a texture declaration
|
||||
}
|
||||
|
@ -1177,7 +1222,7 @@ bool HlslGrammar::acceptTextureType(TType& type)
|
|||
} else if (ms) {
|
||||
expected("texture type for multisample");
|
||||
return false;
|
||||
} else if (image && !readonly) {
|
||||
} else if (image) {
|
||||
expected("type for RWTexture/RWBuffer");
|
||||
return false;
|
||||
}
|
||||
|
@ -1208,9 +1253,7 @@ bool HlslGrammar::acceptTextureType(TType& type)
|
|||
sampler.vectorSize = txType.getVectorSize();
|
||||
|
||||
type.shallowCopy(TType(sampler, EvqUniform, arraySizes));
|
||||
|
||||
type.getQualifier().layoutFormat = format;
|
||||
type.getQualifier().readonly = readonly;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -1829,7 +1872,7 @@ bool HlslGrammar::acceptStruct(TType& type, TIntermNode*& nodeList)
|
|||
TVector<TFunctionDeclarator> functionDeclarators;
|
||||
|
||||
parseContext.pushNamespace(structName);
|
||||
bool acceptedList = acceptStructDeclarationList(typeList, nodeList, structName, functionDeclarators);
|
||||
bool acceptedList = acceptStructDeclarationList(typeList, nodeList, functionDeclarators);
|
||||
parseContext.popNamespace();
|
||||
|
||||
if (! acceptedList) {
|
||||
|
@ -1988,7 +2031,7 @@ bool HlslGrammar::acceptStructBufferType(TType& type)
|
|||
// | IDENTIFIER array_specifier post_decls
|
||||
// | IDENTIFIER function_parameters post_decls // member-function prototype
|
||||
//
|
||||
bool HlslGrammar::acceptStructDeclarationList(TTypeList*& typeList, TIntermNode*& nodeList, const TString& typeName,
|
||||
bool HlslGrammar::acceptStructDeclarationList(TTypeList*& typeList, TIntermNode*& nodeList,
|
||||
TVector<TFunctionDeclarator>& declarators)
|
||||
{
|
||||
typeList = new TTypeList();
|
||||
|
@ -2090,7 +2133,8 @@ bool HlslGrammar::acceptMemberFunctionDefinition(TIntermNode*& nodeList, const T
|
|||
{
|
||||
bool accepted = false;
|
||||
|
||||
TString* functionName = parseContext.getFullNamespaceName(memberName);
|
||||
const TString* functionName = &memberName;
|
||||
parseContext.getFullNamespaceName(functionName);
|
||||
declarator.function = new TFunction(functionName, type);
|
||||
if (type.getQualifier().storage == EvqTemporary)
|
||||
declarator.function->setImplicitThis();
|
||||
|
@ -2476,6 +2520,10 @@ bool HlslGrammar::acceptConditionalExpression(TIntermTyped*& node)
|
|||
if (! acceptTokenClass(EHTokQuestion))
|
||||
return true;
|
||||
|
||||
node = parseContext.convertConditionalExpression(token.loc, node);
|
||||
if (node == nullptr)
|
||||
return false;
|
||||
|
||||
TIntermTyped* trueNode = nullptr;
|
||||
if (! acceptExpression(trueNode)) {
|
||||
expected("expression after ?");
|
||||
|
@ -2623,12 +2671,12 @@ bool HlslGrammar::acceptUnaryExpression(TIntermTyped*& node)
|
|||
// : LEFT_PAREN expression RIGHT_PAREN
|
||||
// | literal
|
||||
// | constructor
|
||||
// | identifier
|
||||
// | IDENTIFIER [ COLONCOLON IDENTIFIER [ COLONCOLON IDENTIFIER ... ] ]
|
||||
// | function_call
|
||||
// | postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET
|
||||
// | postfix_expression DOT IDENTIFIER
|
||||
// | postfix_expression DOT IDENTIFIER arguments
|
||||
// | postfix_expression COLONCOLON IDENTIFIER arguments
|
||||
// | postfix_expression arguments
|
||||
// | postfix_expression INC_OP
|
||||
// | postfix_expression DEC_OP
|
||||
//
|
||||
|
@ -2640,9 +2688,6 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node)
|
|||
// idToken will pick up either a variable or a function name in a function call
|
||||
HlslToken idToken;
|
||||
|
||||
// scopeBase will pick up the type symbol on the left of '::'
|
||||
TSymbol* scope = nullptr;
|
||||
|
||||
// Find something before the postfix operations, as they can't operate
|
||||
// on nothing. So, no "return true", they fall through, only "return false".
|
||||
if (acceptTokenClass(EHTokLeftParen)) {
|
||||
|
@ -2656,21 +2701,26 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node)
|
|||
return false;
|
||||
}
|
||||
} else if (acceptLiteral(node)) {
|
||||
// literal (nothing else to do yet), go on to the
|
||||
// literal (nothing else to do yet)
|
||||
} else if (acceptConstructor(node)) {
|
||||
// constructor (nothing else to do yet)
|
||||
} else if (acceptIdentifier(idToken)) {
|
||||
// user-type, identifier, or function name
|
||||
if (peekTokenClass(EHTokColonColon)) {
|
||||
TType type;
|
||||
scope = parseContext.lookupUserType(*idToken.string, type);
|
||||
if (scope == nullptr) {
|
||||
expected("type left of ::");
|
||||
// user-type, namespace name, variable, or function name
|
||||
TString* fullName = idToken.string;
|
||||
while (acceptTokenClass(EHTokColonColon)) {
|
||||
// user-type or namespace name
|
||||
fullName = NewPoolTString(fullName->c_str());
|
||||
fullName->append(parseContext.scopeMangler);
|
||||
if (acceptIdentifier(idToken))
|
||||
fullName->append(*idToken.string);
|
||||
else {
|
||||
expected("identifier after ::");
|
||||
return false;
|
||||
}
|
||||
} else if (! peekTokenClass(EHTokLeftParen)) {
|
||||
node = parseContext.handleVariable(idToken.loc, idToken.string);
|
||||
} else if (acceptFunctionCall(idToken, node)) {
|
||||
}
|
||||
if (! peekTokenClass(EHTokLeftParen)) {
|
||||
node = parseContext.handleVariable(idToken.loc, fullName);
|
||||
} else if (acceptFunctionCall(idToken.loc, *fullName, node, nullptr)) {
|
||||
// function_call (nothing else to do yet)
|
||||
} else {
|
||||
expected("function call arguments");
|
||||
|
@ -2734,7 +2784,7 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node)
|
|||
TIntermTyped* thisNode = node;
|
||||
|
||||
// arguments
|
||||
if (! acceptFunctionCall(field, node, thisNode, scope)) {
|
||||
if (! acceptFunctionCall(field.loc, *field.string, node, thisNode)) {
|
||||
expected("function parameters");
|
||||
return false;
|
||||
}
|
||||
|
@ -2806,26 +2856,26 @@ bool HlslGrammar::acceptConstructor(TIntermTyped*& node)
|
|||
// function_call
|
||||
// : [idToken] arguments
|
||||
//
|
||||
bool HlslGrammar::acceptFunctionCall(HlslToken callToken, TIntermTyped*& node, TIntermTyped* baseObject,
|
||||
const TSymbol* scope)
|
||||
bool HlslGrammar::acceptFunctionCall(const TSourceLoc& loc, TString& name, TIntermTyped*& node, TIntermTyped* baseObject)
|
||||
{
|
||||
// name
|
||||
TString* functionName = nullptr;
|
||||
if ((baseObject == nullptr && scope == nullptr)) {
|
||||
functionName = callToken.string;
|
||||
} else if (parseContext.isBuiltInMethod(callToken.loc, baseObject, *callToken.string)) {
|
||||
if (baseObject == nullptr) {
|
||||
functionName = &name;
|
||||
} else if (parseContext.isBuiltInMethod(loc, baseObject, name)) {
|
||||
// Built-in methods are not in the symbol table as methods, but as global functions
|
||||
// taking an explicit 'this' as the first argument.
|
||||
functionName = NewPoolTString(BUILTIN_PREFIX);
|
||||
functionName->append(*callToken.string);
|
||||
functionName->append(name);
|
||||
} else {
|
||||
if (! baseObject->getType().isStruct()) {
|
||||
expected("structure");
|
||||
return false;
|
||||
}
|
||||
functionName = NewPoolTString("");
|
||||
if (baseObject != nullptr)
|
||||
functionName->append(baseObject->getType().getTypeName());
|
||||
else if (scope != nullptr)
|
||||
functionName->append(scope->getType().getTypeName());
|
||||
functionName->append(baseObject->getType().getTypeName());
|
||||
parseContext.addScopeMangler(*functionName);
|
||||
functionName->append(*callToken.string);
|
||||
functionName->append(name);
|
||||
}
|
||||
|
||||
// function
|
||||
|
@ -2841,7 +2891,7 @@ bool HlslGrammar::acceptFunctionCall(HlslToken callToken, TIntermTyped*& node, T
|
|||
return false;
|
||||
|
||||
// call
|
||||
node = parseContext.handleFunctionCall(callToken.loc, function, arguments);
|
||||
node = parseContext.handleFunctionCall(loc, function, arguments);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -3144,6 +3194,9 @@ bool HlslGrammar::acceptSelectionStatement(TIntermNode*& statement)
|
|||
TIntermTyped* condition;
|
||||
if (! acceptParenExpression(condition))
|
||||
return false;
|
||||
condition = parseContext.convertConditionalExpression(loc, condition);
|
||||
if (condition == nullptr)
|
||||
return false;
|
||||
|
||||
// create the child statements
|
||||
TIntermNodePair thenElse = { nullptr, nullptr };
|
||||
|
@ -3227,6 +3280,9 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement)
|
|||
// LEFT_PAREN condition RIGHT_PAREN
|
||||
if (! acceptParenExpression(condition))
|
||||
return false;
|
||||
condition = parseContext.convertConditionalExpression(loc, condition);
|
||||
if (condition == nullptr)
|
||||
return false;
|
||||
|
||||
// statement
|
||||
if (! acceptScopedStatement(statement)) {
|
||||
|
@ -3266,6 +3322,9 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement)
|
|||
TIntermTyped* condition;
|
||||
if (! acceptParenExpression(condition))
|
||||
return false;
|
||||
condition = parseContext.convertConditionalExpression(loc, condition);
|
||||
if (condition == nullptr)
|
||||
return false;
|
||||
|
||||
if (! acceptTokenClass(EHTokSemicolon))
|
||||
expected(";");
|
||||
|
@ -3303,6 +3362,11 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement)
|
|||
acceptExpression(condition);
|
||||
if (! acceptTokenClass(EHTokSemicolon))
|
||||
expected(";");
|
||||
if (condition != nullptr) {
|
||||
condition = parseContext.convertConditionalExpression(loc, condition);
|
||||
if (condition == nullptr)
|
||||
return false;
|
||||
}
|
||||
|
||||
// iterator SEMI_COLON
|
||||
TIntermTyped* iterator = nullptr;
|
||||
|
|
|
@ -65,6 +65,7 @@ namespace glslang {
|
|||
void unimplemented(const char*);
|
||||
bool acceptIdentifier(HlslToken&);
|
||||
bool acceptCompilationUnit();
|
||||
bool acceptDeclarationList(TIntermNode*&);
|
||||
bool acceptDeclaration(TIntermNode*&);
|
||||
bool acceptControlDeclaration(TIntermNode*& node);
|
||||
bool acceptSamplerDeclarationDX9(TType&);
|
||||
|
@ -87,8 +88,7 @@ namespace glslang {
|
|||
bool acceptTextureType(TType&);
|
||||
bool acceptStructBufferType(TType&);
|
||||
bool acceptStruct(TType&, TIntermNode*& nodeList);
|
||||
bool acceptStructDeclarationList(TTypeList*&, TIntermNode*& nodeList, const TString& typeName,
|
||||
TVector<TFunctionDeclarator>&);
|
||||
bool acceptStructDeclarationList(TTypeList*&, TIntermNode*& nodeList, TVector<TFunctionDeclarator>&);
|
||||
bool acceptMemberFunctionDefinition(TIntermNode*& nodeList, const TType&, const TString& memberName,
|
||||
TFunctionDeclarator&);
|
||||
bool acceptFunctionParameters(TFunction&);
|
||||
|
@ -104,8 +104,7 @@ namespace glslang {
|
|||
bool acceptUnaryExpression(TIntermTyped*&);
|
||||
bool acceptPostfixExpression(TIntermTyped*&);
|
||||
bool acceptConstructor(TIntermTyped*&);
|
||||
bool acceptFunctionCall(HlslToken, TIntermTyped*&, TIntermTyped* objectBase = nullptr,
|
||||
const TSymbol* scope = nullptr);
|
||||
bool acceptFunctionCall(const TSourceLoc&, TString& name, TIntermTyped*&, TIntermTyped* objectBase);
|
||||
bool acceptArguments(TFunction*, TIntermTyped*&);
|
||||
bool acceptLiteral(TIntermTyped*&);
|
||||
bool acceptCompoundStatement(TIntermNode*&);
|
||||
|
|
|
@ -162,7 +162,7 @@ bool HlslParseContext::shouldConvertLValue(const TIntermNode* node) const
|
|||
return false;
|
||||
}
|
||||
|
||||
void HlslParseContext::growGlobalUniformBlock(TSourceLoc& loc, TType& memberType, TString& memberName, TTypeList* newTypeList)
|
||||
void HlslParseContext::growGlobalUniformBlock(const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* newTypeList)
|
||||
{
|
||||
newTypeList = nullptr;
|
||||
correctUniform(memberType.getQualifier());
|
||||
|
@ -1047,6 +1047,8 @@ TType& HlslParseContext::split(TType& type, TString name, const TType* outerStru
|
|||
if (arraySizes)
|
||||
ioVar->getWritableType().newArraySizes(*arraySizes);
|
||||
|
||||
fixBuiltInArrayType(ioVar->getWritableType());
|
||||
|
||||
interstageBuiltInIo[tInterstageIoData(memberType, *outerStructType)] = ioVar;
|
||||
|
||||
// Merge qualifier from the user structure
|
||||
|
@ -1381,6 +1383,34 @@ void HlslParseContext::trackLinkage(TSymbol& symbol)
|
|||
}
|
||||
|
||||
|
||||
// Some types require fixed array sizes in SPIR-V, but can be scalars or
|
||||
// arrays of sizes SPIR-V doesn't allow. For example, tessellation factors.
|
||||
// This creates the right size. A conversion is performed when the internal
|
||||
// type is copied to or from the external type.
|
||||
void HlslParseContext::fixBuiltInArrayType(TType& type)
|
||||
{
|
||||
int requiredSize = 0;
|
||||
|
||||
switch (type.getQualifier().builtIn) {
|
||||
case EbvTessLevelOuter: requiredSize = 4; break;
|
||||
case EbvTessLevelInner: requiredSize = 2; break;
|
||||
case EbvClipDistance: // TODO: ...
|
||||
case EbvCullDistance: // TODO: ...
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (type.isArray()) {
|
||||
// Already an array. Fix the size.
|
||||
type.changeOuterArraySize(requiredSize);
|
||||
} else {
|
||||
// it wasn't an array, but needs to be.
|
||||
TArraySizes arraySizes;
|
||||
arraySizes.addInnerSize(requiredSize);
|
||||
type.newArraySizes(arraySizes);
|
||||
}
|
||||
}
|
||||
|
||||
// Variables that correspond to the user-interface in and out of a stage
|
||||
// (not the built-in interface) are assigned locations and
|
||||
// registered as a linkage node (part of the stage's external interface).
|
||||
|
@ -1389,15 +1419,24 @@ void HlslParseContext::trackLinkage(TSymbol& symbol)
|
|||
void HlslParseContext::assignLocations(TVariable& variable)
|
||||
{
|
||||
const auto assignLocation = [&](TVariable& variable) {
|
||||
const TQualifier& qualifier = variable.getType().getQualifier();
|
||||
const TType& type = variable.getType();
|
||||
const TQualifier& qualifier = type.getQualifier();
|
||||
if (qualifier.storage == EvqVaryingIn || qualifier.storage == EvqVaryingOut) {
|
||||
if (qualifier.builtIn == EbvNone) {
|
||||
// Strip off the outer array dimension for those having an extra one.
|
||||
int size;
|
||||
if (type.isArray() && qualifier.isArrayedIo(language)) {
|
||||
TType elementType(type, 0);
|
||||
size = intermediate.computeTypeLocationSize(elementType);
|
||||
} else
|
||||
size = intermediate.computeTypeLocationSize(type);
|
||||
|
||||
if (qualifier.storage == EvqVaryingIn) {
|
||||
variable.getWritableType().getQualifier().layoutLocation = nextInLocation;
|
||||
nextInLocation += intermediate.computeTypeLocationSize(variable.getType());
|
||||
nextInLocation += size;
|
||||
} else {
|
||||
variable.getWritableType().getQualifier().layoutLocation = nextOutLocation;
|
||||
nextOutLocation += intermediate.computeTypeLocationSize(variable.getType());
|
||||
nextOutLocation += size;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1559,48 +1598,10 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l
|
|||
return paramNodes;
|
||||
}
|
||||
|
||||
//
|
||||
// Do all special handling for the entry point, including wrapping
|
||||
// the shader's entry point with the official entry point that will call it.
|
||||
//
|
||||
// The following:
|
||||
//
|
||||
// retType shaderEntryPoint(args...) // shader declared entry point
|
||||
// { body }
|
||||
//
|
||||
// Becomes
|
||||
//
|
||||
// out retType ret;
|
||||
// in iargs<that are input>...;
|
||||
// out oargs<that are output> ...;
|
||||
//
|
||||
// void shaderEntryPoint() // synthesized, but official, entry point
|
||||
// {
|
||||
// args<that are input> = iargs...;
|
||||
// ret = @shaderEntryPoint(args...);
|
||||
// oargs = args<that are output>...;
|
||||
// }
|
||||
//
|
||||
// The symbol table will still map the original entry point name to the
|
||||
// the modified function and it's new name:
|
||||
//
|
||||
// symbol table: shaderEntryPoint -> @shaderEntryPoint
|
||||
//
|
||||
// Returns nullptr if no entry-point tree was built, otherwise, returns
|
||||
// a subtree that creates the entry point.
|
||||
//
|
||||
TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunction& userFunction, const TAttributeMap& attributes)
|
||||
|
||||
// Handle all [attrib] attribute for the shader entry point
|
||||
void HlslParseContext::handleEntryPointAttributes(const TSourceLoc& loc, const TAttributeMap& attributes)
|
||||
{
|
||||
// if we aren't in the entry point, fix the IO as such and exit
|
||||
if (userFunction.getName().compare(intermediate.getEntryPointName().c_str()) != 0) {
|
||||
remapNonEntryPointIO(userFunction);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
entryPointFunction = &userFunction; // needed in finish()
|
||||
|
||||
// entry point logic...
|
||||
|
||||
// Handle entry-point function attributes
|
||||
const TIntermAggregate* numThreads = attributes[EatNumThreads];
|
||||
if (numThreads != nullptr) {
|
||||
|
@ -1652,8 +1653,12 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
|
|||
error(loc, "unsupported domain type", domainStr.c_str(), "");
|
||||
}
|
||||
|
||||
if (! intermediate.setInputPrimitive(domain)) {
|
||||
error(loc, "cannot change previously set domain", TQualifier::getGeometryString(domain), "");
|
||||
if (language == EShLangTessEvaluation) {
|
||||
if (! intermediate.setInputPrimitive(domain))
|
||||
error(loc, "cannot change previously set domain", TQualifier::getGeometryString(domain), "");
|
||||
} else {
|
||||
if (! intermediate.setOutputPrimitive(domain))
|
||||
error(loc, "cannot change previously set domain", TQualifier::getGeometryString(domain), "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1731,6 +1736,52 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Do all special handling for the entry point, including wrapping
|
||||
// the shader's entry point with the official entry point that will call it.
|
||||
//
|
||||
// The following:
|
||||
//
|
||||
// retType shaderEntryPoint(args...) // shader declared entry point
|
||||
// { body }
|
||||
//
|
||||
// Becomes
|
||||
//
|
||||
// out retType ret;
|
||||
// in iargs<that are input>...;
|
||||
// out oargs<that are output> ...;
|
||||
//
|
||||
// void shaderEntryPoint() // synthesized, but official, entry point
|
||||
// {
|
||||
// args<that are input> = iargs...;
|
||||
// ret = @shaderEntryPoint(args...);
|
||||
// oargs = args<that are output>...;
|
||||
// }
|
||||
//
|
||||
// The symbol table will still map the original entry point name to the
|
||||
// the modified function and it's new name:
|
||||
//
|
||||
// symbol table: shaderEntryPoint -> @shaderEntryPoint
|
||||
//
|
||||
// Returns nullptr if no entry-point tree was built, otherwise, returns
|
||||
// a subtree that creates the entry point.
|
||||
//
|
||||
TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunction& userFunction, const TAttributeMap& attributes)
|
||||
{
|
||||
// if we aren't in the entry point, fix the IO as such and exit
|
||||
if (userFunction.getName().compare(intermediate.getEntryPointName().c_str()) != 0) {
|
||||
remapNonEntryPointIO(userFunction);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
entryPointFunction = &userFunction; // needed in finish()
|
||||
|
||||
// Handle entry point attributes
|
||||
handleEntryPointAttributes(loc, attributes);
|
||||
|
||||
// entry point logic...
|
||||
|
||||
// Move parameters and return value to shader in/out
|
||||
TVariable* entryPointOutput; // gets created in remapEntryPointIO
|
||||
|
@ -1799,10 +1850,40 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
|
|||
currentCaller = userFunction.getMangledName();
|
||||
|
||||
// Return value
|
||||
if (entryPointOutput)
|
||||
intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign,
|
||||
intermediate.addSymbol(*entryPointOutput), callReturn));
|
||||
else
|
||||
if (entryPointOutput) {
|
||||
TIntermTyped* returnAssign;
|
||||
|
||||
// For hull shaders, the wrapped entry point return value is written to
|
||||
// an array element as indexed by invocation ID, which we might have to make up.
|
||||
// This is required to match SPIR-V semantics.
|
||||
if (language == EShLangTessControl) {
|
||||
TIntermSymbol* invocationIdSym = findLinkageSymbol(EbvInvocationId);
|
||||
|
||||
// If there is no user declared invocation ID, we must make one.
|
||||
if (invocationIdSym == nullptr) {
|
||||
TType invocationIdType(EbtUint, EvqIn, 1);
|
||||
TString* invocationIdName = NewPoolTString("InvocationId");
|
||||
invocationIdType.getQualifier().builtIn = EbvInvocationId;
|
||||
|
||||
TVariable* variable = makeInternalVariable(*invocationIdName, invocationIdType);
|
||||
|
||||
globalQualifierFix(loc, variable->getWritableType().getQualifier());
|
||||
trackLinkage(*variable);
|
||||
|
||||
invocationIdSym = intermediate.addSymbol(*variable);
|
||||
}
|
||||
|
||||
TIntermTyped* element = intermediate.addIndex(EOpIndexIndirect, intermediate.addSymbol(*entryPointOutput),
|
||||
invocationIdSym, loc);
|
||||
element->setType(callReturn->getType());
|
||||
|
||||
returnAssign = handleAssign(loc, EOpAssign, element, callReturn);
|
||||
} else {
|
||||
returnAssign = handleAssign(loc, EOpAssign, intermediate.addSymbol(*entryPointOutput), callReturn);
|
||||
}
|
||||
|
||||
intermediate.growAggregate(synthBody, returnAssign);
|
||||
} else
|
||||
intermediate.growAggregate(synthBody, callReturn);
|
||||
|
||||
// Output copies
|
||||
|
@ -1862,19 +1943,42 @@ void HlslParseContext::remapEntryPointIO(TFunction& function, TVariable*& return
|
|||
ioVariable->getWritableType().setStruct(newLists->second.output);
|
||||
}
|
||||
}
|
||||
if (storage == EvqVaryingIn)
|
||||
if (storage == EvqVaryingIn) {
|
||||
correctInput(ioVariable->getWritableType().getQualifier());
|
||||
else
|
||||
if (language == EShLangTessEvaluation)
|
||||
if (!ioVariable->getType().isArray())
|
||||
ioVariable->getWritableType().getQualifier().patch = true;
|
||||
} else {
|
||||
correctOutput(ioVariable->getWritableType().getQualifier());
|
||||
}
|
||||
ioVariable->getWritableType().getQualifier().storage = storage;
|
||||
return ioVariable;
|
||||
};
|
||||
|
||||
// return value is actually a shader-scoped output (out)
|
||||
if (function.getType().getBasicType() == EbtVoid)
|
||||
if (function.getType().getBasicType() == EbtVoid) {
|
||||
returnValue = nullptr;
|
||||
else
|
||||
returnValue = makeIoVariable("@entryPointOutput", function.getWritableType(), EvqVaryingOut);
|
||||
} else {
|
||||
if (language == EShLangTessControl) {
|
||||
// tessellation evaluation in HLSL writes a per-ctrl-pt value, but it needs to be an
|
||||
// array in SPIR-V semantics. We'll write to it indexed by invocation ID.
|
||||
|
||||
returnValue = makeIoVariable("@entryPointOutput", function.getWritableType(), EvqVaryingOut);
|
||||
|
||||
TType outputType;
|
||||
outputType.shallowCopy(function.getType());
|
||||
|
||||
// vertices has necessarily already been set when handling entry point attributes.
|
||||
TArraySizes arraySizes;
|
||||
arraySizes.addInnerSize(intermediate.getVertices());
|
||||
outputType.newArraySizes(arraySizes);
|
||||
|
||||
clearUniformInputOutput(function.getWritableType().getQualifier());
|
||||
returnValue = makeIoVariable("@entryPointOutput", outputType, EvqVaryingOut);
|
||||
} else {
|
||||
returnValue = makeIoVariable("@entryPointOutput", function.getWritableType(), EvqVaryingOut);
|
||||
}
|
||||
}
|
||||
|
||||
// parameters are actually shader-scoped inputs and outputs (in or out)
|
||||
for (int i = 0; i < function.getParamCount(); i++) {
|
||||
|
@ -2031,7 +2135,11 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
|
|||
const bool split = isLeft ? isSplitLeft : isSplitRight;
|
||||
const TIntermTyped* outer = isLeft ? outerLeft : outerRight;
|
||||
const TVector<TVariable*>& flatVariables = isLeft ? *leftVariables : *rightVariables;
|
||||
const TOperator op = node->getType().isArray() ? EOpIndexDirect : EOpIndexDirectStruct;
|
||||
|
||||
// Index operator if it's an aggregate, else EOpNull
|
||||
const TOperator op = node->getType().isArray() ? EOpIndexDirect :
|
||||
node->getType().isStruct() ? EOpIndexDirectStruct : EOpNull;
|
||||
|
||||
const TType derefType(node->getType(), member);
|
||||
|
||||
if (split && derefType.isBuiltInInterstageIO(language)) {
|
||||
|
@ -2047,10 +2155,14 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
|
|||
} else if (flattened && isFinalFlattening(derefType)) {
|
||||
subTree = intermediate.addSymbol(*flatVariables[memberIdx++]);
|
||||
} else {
|
||||
const TType splitDerefType(splitNode->getType(), splitMember);
|
||||
if (op == EOpNull) {
|
||||
subTree = splitNode;
|
||||
} else {
|
||||
const TType splitDerefType(splitNode->getType(), splitMember);
|
||||
|
||||
subTree = intermediate.addIndex(op, splitNode, intermediate.addConstantUnion(splitMember, loc), loc);
|
||||
subTree->setType(splitDerefType);
|
||||
subTree = intermediate.addIndex(op, splitNode, intermediate.addConstantUnion(splitMember, loc), loc);
|
||||
subTree->setType(splitDerefType);
|
||||
}
|
||||
}
|
||||
|
||||
return subTree;
|
||||
|
@ -2069,11 +2181,15 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
|
|||
// If we get here, we are assigning to or from a whole array or struct that must be
|
||||
// flattened, so have to do member-by-member assignment:
|
||||
|
||||
if (left->getType().isArray()) {
|
||||
const TType dereferencedType(left->getType(), 0);
|
||||
if (left->getType().isArray() || right->getType().isArray()) {
|
||||
const int elementsL = left->getType().isArray() ? left->getType().getOuterArraySize() : 1;
|
||||
const int elementsR = right->getType().isArray() ? right->getType().getOuterArraySize() : 1;
|
||||
|
||||
// The arrays may not be the same size, e.g, if the size has been forced for EbvTessLevelInner or Outer.
|
||||
const int elementsToCopy = std::min(elementsL, elementsR);
|
||||
|
||||
// array case
|
||||
for (int element=0; element < left->getType().getOuterArraySize(); ++element) {
|
||||
for (int element=0; element < elementsToCopy; ++element) {
|
||||
arrayElement.push_back(element);
|
||||
|
||||
// Add a new AST symbol node if we have a temp variable holding a complex RHS.
|
||||
|
@ -2083,10 +2199,7 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
|
|||
TIntermTyped* subSplitLeft = isSplitLeft ? getMember(true, left, element, splitLeft, element) : subLeft;
|
||||
TIntermTyped* subSplitRight = isSplitRight ? getMember(false, right, element, splitRight, element) : subRight;
|
||||
|
||||
if (isFinalFlattening(dereferencedType))
|
||||
assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc), loc);
|
||||
else
|
||||
traverse(subLeft, subRight, subSplitLeft, subSplitRight);
|
||||
traverse(subLeft, subRight, subSplitLeft, subSplitRight);
|
||||
|
||||
arrayElement.pop_back();
|
||||
}
|
||||
|
@ -2120,8 +2233,8 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
|
|||
// subtree here IFF it does not itself contain any interstage built-in IO variables, so we only have to
|
||||
// recurse into it if there's something for splitting to do. That can save a lot of AST verbosity for
|
||||
// a bunch of memberwise copies.
|
||||
if (isFinalFlattening(typeL) || (!isFlattenLeft && !isFlattenRight &&
|
||||
!typeL.containsBuiltInInterstageIO(language) && !typeR.containsBuiltInInterstageIO(language))) {
|
||||
if ((!isFlattenLeft && !isFlattenRight &&
|
||||
!typeL.containsBuiltInInterstageIO(language) && !typeR.containsBuiltInInterstageIO(language))) {
|
||||
assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subSplitLeft, subSplitRight, loc), loc);
|
||||
} else {
|
||||
traverse(subLeft, subRight, subSplitLeft, subSplitRight);
|
||||
|
@ -2131,8 +2244,8 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
|
|||
memberR += (typeR.isBuiltInInterstageIO(language) ? 0 : 1);
|
||||
}
|
||||
} else {
|
||||
assert(0); // we should never be called on a non-flattenable thing, because
|
||||
// that case bails out above to a simple copy.
|
||||
// Member copy
|
||||
assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, left, right, loc), loc);
|
||||
}
|
||||
|
||||
};
|
||||
|
@ -2272,6 +2385,9 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte
|
|||
if (argAggregate == nullptr)
|
||||
return;
|
||||
|
||||
if (argAggregate->getSequence().empty())
|
||||
return;
|
||||
|
||||
// Buffer is the object upon which method is called, so always arg 0
|
||||
TIntermTyped* bufferObj = argAggregate->getSequence()[0]->getAsTyped();
|
||||
|
||||
|
@ -3747,7 +3863,9 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct
|
|||
// the symbol table for an arbitrary type. This is a temporary hack until that ability exists.
|
||||
// It will have false positives, since it doesn't check arg counts or types.
|
||||
if (arguments && arguments->getAsAggregate()) {
|
||||
if (isStructBufferType(arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType())) {
|
||||
const TIntermSequence& sequence = arguments->getAsAggregate()->getSequence();
|
||||
|
||||
if (!sequence.empty() && isStructBufferType(sequence[0]->getAsTyped()->getType())) {
|
||||
static const int methodPrefixSize = sizeof(BUILTIN_PREFIX)-1;
|
||||
|
||||
if (function->getName().length() > methodPrefixSize &&
|
||||
|
@ -4173,6 +4291,10 @@ void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, TBu
|
|||
case EbvStencilRef:
|
||||
error(loc, "unimplemented; need ARB_shader_stencil_export", "SV_STENCILREF", "");
|
||||
break;
|
||||
case EbvTessLevelInner:
|
||||
case EbvTessLevelOuter:
|
||||
qualifier.patch = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -4285,6 +4407,18 @@ void HlslParseContext::handleRegister(const TSourceLoc& loc, TQualifier& qualifi
|
|||
}
|
||||
}
|
||||
|
||||
// Convert to a scalar boolean, or if not allowed by HLSL semantics,
|
||||
// report an error and return nullptr.
|
||||
TIntermTyped* HlslParseContext::convertConditionalExpression(const TSourceLoc& loc, TIntermTyped* condition)
|
||||
{
|
||||
if (!condition->getType().isScalarOrVec1()) {
|
||||
error(loc, "requires a scalar", "conditional expression", "");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return intermediate.addConversion(EOpConstructBool, TType(EbtBool), condition);
|
||||
}
|
||||
|
||||
//
|
||||
// Same error message for all places assignments don't work.
|
||||
//
|
||||
|
@ -4607,13 +4741,6 @@ bool HlslParseContext::voidErrorCheck(const TSourceLoc& loc, const TString& iden
|
|||
return false;
|
||||
}
|
||||
|
||||
// Checks to see if the node (for the expression) contains a scalar boolean expression or not
|
||||
void HlslParseContext::boolCheck(const TSourceLoc& loc, const TIntermTyped* type)
|
||||
{
|
||||
if (type->getBasicType() != EbtBool || type->isArray() || type->isMatrix() || type->isVector())
|
||||
error(loc, "boolean expression expected", "", "");
|
||||
}
|
||||
|
||||
//
|
||||
// Fix just a full qualifier (no variables or types yet, but qualifier is complete) at global level.
|
||||
//
|
||||
|
@ -4759,7 +4886,7 @@ void HlslParseContext::arrayDimMerge(TType& type, const TArraySizes* sizes)
|
|||
// Do all the semantic checking for declaring or redeclaring an array, with and
|
||||
// without a size, and make the right changes to the symbol table.
|
||||
//
|
||||
void HlslParseContext::declareArray(const TSourceLoc& loc, TString& identifier, const TType& type, TSymbol*& symbol, bool track)
|
||||
void HlslParseContext::declareArray(const TSourceLoc& loc, const TString& identifier, const TType& type, TSymbol*& symbol, bool track)
|
||||
{
|
||||
if (! symbol) {
|
||||
bool currentScope;
|
||||
|
@ -4857,7 +4984,7 @@ void HlslParseContext::updateImplicitArraySize(const TSourceLoc& loc, TIntermNod
|
|||
//
|
||||
// Enforce non-initializer type/qualifier rules.
|
||||
//
|
||||
void HlslParseContext::fixConstInit(const TSourceLoc& loc, TString& identifier, TType& type, TIntermTyped*& initializer)
|
||||
void HlslParseContext::fixConstInit(const TSourceLoc& loc, const TString& identifier, TType& type, TIntermTyped*& initializer)
|
||||
{
|
||||
//
|
||||
// Make the qualifier make sense, given that there is an initializer.
|
||||
|
@ -5846,7 +5973,7 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction
|
|||
// 'parseType' is the type part of the declaration (to the left)
|
||||
// 'arraySizes' is the arrayness tagged on the identifier (to the right)
|
||||
//
|
||||
void HlslParseContext::declareTypedef(const TSourceLoc& loc, TString& identifier, const TType& parseType)
|
||||
void HlslParseContext::declareTypedef(const TSourceLoc& loc, const TString& identifier, const TType& parseType)
|
||||
{
|
||||
TVariable* typeSymbol = new TVariable(&identifier, parseType, true);
|
||||
if (! symbolTable.insert(*typeSymbol))
|
||||
|
@ -5977,7 +6104,7 @@ TSymbol* HlslParseContext::lookupUserType(const TString& typeName, TType& type)
|
|||
// 'parseType' is the type part of the declaration (to the left)
|
||||
// 'arraySizes' is the arrayness tagged on the identifier (to the right)
|
||||
//
|
||||
TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& identifier, TType& type, TIntermTyped* initializer)
|
||||
TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, const TString& identifier, TType& type, TIntermTyped* initializer)
|
||||
{
|
||||
if (voidErrorCheck(loc, identifier, type.getBasicType()))
|
||||
return nullptr;
|
||||
|
@ -6079,7 +6206,7 @@ TVariable* HlslParseContext::makeInternalVariable(const char* name, const TType&
|
|||
//
|
||||
// Return the successfully declared variable.
|
||||
//
|
||||
TVariable* HlslParseContext::declareNonArray(const TSourceLoc& loc, TString& identifier, TType& type, bool track)
|
||||
TVariable* HlslParseContext::declareNonArray(const TSourceLoc& loc, const TString& identifier, const TType& type, bool track)
|
||||
{
|
||||
// make a new variable
|
||||
TVariable* variable = new TVariable(&identifier, type);
|
||||
|
@ -7132,15 +7259,15 @@ void HlslParseContext::popNamespace()
|
|||
|
||||
// Use the class/struct nesting string to create a global name for
|
||||
// a member of a class/struct.
|
||||
TString* HlslParseContext::getFullNamespaceName(const TString& localName) const
|
||||
void HlslParseContext::getFullNamespaceName(const TString*& name) const
|
||||
{
|
||||
TString* name = NewPoolTString("");
|
||||
if (currentTypePrefix.size() > 0)
|
||||
name->append(currentTypePrefix.back());
|
||||
name->append(scopeMangler);
|
||||
name->append(localName);
|
||||
if (currentTypePrefix.size() == 0)
|
||||
return;
|
||||
|
||||
return name;
|
||||
TString* fullName = NewPoolTString(currentTypePrefix.back().c_str());
|
||||
fullName->append(scopeMangler);
|
||||
fullName->append(*name);
|
||||
name = fullName;
|
||||
}
|
||||
|
||||
// Helper function to add the namespace scope mangling syntax to a string.
|
||||
|
@ -7150,7 +7277,7 @@ void HlslParseContext::addScopeMangler(TString& name)
|
|||
}
|
||||
|
||||
// Potentially rename shader entry point function
|
||||
void HlslParseContext::renameShaderFunction(TString*& name) const
|
||||
void HlslParseContext::renameShaderFunction(const TString*& name) const
|
||||
{
|
||||
// Replace the entry point name given in the shader with the real entry point name,
|
||||
// if there is a substitution.
|
||||
|
@ -7215,6 +7342,8 @@ bool HlslParseContext::isInputBuiltIn(const TQualifier& qualifier) const
|
|||
case EbvTessLevelInner:
|
||||
case EbvTessLevelOuter:
|
||||
return language == EShLangTessEvaluation;
|
||||
case EbvTessCoord:
|
||||
return language == EShLangTessEvaluation;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -7352,6 +7481,17 @@ void HlslParseContext::clearUniformInputOutput(TQualifier& qualifier)
|
|||
correctUniform(qualifier);
|
||||
}
|
||||
|
||||
|
||||
// Return a symbol for the linkage variable of the given TBuiltInVariable type
|
||||
TIntermSymbol* HlslParseContext::findLinkageSymbol(TBuiltInVariable biType) const
|
||||
{
|
||||
const auto it = builtInLinkageSymbols.find(biType);
|
||||
if (it == builtInLinkageSymbols.end()) // if it wasn't declared by the user, return nullptr
|
||||
return nullptr;
|
||||
|
||||
return intermediate.addSymbol(*it->second->getAsVariable());
|
||||
}
|
||||
|
||||
// Add patch constant function invocation
|
||||
void HlslParseContext::addPatchConstantInvocation()
|
||||
{
|
||||
|
@ -7423,13 +7563,9 @@ void HlslParseContext::addPatchConstantInvocation()
|
|||
}
|
||||
};
|
||||
|
||||
// Return a symbol for the linkage variable of the given TBuiltInVariable type
|
||||
const auto findLinkageSymbol = [this](TBuiltInVariable biType) -> TIntermSymbol* {
|
||||
const auto it = builtInLinkageSymbols.find(biType);
|
||||
if (it == builtInLinkageSymbols.end()) // if it wasn't declared by the user, return nullptr
|
||||
return nullptr;
|
||||
|
||||
return intermediate.addSymbol(*it->second->getAsVariable());
|
||||
const auto isPerCtrlPt = [this](const TType& type) {
|
||||
// TODO: this is not sufficient to reject all such cases in malformed shaders.
|
||||
return type.isArray() && !type.isRuntimeSizedArray();
|
||||
};
|
||||
|
||||
// We will perform these steps. Each is in a scoped block for separation: they could
|
||||
|
@ -7441,21 +7577,25 @@ void HlslParseContext::addPatchConstantInvocation()
|
|||
// 2. Synthesizes a call to the patchconstfunction using builtin variables from either main,
|
||||
// or the ones we created. Matching is based on builtin type. We may use synthesized
|
||||
// variables from (1) above.
|
||||
//
|
||||
// 2B: Synthesize per control point invocations of wrapped entry point if the PCF requires them.
|
||||
//
|
||||
// 3. Create a return sequence: copy the return value (if any) from the PCF to a
|
||||
// (non-sanitized) output variable. In case this may involve multiple copies, such as for
|
||||
// an arrayed variable, a temporary copy of the PCF output is created to avoid multiple
|
||||
// indirections into a complex R-value coming from the call to the PCF.
|
||||
//
|
||||
// 4. Add a barrier to the end of the entry point body
|
||||
//
|
||||
// 5. Call the PCF inside an if test for (invocation id == 0).
|
||||
//
|
||||
// 4. Create a barrier.
|
||||
//
|
||||
// 5/5B. Call the PCF inside an if test for (invocation id == 0).
|
||||
|
||||
TFunction& patchConstantFunction = const_cast<TFunction&>(*candidateList[0]);
|
||||
const int pcfParamCount = patchConstantFunction.getParamCount();
|
||||
TIntermSymbol* invocationIdSym = findLinkageSymbol(EbvInvocationId);
|
||||
TIntermSequence& epBodySeq = entryPointFunctionBody->getAsAggregate()->getSequence();
|
||||
|
||||
int perCtrlPtParam = -1; // -1 means there isn't one.
|
||||
|
||||
// ================ Step 1A: Union Interfaces ================
|
||||
// Our patch constant function.
|
||||
{
|
||||
|
@ -7468,16 +7608,6 @@ void HlslParseContext::addPatchConstantInvocation()
|
|||
findBuiltIns(patchConstantFunction, pcfBuiltIns);
|
||||
findBuiltIns(*entryPointFunction, epfBuiltIns);
|
||||
|
||||
// Patchconstantfunction can contain only builtin qualified variables. (Technically, only HS inputs,
|
||||
// but this test is less assertive than that).
|
||||
|
||||
for (auto bi = pcfBuiltIns.begin(); bi != pcfBuiltIns.end(); ++bi) {
|
||||
if (bi->builtIn == EbvNone) {
|
||||
error(loc, "patch constant function invalid parameter", "", "");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Find the set of builtins in the PCF that are not present in the entry point.
|
||||
std::set<tInterstageIoData> notInEntryPoint;
|
||||
|
||||
|
@ -7489,15 +7619,27 @@ void HlslParseContext::addPatchConstantInvocation()
|
|||
|
||||
// Now we'll add those to the entry and to the linkage.
|
||||
for (int p=0; p<pcfParamCount; ++p) {
|
||||
TType* paramType = patchConstantFunction[p].type->clone();
|
||||
const TBuiltInVariable biType = patchConstantFunction[p].declaredBuiltIn;
|
||||
const TStorageQualifier storage = patchConstantFunction[p].type->getQualifier().storage;
|
||||
|
||||
// Use the original declaration type for the linkage
|
||||
paramType->getQualifier().builtIn = biType;
|
||||
// Track whether there is any per control point input
|
||||
if (isPerCtrlPt(*patchConstantFunction[p].type)) {
|
||||
if (perCtrlPtParam >= 0) {
|
||||
// Presently we only support one per ctrl pt input. TODO: does HLSL even allow multiple?
|
||||
error(loc, "unimplemented: multiple per control point inputs to patch constant function", "", "");
|
||||
return;
|
||||
}
|
||||
perCtrlPtParam = p;
|
||||
}
|
||||
|
||||
if (notInEntryPoint.count(tInterstageIoData(biType, storage)) == 1)
|
||||
addToLinkage(*paramType, patchConstantFunction[p].name, nullptr);
|
||||
if (biType != EbvNone) {
|
||||
TType* paramType = patchConstantFunction[p].type->clone();
|
||||
// Use the original declaration type for the linkage
|
||||
paramType->getQualifier().builtIn = biType;
|
||||
|
||||
if (notInEntryPoint.count(tInterstageIoData(biType, storage)) == 1)
|
||||
addToLinkage(*paramType, patchConstantFunction[p].name, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
// If we didn't find it because the shader made one, add our own.
|
||||
|
@ -7512,36 +7654,50 @@ void HlslParseContext::addPatchConstantInvocation()
|
|||
}
|
||||
|
||||
TIntermTyped* pcfArguments = nullptr;
|
||||
TVariable* perCtrlPtVar = nullptr;
|
||||
|
||||
// ================ Step 1B: Argument synthesis ================
|
||||
// Create pcfArguments for synthesis of patchconstantfunction invocation
|
||||
// TODO: handle struct or array inputs
|
||||
{
|
||||
for (int p=0; p<pcfParamCount; ++p) {
|
||||
if (patchConstantFunction[p].type->isArray() ||
|
||||
patchConstantFunction[p].type->isStruct()) {
|
||||
if ((patchConstantFunction[p].type->isArray() && !isPerCtrlPt(*patchConstantFunction[p].type)) ||
|
||||
(!patchConstantFunction[p].type->isArray() && patchConstantFunction[p].type->isStruct())) {
|
||||
error(loc, "unimplemented array or variable in patch constant function signature", "", "");
|
||||
return;
|
||||
}
|
||||
|
||||
// find which builtin it is
|
||||
const TBuiltInVariable biType = patchConstantFunction[p].declaredBuiltIn;
|
||||
TIntermSymbol* inputArg = nullptr;
|
||||
|
||||
TIntermSymbol* builtIn = findLinkageSymbol(biType);
|
||||
if (p == perCtrlPtParam) {
|
||||
if (perCtrlPtVar == nullptr) {
|
||||
perCtrlPtVar = makeInternalVariable(*patchConstantFunction[perCtrlPtParam].name,
|
||||
*patchConstantFunction[perCtrlPtParam].type);
|
||||
|
||||
perCtrlPtVar->getWritableType().getQualifier().makeTemporary();
|
||||
}
|
||||
inputArg = intermediate.addSymbol(*perCtrlPtVar, loc);
|
||||
} else {
|
||||
// find which builtin it is
|
||||
const TBuiltInVariable biType = patchConstantFunction[p].declaredBuiltIn;
|
||||
|
||||
inputArg = findLinkageSymbol(biType);
|
||||
|
||||
if (builtIn == nullptr) {
|
||||
error(loc, "unable to find patch constant function builtin variable", "", "");
|
||||
return;
|
||||
if (inputArg == nullptr) {
|
||||
error(loc, "unable to find patch constant function builtin variable", "", "");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (pcfParamCount == 1)
|
||||
pcfArguments = builtIn;
|
||||
pcfArguments = inputArg;
|
||||
else
|
||||
pcfArguments = intermediate.growAggregate(pcfArguments, builtIn);
|
||||
pcfArguments = intermediate.growAggregate(pcfArguments, inputArg);
|
||||
}
|
||||
}
|
||||
|
||||
// ================ Step 2: Synthesize call to PCF ================
|
||||
TIntermAggregate* pcfCallSequence = nullptr;
|
||||
TIntermTyped* pcfCall = nullptr;
|
||||
|
||||
{
|
||||
|
@ -7553,7 +7709,8 @@ void HlslParseContext::addPatchConstantInvocation()
|
|||
pcfCall = intermediate.setAggregateOperator(pcfArguments, EOpFunctionCall, patchConstantFunction.getType(), loc);
|
||||
pcfCall->getAsAggregate()->setUserDefined();
|
||||
pcfCall->getAsAggregate()->setName(patchConstantFunction.getMangledName());
|
||||
intermediate.addToCallGraph(infoSink, entryPointFunction->getMangledName(), patchConstantFunction.getMangledName());
|
||||
intermediate.addToCallGraph(infoSink, intermediate.getEntryPointMangledName().c_str(),
|
||||
patchConstantFunction.getMangledName());
|
||||
|
||||
if (pcfCall->getAsAggregate()) {
|
||||
TQualifierList& qualifierList = pcfCall->getAsAggregate()->getQualifierList();
|
||||
|
@ -7565,6 +7722,71 @@ void HlslParseContext::addPatchConstantInvocation()
|
|||
}
|
||||
}
|
||||
|
||||
// ================ Step 2B: Per Control Point synthesis ================
|
||||
// If there is per control point data, we must either emulate that with multiple
|
||||
// invocations of the entry point to build up an array, or (TODO:) use a yet
|
||||
// unavailable extension to look across the SIMD lanes. This is the former
|
||||
// as a placeholder for the latter.
|
||||
if (perCtrlPtParam >= 0) {
|
||||
// We must introduce a local temp variable of the type wanted by the PCF input.
|
||||
const int arraySize = patchConstantFunction[perCtrlPtParam].type->getOuterArraySize();
|
||||
|
||||
if (entryPointFunction->getType().getBasicType() == EbtVoid) {
|
||||
error(loc, "entry point must return a value for use with patch constant function", "", "");
|
||||
return;
|
||||
}
|
||||
|
||||
// Create calls to wrapped main to fill in the array. We will substitute fixed values
|
||||
// of invocation ID when calling the wrapped main.
|
||||
|
||||
// This is the type of the each member of the per ctrl point array.
|
||||
const TType derefType(perCtrlPtVar->getType(), 0);
|
||||
|
||||
for (int cpt = 0; cpt < arraySize; ++cpt) {
|
||||
// TODO: improve. substr(1) here is to avoid the '@' that was grafted on but isn't in the symtab
|
||||
// for this function.
|
||||
const TString origName = entryPointFunction->getName().substr(1);
|
||||
TFunction callee(&origName, TType(EbtVoid));
|
||||
TIntermTyped* callingArgs = nullptr;
|
||||
|
||||
for (int i = 0; i < entryPointFunction->getParamCount(); i++) {
|
||||
TParameter& param = (*entryPointFunction)[i];
|
||||
TType& paramType = *param.type;
|
||||
|
||||
if (paramType.getQualifier().isParamOutput()) {
|
||||
error(loc, "unimplemented: entry point outputs in patch constant function invocation", "", "");
|
||||
return;
|
||||
}
|
||||
|
||||
if (paramType.getQualifier().isParamInput()) {
|
||||
TIntermTyped* arg = nullptr;
|
||||
if ((*entryPointFunction)[i].declaredBuiltIn == EbvInvocationId) {
|
||||
// substitute invocation ID with the array element ID
|
||||
arg = intermediate.addConstantUnion(cpt, loc);
|
||||
} else {
|
||||
TVariable* argVar = makeInternalVariable(*param.name, *param.type);
|
||||
argVar->getWritableType().getQualifier().makeTemporary();
|
||||
arg = intermediate.addSymbol(*argVar);
|
||||
}
|
||||
|
||||
handleFunctionArgument(&callee, callingArgs, arg);
|
||||
}
|
||||
}
|
||||
|
||||
// Call and assign to per ctrl point variable
|
||||
currentCaller = intermediate.getEntryPointMangledName().c_str();
|
||||
TIntermTyped* callReturn = handleFunctionCall(loc, &callee, callingArgs);
|
||||
TIntermTyped* index = intermediate.addConstantUnion(cpt, loc);
|
||||
TIntermSymbol* perCtrlPtSym = intermediate.addSymbol(*perCtrlPtVar, loc);
|
||||
TIntermTyped* element = intermediate.addIndex(EOpIndexDirect, perCtrlPtSym, index, loc);
|
||||
element->setType(derefType);
|
||||
element->setLoc(loc);
|
||||
|
||||
pcfCallSequence = intermediate.growAggregate(pcfCallSequence,
|
||||
handleAssign(loc, EOpAssign, element, callReturn));
|
||||
}
|
||||
}
|
||||
|
||||
// ================ Step 3: Create return Sequence ================
|
||||
// Return sequence: copy PCF result to a temporary, then to shader output variable.
|
||||
if (pcfCall->getBasicType() != EbtVoid) {
|
||||
|
@ -7581,30 +7803,31 @@ void HlslParseContext::addPatchConstantInvocation()
|
|||
if (patchConstantFunction.getDeclaredBuiltInType() != EbvNone)
|
||||
outType.getQualifier().builtIn = patchConstantFunction.getDeclaredBuiltInType();
|
||||
|
||||
outType.getQualifier().patch = true; // make it a per-patch variable
|
||||
|
||||
TVariable* pcfOutput = makeInternalVariable("@patchConstantOutput", outType);
|
||||
pcfOutput->getWritableType().getQualifier().storage = EvqVaryingOut;
|
||||
|
||||
if (pcfOutput->getType().containsBuiltInInterstageIO(language))
|
||||
split(*pcfOutput);
|
||||
|
||||
assignLocations(*pcfOutput);
|
||||
|
||||
TIntermSymbol* pcfOutputSym = intermediate.addSymbol(*pcfOutput, loc);
|
||||
|
||||
// The call to the PCF is a complex R-value: we want to store it in a temp to avoid
|
||||
// repeated calls to the PCF:
|
||||
TVariable* pcfCallResult = makeInternalVariable("@patchConstantResult", *retType);
|
||||
pcfCallResult->getWritableType().getQualifier().makeTemporary();
|
||||
TIntermSymbol* pcfResultVar = intermediate.addSymbol(*pcfCallResult, loc);
|
||||
// sanitizeType(&pcfCall->getWritableType());
|
||||
TIntermNode* pcfResultAssign = intermediate.addAssign(EOpAssign, pcfResultVar, pcfCall, loc);
|
||||
|
||||
TIntermSymbol* pcfResultVar = intermediate.addSymbol(*pcfCallResult, loc);
|
||||
TIntermNode* pcfResultAssign = handleAssign(loc, EOpAssign, pcfResultVar, pcfCall);
|
||||
TIntermNode* pcfResultToOut = handleAssign(loc, EOpAssign, pcfOutputSym, intermediate.addSymbol(*pcfCallResult, loc));
|
||||
|
||||
TIntermTyped* pcfAggregate = nullptr;
|
||||
pcfAggregate = intermediate.growAggregate(pcfAggregate, pcfResultAssign);
|
||||
pcfAggregate = intermediate.growAggregate(pcfAggregate, pcfResultToOut);
|
||||
pcfAggregate = intermediate.setAggregateOperator(pcfAggregate, EOpSequence, *retType, loc);
|
||||
|
||||
pcfCall = pcfAggregate;
|
||||
pcfCallSequence = intermediate.growAggregate(pcfCallSequence, pcfResultAssign);
|
||||
pcfCallSequence = intermediate.growAggregate(pcfCallSequence, pcfResultToOut);
|
||||
} else {
|
||||
pcfCallSequence = intermediate.growAggregate(pcfCallSequence, pcfCall);
|
||||
}
|
||||
|
||||
// ================ Step 4: Barrier ================
|
||||
|
@ -7613,12 +7836,14 @@ void HlslParseContext::addPatchConstantInvocation()
|
|||
barrier->setType(TType(EbtVoid));
|
||||
epBodySeq.insert(epBodySeq.end(), barrier);
|
||||
|
||||
// ================ Step 5: Test on invocation ID ================
|
||||
// ================ Step 5: Test on invocation ID ================
|
||||
TIntermTyped* zero = intermediate.addConstantUnion(0, loc, true);
|
||||
TIntermTyped* cmp = intermediate.addBinaryNode(EOpEqual, invocationIdSym, zero, loc, TType(EbtBool));
|
||||
|
||||
// Create if statement
|
||||
TIntermTyped* invocationIdTest = new TIntermSelection(cmp, pcfCall, nullptr);
|
||||
|
||||
// ================ Step 5B: Create if statement on Invocation ID == 0 ================
|
||||
intermediate.setAggregateOperator(pcfCallSequence, EOpSequence, TType(EbtVoid), loc);
|
||||
TIntermTyped* invocationIdTest = new TIntermSelection(cmp, pcfCallSequence, nullptr);
|
||||
invocationIdTest->setLoc(loc);
|
||||
|
||||
// add our test sequence before the return.
|
||||
|
|
|
@ -80,6 +80,7 @@ public:
|
|||
void handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype);
|
||||
TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&, const TAttributeMap&, TIntermNode*& entryPointTree);
|
||||
TIntermNode* transformEntryPoint(const TSourceLoc&, TFunction&, const TAttributeMap&);
|
||||
void handleEntryPointAttributes(const TSourceLoc&, const TAttributeMap&);
|
||||
void handleFunctionBody(const TSourceLoc&, TFunction&, TIntermNode* functionBody, TIntermNode*& node);
|
||||
void remapEntryPointIO(TFunction& function, TVariable*& returnValue, TVector<TVariable*>& inputs, TVector<TVariable*>& outputs);
|
||||
void remapNonEntryPointIO(TFunction& function);
|
||||
|
@ -101,7 +102,7 @@ public:
|
|||
const glslang::TString* component);
|
||||
void handleRegister(const TSourceLoc&, TQualifier&, const glslang::TString* profile, const glslang::TString& desc,
|
||||
int subComponent, const glslang::TString*);
|
||||
|
||||
TIntermTyped* convertConditionalExpression(const TSourceLoc&, TIntermTyped*);
|
||||
TIntermAggregate* handleSamplerTextureCombine(const TSourceLoc& loc, TIntermTyped* argTex, TIntermTyped* argSampler);
|
||||
|
||||
bool parseMatrixSwizzleSelector(const TSourceLoc&, const TString&, int cols, int rows, TSwizzleSelectors<TMatrixSelector>&);
|
||||
|
@ -120,7 +121,6 @@ public:
|
|||
void structArrayCheck(const TSourceLoc&, const TType& structure);
|
||||
void arrayDimMerge(TType& type, const TArraySizes* sizes);
|
||||
bool voidErrorCheck(const TSourceLoc&, const TString&, TBasicType);
|
||||
void boolCheck(const TSourceLoc&, const TIntermTyped*);
|
||||
void globalQualifierFix(const TSourceLoc&, TQualifier&);
|
||||
bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType);
|
||||
void mergeQualifiers(TQualifier& dst, const TQualifier& src);
|
||||
|
@ -136,10 +136,10 @@ public:
|
|||
void checkNoShaderLayouts(const TSourceLoc&, const TShaderQualifiers&);
|
||||
|
||||
const TFunction* findFunction(const TSourceLoc& loc, TFunction& call, bool& builtIn, TIntermTyped*& args);
|
||||
void declareTypedef(const TSourceLoc&, TString& identifier, const TType&);
|
||||
void declareTypedef(const TSourceLoc&, const TString& identifier, const TType&);
|
||||
void declareStruct(const TSourceLoc&, TString& structName, TType&);
|
||||
TSymbol* lookupUserType(const TString&, TType&);
|
||||
TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, TType&, TIntermTyped* initializer = 0);
|
||||
TIntermNode* declareVariable(const TSourceLoc&, const TString& identifier, TType&, TIntermTyped* initializer = 0);
|
||||
void lengthenList(const TSourceLoc&, TIntermSequence& list, int size);
|
||||
TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&);
|
||||
TIntermTyped* constructAggregate(TIntermNode*, const TType&, int, const TSourceLoc&);
|
||||
|
@ -173,13 +173,13 @@ public:
|
|||
|
||||
void pushNamespace(const TString& name);
|
||||
void popNamespace();
|
||||
TString* getFullNamespaceName(const TString& localName) const;
|
||||
void getFullNamespaceName(const TString*&) const;
|
||||
void addScopeMangler(TString&);
|
||||
|
||||
void pushSwitchSequence(TIntermSequence* sequence) { switchSequenceStack.push_back(sequence); }
|
||||
void popSwitchSequence() { switchSequenceStack.pop_back(); }
|
||||
|
||||
virtual void growGlobalUniformBlock(TSourceLoc&, TType&, TString& memberName, TTypeList* typeList = nullptr) override;
|
||||
virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr) override;
|
||||
|
||||
// Apply L-value conversions. E.g, turning a write to a RWTexture into an ImageStore.
|
||||
TIntermTyped* handleLvalue(const TSourceLoc&, const char* op, TIntermTyped* node);
|
||||
|
@ -191,7 +191,7 @@ public:
|
|||
bool handleInputGeometry(const TSourceLoc&, const TLayoutGeometry& geometry);
|
||||
|
||||
// Potentially rename shader entry point function
|
||||
void renameShaderFunction(TString*& name) const;
|
||||
void renameShaderFunction(const TString*& name) const;
|
||||
|
||||
// Reset data for incrementally built referencing of flattened composite structures
|
||||
void initFlattening() { flattenLevel.push_back(0); flattenOffset.push_back(0); }
|
||||
|
@ -210,14 +210,14 @@ protected:
|
|||
int nextBinding; // next binding to use.
|
||||
};
|
||||
|
||||
void fixConstInit(const TSourceLoc&, TString& identifier, TType& type, TIntermTyped*& initializer);
|
||||
void fixConstInit(const TSourceLoc&, const TString& identifier, TType& type, TIntermTyped*& initializer);
|
||||
void inheritGlobalDefaults(TQualifier& dst) const;
|
||||
TVariable* makeInternalVariable(const char* name, const TType&) const;
|
||||
TVariable* makeInternalVariable(const TString& name, const TType& type) const {
|
||||
return makeInternalVariable(name.c_str(), type);
|
||||
}
|
||||
TVariable* declareNonArray(const TSourceLoc&, TString& identifier, TType&, bool track);
|
||||
void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&, bool track);
|
||||
TVariable* declareNonArray(const TSourceLoc&, const TString& identifier, const TType&, bool track);
|
||||
void declareArray(const TSourceLoc&, const TString& identifier, const TType&, TSymbol*&, bool track);
|
||||
TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable);
|
||||
TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer);
|
||||
bool isZeroConstructor(const TIntermNode*);
|
||||
|
@ -248,6 +248,8 @@ protected:
|
|||
void addInterstageIoToLinkage();
|
||||
void addPatchConstantInvocation();
|
||||
|
||||
void fixBuiltInArrayType(TType&);
|
||||
|
||||
void flatten(const TSourceLoc& loc, const TVariable& variable);
|
||||
int flatten(const TSourceLoc& loc, const TVariable& variable, const TType&, TFlattenData&, TString name);
|
||||
int flattenStruct(const TSourceLoc& loc, const TVariable& variable, const TType&, TFlattenData&, TString name);
|
||||
|
@ -281,6 +283,9 @@ protected:
|
|||
|
||||
void finish() override; // post-processing
|
||||
|
||||
// Linkage symbol helpers
|
||||
TIntermSymbol* findLinkageSymbol(TBuiltInVariable biType) const;
|
||||
|
||||
// Current state of parsing
|
||||
struct TPragma contextPragma;
|
||||
int loopNestingLevel; // 0 if outside all loops
|
||||
|
|
|
@ -359,7 +359,7 @@ inline bool IsValid(const char* cname, char retOrder, char retType, char argOrde
|
|||
const std::string name(cname);
|
||||
|
||||
// these do not have vec1 versions
|
||||
if (dim0 == 1 && (name == "length" || name == "normalize" || name == "reflect" || name == "refract"))
|
||||
if (dim0 == 1 && (name == "normalize" || name == "reflect" || name == "refract"))
|
||||
return false;
|
||||
|
||||
if (!IsTextureType(argOrder) && (isVec && dim0 == 1)) // avoid vec1
|
||||
|
@ -625,7 +625,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
|
|||
{ "isinf", nullptr, "B" , "SVM", "F", EShLangAll, false },
|
||||
{ "isnan", nullptr, "B" , "SVM", "F", EShLangAll, false },
|
||||
{ "ldexp", nullptr, nullptr, "SVM,", "F,", EShLangAll, false },
|
||||
{ "length", "S", "F", "V", "F", EShLangAll, false },
|
||||
{ "length", "S", "F", "SV", "F", EShLangAll, false },
|
||||
{ "lerp", nullptr, nullptr, "VM,,", "F,,", EShLangAll, false },
|
||||
{ "lerp", nullptr, nullptr, "SVM,,S", "F,,", EShLangAll, false },
|
||||
{ "lit", "V4", "F", "S,,", "F,,", EShLangAll, false },
|
||||
|
|
|
@ -334,6 +334,7 @@ void HlslScanContext::fillInKeywordMap()
|
|||
(*KeywordMap)["tbuffer"] = EHTokTBuffer;
|
||||
(*KeywordMap)["typedef"] = EHTokTypedef;
|
||||
(*KeywordMap)["this"] = EHTokThis;
|
||||
(*KeywordMap)["namespace"] = EHTokNamespace;
|
||||
|
||||
(*KeywordMap)["true"] = EHTokBoolConstant;
|
||||
(*KeywordMap)["false"] = EHTokBoolConstant;
|
||||
|
@ -828,6 +829,7 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier()
|
|||
case EHTokCBuffer:
|
||||
case EHTokTBuffer:
|
||||
case EHTokThis:
|
||||
case EHTokNamespace:
|
||||
return keyword;
|
||||
|
||||
case EHTokBoolConstant:
|
||||
|
|
|
@ -274,6 +274,7 @@ enum EHlslTokenClass {
|
|||
EHTokTBuffer,
|
||||
EHTokTypedef,
|
||||
EHTokThis,
|
||||
EHTokNamespace,
|
||||
|
||||
// constant
|
||||
EHTokFloatConstant,
|
||||
|
|
Loading…
Reference in New Issue