mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 11:30:06 +00:00
SPV: Create more access chains addressing a few swizzling issues.
- Fixes #1233 - Treats local bools like anything else - more consistently deals with a dynamic component selection
This commit is contained in:
parent
2651ccaec8
commit
5c3eed542d
@ -1388,16 +1388,13 @@ Id Builder::createLvalueSwizzle(Id typeId, Id target, Id source, const std::vect
|
||||
return createCompositeInsert(source, target, typeId, channels.front());
|
||||
|
||||
Instruction* swizzle = new Instruction(getUniqueId(), typeId, OpVectorShuffle);
|
||||
|
||||
assert(isVector(target));
|
||||
swizzle->addIdOperand(target);
|
||||
if (accessChain.component != NoResult)
|
||||
// For dynamic component selection, source does not involve in l-value swizzle
|
||||
swizzle->addIdOperand(target);
|
||||
else {
|
||||
assert(getNumComponents(source) == (int)channels.size());
|
||||
assert(isVector(source));
|
||||
swizzle->addIdOperand(source);
|
||||
}
|
||||
|
||||
assert(getNumComponents(source) == (int)channels.size());
|
||||
assert(isVector(source));
|
||||
swizzle->addIdOperand(source);
|
||||
|
||||
// Set up an identity shuffle from the base value to the result value
|
||||
unsigned int components[4];
|
||||
@ -1406,12 +1403,8 @@ Id Builder::createLvalueSwizzle(Id typeId, Id target, Id source, const std::vect
|
||||
components[i] = i;
|
||||
|
||||
// Punch in the l-value swizzle
|
||||
for (int i = 0; i < (int)channels.size(); ++i) {
|
||||
if (accessChain.component != NoResult)
|
||||
components[i] = channels[i]; // Only shuffle the base value
|
||||
else
|
||||
components[channels[i]] = numTargetComponents + i;
|
||||
}
|
||||
for (int i = 0; i < (int)channels.size(); ++i)
|
||||
components[channels[i]] = numTargetComponents + i;
|
||||
|
||||
// finish the instruction with these components selectors
|
||||
for (int i = 0; i < numTargetComponents; ++i)
|
||||
@ -2203,7 +2196,7 @@ void Builder::accessChainPushSwizzle(std::vector<unsigned>& swizzle, Id preSwizz
|
||||
accessChain.preSwizzleBaseType = preSwizzleBaseType;
|
||||
|
||||
// if needed, propagate the swizzle for the current access chain
|
||||
if (accessChain.swizzle.size()) {
|
||||
if (accessChain.swizzle.size() > 0) {
|
||||
std::vector<unsigned> oldSwizzle = accessChain.swizzle;
|
||||
accessChain.swizzle.resize(0);
|
||||
for (unsigned int i = 0; i < swizzle.size(); ++i) {
|
||||
@ -2224,24 +2217,18 @@ void Builder::accessChainStore(Id rvalue)
|
||||
|
||||
transferAccessChainSwizzle(true);
|
||||
Id base = collapseAccessChain();
|
||||
Id source = rvalue;
|
||||
|
||||
// dynamic component should be gone
|
||||
assert(accessChain.component == NoResult);
|
||||
|
||||
// If swizzle still exists, it is out-of-order or not full, we must load the target vector,
|
||||
// extract and insert elements to perform writeMask and/or swizzle.
|
||||
Id source = NoResult;
|
||||
if (accessChain.swizzle.size()) {
|
||||
if (accessChain.swizzle.size() > 0) {
|
||||
Id tempBaseId = createLoad(base);
|
||||
source = createLvalueSwizzle(getTypeId(tempBaseId), tempBaseId, rvalue, accessChain.swizzle);
|
||||
source = createLvalueSwizzle(getTypeId(tempBaseId), tempBaseId, source, accessChain.swizzle);
|
||||
}
|
||||
|
||||
// dynamic component selection
|
||||
if (accessChain.component != NoResult) {
|
||||
Id tempBaseId = (source == NoResult) ? createLoad(base) : source;
|
||||
source = createVectorInsertDynamic(tempBaseId, getTypeId(tempBaseId), rvalue, accessChain.component);
|
||||
}
|
||||
|
||||
if (source == NoResult)
|
||||
source = rvalue;
|
||||
|
||||
createStore(source, base);
|
||||
}
|
||||
|
||||
@ -2251,7 +2238,7 @@ Id Builder::accessChainLoad(Decoration precision, Id resultType)
|
||||
Id id;
|
||||
|
||||
if (accessChain.isRValue) {
|
||||
// transfer access chain, but keep it static, so we can stay in registers
|
||||
// transfer access chain, but try to stay in registers
|
||||
transferAccessChainSwizzle(false);
|
||||
if (accessChain.indexChain.size() > 0) {
|
||||
Id swizzleBase = accessChain.preSwizzleBaseType != NoType ? accessChain.preSwizzleBaseType : resultType;
|
||||
@ -2299,16 +2286,16 @@ Id Builder::accessChainLoad(Decoration precision, Id resultType)
|
||||
return id;
|
||||
|
||||
// Do remaining swizzling
|
||||
// First, static swizzling
|
||||
if (accessChain.swizzle.size()) {
|
||||
// static swizzle
|
||||
|
||||
// Do the basic swizzle
|
||||
if (accessChain.swizzle.size() > 0) {
|
||||
Id swizzledType = getScalarTypeId(getTypeId(id));
|
||||
if (accessChain.swizzle.size() > 1)
|
||||
swizzledType = makeVectorType(swizzledType, (int)accessChain.swizzle.size());
|
||||
id = createRvalueSwizzle(precision, swizzledType, id, accessChain.swizzle);
|
||||
}
|
||||
|
||||
// dynamic single-component selection
|
||||
// Do the dynamic component
|
||||
if (accessChain.component != NoResult)
|
||||
id = setPrecision(createVectorExtractDynamic(id, resultType, accessChain.component), precision);
|
||||
|
||||
@ -2458,26 +2445,66 @@ void Builder::dump(std::vector<unsigned int>& out) const
|
||||
// Protected methods.
|
||||
//
|
||||
|
||||
// Turn the described access chain in 'accessChain' into an instruction
|
||||
// Turn the described access chain in 'accessChain' into an instruction(s)
|
||||
// computing its address. This *cannot* include complex swizzles, which must
|
||||
// be handled after this is called, but it does include swizzles that select
|
||||
// an individual element, as a single address of a scalar type can be
|
||||
// computed by an OpAccessChain instruction.
|
||||
// be handled after this is called.
|
||||
//
|
||||
// Can generate code.
|
||||
Id Builder::collapseAccessChain()
|
||||
{
|
||||
assert(accessChain.isRValue == false);
|
||||
|
||||
if (accessChain.indexChain.size() > 0) {
|
||||
if (accessChain.instr == 0) {
|
||||
StorageClass storageClass = (StorageClass)module.getStorageClass(getTypeId(accessChain.base));
|
||||
accessChain.instr = createAccessChain(storageClass, accessChain.base, accessChain.indexChain);
|
||||
}
|
||||
|
||||
// did we already emit an access chain for this?
|
||||
if (accessChain.instr != NoResult)
|
||||
return accessChain.instr;
|
||||
} else
|
||||
|
||||
// If we have a dynamic component, we can still transfer
|
||||
// that into a final operand to the access chain. We need to remap the
|
||||
// dynamic component through the swizzle to get a new dynamic component to
|
||||
// update.
|
||||
//
|
||||
// This was not done in transferAccessChainSwizzle() because it might
|
||||
// generate code.
|
||||
remapDynamicSwizzle();
|
||||
if (accessChain.component != NoResult) {
|
||||
// transfer the dynamic component to the access chain
|
||||
accessChain.indexChain.push_back(accessChain.component);
|
||||
accessChain.component = NoResult;
|
||||
}
|
||||
|
||||
// note that non-trivial swizzling is left pending
|
||||
|
||||
// do we have an access chain?
|
||||
if (accessChain.indexChain.size() == 0)
|
||||
return accessChain.base;
|
||||
|
||||
// note that non-trivial swizzling is left pending...
|
||||
// emit the access chain
|
||||
StorageClass storageClass = (StorageClass)module.getStorageClass(getTypeId(accessChain.base));
|
||||
accessChain.instr = createAccessChain(storageClass, accessChain.base, accessChain.indexChain);
|
||||
|
||||
return accessChain.instr;
|
||||
}
|
||||
|
||||
// For a dynamic component selection of a swizzle.
|
||||
//
|
||||
// Turn the swizzle and dynamic component into just a dynamic component.
|
||||
//
|
||||
// Generates code.
|
||||
void Builder::remapDynamicSwizzle()
|
||||
{
|
||||
// do we have a swizzle to remap a dynamic component through?
|
||||
if (accessChain.component != NoResult && accessChain.swizzle.size() > 1) {
|
||||
// build a vector of the swizzle for the component to map into
|
||||
std::vector<Id> components;
|
||||
for (int c = 0; c < accessChain.swizzle.size(); ++c)
|
||||
components.push_back(makeUintConstant(accessChain.swizzle[c]));
|
||||
Id mapType = makeVectorType(makeUintType(32), (int)accessChain.swizzle.size());
|
||||
Id map = makeCompositeConstant(mapType, components);
|
||||
|
||||
// use it
|
||||
accessChain.component = createVectorExtractDynamic(map, makeUintType(32), accessChain.component);
|
||||
accessChain.swizzle.clear();
|
||||
}
|
||||
}
|
||||
|
||||
// clear out swizzle if it is redundant, that is reselecting the same components
|
||||
@ -2503,38 +2530,30 @@ void Builder::simplifyAccessChainSwizzle()
|
||||
|
||||
// To the extent any swizzling can become part of the chain
|
||||
// of accesses instead of a post operation, make it so.
|
||||
// If 'dynamic' is true, include transferring a non-static component index,
|
||||
// otherwise, only transfer static indexes.
|
||||
// If 'dynamic' is true, include transferring the dynamic component,
|
||||
// otherwise, leave it pending.
|
||||
//
|
||||
// Also, Boolean vectors are likely to be special. While
|
||||
// for external storage, they should only be integer types,
|
||||
// function-local bool vectors could use sub-word indexing,
|
||||
// so keep that as a separate Insert/Extract on a loaded vector.
|
||||
// Does not generate code. just updates the access chain.
|
||||
void Builder::transferAccessChainSwizzle(bool dynamic)
|
||||
{
|
||||
// too complex?
|
||||
if (accessChain.swizzle.size() > 1)
|
||||
return;
|
||||
|
||||
// non existent?
|
||||
if (accessChain.swizzle.size() == 0 && accessChain.component == NoResult)
|
||||
return;
|
||||
|
||||
// single component...
|
||||
|
||||
// skip doing it for Boolean vectors
|
||||
if (isBoolType(getContainedTypeId(accessChain.preSwizzleBaseType)))
|
||||
// too complex?
|
||||
// (this requires either a swizzle, or generating code for a dynamic component)
|
||||
if (accessChain.swizzle.size() > 1)
|
||||
return;
|
||||
|
||||
// single component, either in the swizzle and/or dynamic component
|
||||
if (accessChain.swizzle.size() == 1) {
|
||||
// handle static component
|
||||
assert(accessChain.component == NoResult);
|
||||
// handle static component selection
|
||||
accessChain.indexChain.push_back(makeUintConstant(accessChain.swizzle.front()));
|
||||
accessChain.swizzle.clear();
|
||||
// note, the only valid remaining dynamic access would be to this one
|
||||
// component, so don't bother even looking at accessChain.component
|
||||
accessChain.preSwizzleBaseType = NoType;
|
||||
accessChain.component = NoResult;
|
||||
} else if (dynamic && accessChain.component != NoResult) {
|
||||
assert(accessChain.swizzle.size() == 0);
|
||||
// handle dynamic component
|
||||
accessChain.indexChain.push_back(accessChain.component);
|
||||
accessChain.preSwizzleBaseType = NoType;
|
||||
|
@ -533,12 +533,15 @@ public:
|
||||
// push new swizzle onto the end of any existing swizzle, merging into a single swizzle
|
||||
void accessChainPushSwizzle(std::vector<unsigned>& swizzle, Id preSwizzleBaseType);
|
||||
|
||||
// push a variable component selection onto the access chain; supporting only one, so unsided
|
||||
// push a dynamic component selection onto the access chain, only applicable with a
|
||||
// non-trivial swizzle or no swizzle
|
||||
void accessChainPushComponent(Id component, Id preSwizzleBaseType)
|
||||
{
|
||||
accessChain.component = component;
|
||||
if (accessChain.preSwizzleBaseType == NoType)
|
||||
accessChain.preSwizzleBaseType = preSwizzleBaseType;
|
||||
if (accessChain.swizzle.size() != 1) {
|
||||
accessChain.component = component;
|
||||
if (accessChain.preSwizzleBaseType == NoType)
|
||||
accessChain.preSwizzleBaseType = preSwizzleBaseType;
|
||||
}
|
||||
}
|
||||
|
||||
// use accessChain and swizzle to store value
|
||||
@ -577,6 +580,7 @@ public:
|
||||
Id findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned v1, unsigned v2) const;
|
||||
Id findCompositeConstant(Op typeClass, const std::vector<Id>& comps) const;
|
||||
Id collapseAccessChain();
|
||||
void remapDynamicSwizzle();
|
||||
void transferAccessChainSwizzle(bool dynamic);
|
||||
void simplifyAccessChainSwizzle();
|
||||
void createAndSetNoPredecessorBlock(const char*);
|
||||
|
@ -1368,18 +1368,18 @@ spv.400.frag
|
||||
997: 10(float) Select 995 996 21
|
||||
998: 39(float) FConvert 997
|
||||
999: 39(float) FAdd 994 998
|
||||
1000: 437(bvec2) Load 439(bvec2v)
|
||||
1001: 428(bool) CompositeExtract 1000 0
|
||||
1000: 429(ptr) AccessChain 439(bvec2v) 33
|
||||
1001: 428(bool) Load 1000
|
||||
1002: 10(float) Select 1001 996 21
|
||||
1003: 39(float) FConvert 1002
|
||||
1004: 39(float) FAdd 999 1003
|
||||
1005: 446(bvec3) Load 448(bvec3v)
|
||||
1006: 428(bool) CompositeExtract 1005 0
|
||||
1005: 429(ptr) AccessChain 448(bvec3v) 33
|
||||
1006: 428(bool) Load 1005
|
||||
1007: 10(float) Select 1006 996 21
|
||||
1008: 39(float) FConvert 1007
|
||||
1009: 39(float) FAdd 1004 1008
|
||||
1010: 455(bvec4) Load 457(bvec4v)
|
||||
1011: 428(bool) CompositeExtract 1010 0
|
||||
1010: 429(ptr) AccessChain 457(bvec4v) 33
|
||||
1011: 428(bool) Load 1010
|
||||
1012: 10(float) Select 1011 996 21
|
||||
1013: 39(float) FConvert 1012
|
||||
1014: 39(float) FAdd 1009 1013
|
||||
|
@ -1,12 +1,12 @@
|
||||
spv.accessChain.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80003
|
||||
// Id's are bound by 206
|
||||
// Id's are bound by 222
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 65 158
|
||||
EntryPoint Fragment 4 "main" 69 170
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 420
|
||||
Name 4 "main"
|
||||
@ -50,12 +50,12 @@ spv.accessChain.frag
|
||||
Name 62 "GetColor13(struct-S-vf31;i1;"
|
||||
Name 60 "i"
|
||||
Name 61 "comp"
|
||||
Name 65 "OutColor"
|
||||
Name 153 "s"
|
||||
Name 158 "u"
|
||||
Name 159 "param"
|
||||
Name 163 "param"
|
||||
Name 167 "param"
|
||||
Name 66 "GetColor14(struct-S-vf31;i1;"
|
||||
Name 64 "i"
|
||||
Name 65 "comp"
|
||||
Name 69 "OutColor"
|
||||
Name 165 "s"
|
||||
Name 170 "u"
|
||||
Name 171 "param"
|
||||
Name 175 "param"
|
||||
Name 179 "param"
|
||||
@ -65,8 +65,12 @@ spv.accessChain.frag
|
||||
Name 195 "param"
|
||||
Name 199 "param"
|
||||
Name 203 "param"
|
||||
Decorate 65(OutColor) Location 0
|
||||
Decorate 158(u) Flat
|
||||
Name 207 "param"
|
||||
Name 211 "param"
|
||||
Name 215 "param"
|
||||
Name 219 "param"
|
||||
Decorate 69(OutColor) Location 0
|
||||
Decorate 170(u) Flat
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
@ -76,25 +80,27 @@ spv.accessChain.frag
|
||||
13: TypeInt 32 1
|
||||
14: TypePointer Function 13(int)
|
||||
15: TypeFunction 2 8(S) 14(ptr)
|
||||
64: TypePointer Output 7(fvec3)
|
||||
65(OutColor): 64(ptr) Variable Output
|
||||
66: 13(int) Constant 0
|
||||
67: TypeInt 32 0
|
||||
68: 67(int) Constant 0
|
||||
95: TypeVector 6(float) 2
|
||||
109: 67(int) Constant 2
|
||||
136: TypePointer Output 6(float)
|
||||
150: 6(float) Constant 0
|
||||
151: 7(fvec3) ConstantComposite 150 150 150
|
||||
152: TypePointer Function 8(S)
|
||||
157: TypePointer Input 13(int)
|
||||
158(u): 157(ptr) Variable Input
|
||||
68: TypePointer Output 7(fvec3)
|
||||
69(OutColor): 68(ptr) Variable Output
|
||||
70: 13(int) Constant 0
|
||||
71: TypeInt 32 0
|
||||
72: 71(int) Constant 0
|
||||
99: TypeVector 6(float) 2
|
||||
113: 71(int) Constant 2
|
||||
140: TypePointer Output 6(float)
|
||||
147: 71(int) Constant 1
|
||||
148: TypeVector 71(int) 2
|
||||
149: 148(ivec2) ConstantComposite 113 147
|
||||
158: TypeVector 71(int) 3
|
||||
159: 158(ivec3) ConstantComposite 113 147 72
|
||||
162: 6(float) Constant 0
|
||||
163: 7(fvec3) ConstantComposite 162 162 162
|
||||
164: TypePointer Function 8(S)
|
||||
169: TypePointer Input 13(int)
|
||||
170(u): 169(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
153(s): 152(ptr) Variable Function
|
||||
159(param): 14(ptr) Variable Function
|
||||
163(param): 14(ptr) Variable Function
|
||||
167(param): 14(ptr) Variable Function
|
||||
165(s): 164(ptr) Variable Function
|
||||
171(param): 14(ptr) Variable Function
|
||||
175(param): 14(ptr) Variable Function
|
||||
179(param): 14(ptr) Variable Function
|
||||
@ -104,224 +110,242 @@ spv.accessChain.frag
|
||||
195(param): 14(ptr) Variable Function
|
||||
199(param): 14(ptr) Variable Function
|
||||
203(param): 14(ptr) Variable Function
|
||||
Store 65(OutColor) 151
|
||||
154: 8(S) Load 153(s)
|
||||
155: 2 FunctionCall 11(GetColor1(struct-S-vf31;) 154
|
||||
156: 8(S) Load 153(s)
|
||||
160: 13(int) Load 158(u)
|
||||
Store 159(param) 160
|
||||
161: 2 FunctionCall 18(GetColor2(struct-S-vf31;i1;) 156 159(param)
|
||||
162: 8(S) Load 153(s)
|
||||
164: 13(int) Load 158(u)
|
||||
Store 163(param) 164
|
||||
165: 2 FunctionCall 22(GetColor3(struct-S-vf31;i1;) 162 163(param)
|
||||
166: 8(S) Load 153(s)
|
||||
168: 13(int) Load 158(u)
|
||||
Store 167(param) 168
|
||||
169: 2 FunctionCall 26(GetColor4(struct-S-vf31;i1;) 166 167(param)
|
||||
170: 8(S) Load 153(s)
|
||||
172: 13(int) Load 158(u)
|
||||
207(param): 14(ptr) Variable Function
|
||||
211(param): 14(ptr) Variable Function
|
||||
215(param): 14(ptr) Variable Function
|
||||
219(param): 14(ptr) Variable Function
|
||||
Store 69(OutColor) 163
|
||||
166: 8(S) Load 165(s)
|
||||
167: 2 FunctionCall 11(GetColor1(struct-S-vf31;) 166
|
||||
168: 8(S) Load 165(s)
|
||||
172: 13(int) Load 170(u)
|
||||
Store 171(param) 172
|
||||
173: 2 FunctionCall 30(GetColor5(struct-S-vf31;i1;) 170 171(param)
|
||||
174: 8(S) Load 153(s)
|
||||
176: 13(int) Load 158(u)
|
||||
173: 2 FunctionCall 18(GetColor2(struct-S-vf31;i1;) 168 171(param)
|
||||
174: 8(S) Load 165(s)
|
||||
176: 13(int) Load 170(u)
|
||||
Store 175(param) 176
|
||||
177: 2 FunctionCall 34(GetColor6(struct-S-vf31;i1;) 174 175(param)
|
||||
178: 8(S) Load 153(s)
|
||||
180: 13(int) Load 158(u)
|
||||
177: 2 FunctionCall 22(GetColor3(struct-S-vf31;i1;) 174 175(param)
|
||||
178: 8(S) Load 165(s)
|
||||
180: 13(int) Load 170(u)
|
||||
Store 179(param) 180
|
||||
181: 2 FunctionCall 38(GetColor7(struct-S-vf31;i1;) 178 179(param)
|
||||
182: 8(S) Load 153(s)
|
||||
184: 13(int) Load 158(u)
|
||||
181: 2 FunctionCall 26(GetColor4(struct-S-vf31;i1;) 178 179(param)
|
||||
182: 8(S) Load 165(s)
|
||||
184: 13(int) Load 170(u)
|
||||
Store 183(param) 184
|
||||
185: 2 FunctionCall 42(GetColor8(struct-S-vf31;i1;) 182 183(param)
|
||||
186: 8(S) Load 153(s)
|
||||
188: 13(int) Load 158(u)
|
||||
185: 2 FunctionCall 30(GetColor5(struct-S-vf31;i1;) 182 183(param)
|
||||
186: 8(S) Load 165(s)
|
||||
188: 13(int) Load 170(u)
|
||||
Store 187(param) 188
|
||||
189: 2 FunctionCall 46(GetColor9(struct-S-vf31;i1;) 186 187(param)
|
||||
190: 8(S) Load 153(s)
|
||||
192: 13(int) Load 158(u)
|
||||
189: 2 FunctionCall 34(GetColor6(struct-S-vf31;i1;) 186 187(param)
|
||||
190: 8(S) Load 165(s)
|
||||
192: 13(int) Load 170(u)
|
||||
Store 191(param) 192
|
||||
193: 2 FunctionCall 50(GetColor10(struct-S-vf31;i1;) 190 191(param)
|
||||
194: 8(S) Load 153(s)
|
||||
196: 13(int) Load 158(u)
|
||||
193: 2 FunctionCall 38(GetColor7(struct-S-vf31;i1;) 190 191(param)
|
||||
194: 8(S) Load 165(s)
|
||||
196: 13(int) Load 170(u)
|
||||
Store 195(param) 196
|
||||
197: 2 FunctionCall 54(GetColor11(struct-S-vf31;i1;) 194 195(param)
|
||||
198: 8(S) Load 153(s)
|
||||
200: 13(int) Load 158(u)
|
||||
197: 2 FunctionCall 42(GetColor8(struct-S-vf31;i1;) 194 195(param)
|
||||
198: 8(S) Load 165(s)
|
||||
200: 13(int) Load 170(u)
|
||||
Store 199(param) 200
|
||||
201: 2 FunctionCall 58(GetColor12(struct-S-vf31;i1;) 198 199(param)
|
||||
202: 8(S) Load 153(s)
|
||||
204: 13(int) Load 158(u)
|
||||
201: 2 FunctionCall 46(GetColor9(struct-S-vf31;i1;) 198 199(param)
|
||||
202: 8(S) Load 165(s)
|
||||
204: 13(int) Load 170(u)
|
||||
Store 203(param) 204
|
||||
205: 2 FunctionCall 62(GetColor13(struct-S-vf31;i1;) 202 203(param)
|
||||
205: 2 FunctionCall 50(GetColor10(struct-S-vf31;i1;) 202 203(param)
|
||||
206: 8(S) Load 165(s)
|
||||
208: 13(int) Load 170(u)
|
||||
Store 207(param) 208
|
||||
209: 2 FunctionCall 54(GetColor11(struct-S-vf31;i1;) 206 207(param)
|
||||
210: 8(S) Load 165(s)
|
||||
212: 13(int) Load 170(u)
|
||||
Store 211(param) 212
|
||||
213: 2 FunctionCall 58(GetColor12(struct-S-vf31;i1;) 210 211(param)
|
||||
214: 8(S) Load 165(s)
|
||||
216: 13(int) Load 170(u)
|
||||
Store 215(param) 216
|
||||
217: 2 FunctionCall 62(GetColor13(struct-S-vf31;i1;) 214 215(param)
|
||||
218: 8(S) Load 165(s)
|
||||
220: 13(int) Load 170(u)
|
||||
Store 219(param) 220
|
||||
221: 2 FunctionCall 66(GetColor14(struct-S-vf31;i1;) 218 219(param)
|
||||
Return
|
||||
FunctionEnd
|
||||
11(GetColor1(struct-S-vf31;): 2 Function None 9
|
||||
10(i): 8(S) FunctionParameter
|
||||
12: Label
|
||||
69: 6(float) CompositeExtract 10(i) 0 0
|
||||
70: 7(fvec3) Load 65(OutColor)
|
||||
71: 7(fvec3) CompositeConstruct 69 69 69
|
||||
72: 7(fvec3) FAdd 70 71
|
||||
Store 65(OutColor) 72
|
||||
73: 6(float) CompositeExtract 10(i) 0 0
|
||||
74: 7(fvec3) Load 69(OutColor)
|
||||
75: 7(fvec3) CompositeConstruct 73 73 73
|
||||
76: 7(fvec3) FAdd 74 75
|
||||
Store 69(OutColor) 76
|
||||
Return
|
||||
FunctionEnd
|
||||
18(GetColor2(struct-S-vf31;i1;): 2 Function None 15
|
||||
16(i): 8(S) FunctionParameter
|
||||
17(comp): 14(ptr) FunctionParameter
|
||||
19: Label
|
||||
73: 13(int) Load 17(comp)
|
||||
74: 7(fvec3) CompositeExtract 16(i) 0
|
||||
75: 6(float) VectorExtractDynamic 74 73
|
||||
76: 7(fvec3) Load 65(OutColor)
|
||||
77: 7(fvec3) CompositeConstruct 75 75 75
|
||||
78: 7(fvec3) FAdd 76 77
|
||||
Store 65(OutColor) 78
|
||||
77: 13(int) Load 17(comp)
|
||||
78: 7(fvec3) CompositeExtract 16(i) 0
|
||||
79: 6(float) VectorExtractDynamic 78 77
|
||||
80: 7(fvec3) Load 69(OutColor)
|
||||
81: 7(fvec3) CompositeConstruct 79 79 79
|
||||
82: 7(fvec3) FAdd 80 81
|
||||
Store 69(OutColor) 82
|
||||
Return
|
||||
FunctionEnd
|
||||
22(GetColor3(struct-S-vf31;i1;): 2 Function None 15
|
||||
20(i): 8(S) FunctionParameter
|
||||
21(comp): 14(ptr) FunctionParameter
|
||||
23: Label
|
||||
79: 13(int) Load 21(comp)
|
||||
80: 7(fvec3) CompositeExtract 20(i) 0
|
||||
81: 6(float) VectorExtractDynamic 80 79
|
||||
82: 7(fvec3) Load 65(OutColor)
|
||||
83: 7(fvec3) CompositeConstruct 81 81 81
|
||||
84: 7(fvec3) FAdd 82 83
|
||||
Store 65(OutColor) 84
|
||||
83: 13(int) Load 21(comp)
|
||||
84: 7(fvec3) CompositeExtract 20(i) 0
|
||||
85: 6(float) VectorExtractDynamic 84 83
|
||||
86: 7(fvec3) Load 69(OutColor)
|
||||
87: 7(fvec3) CompositeConstruct 85 85 85
|
||||
88: 7(fvec3) FAdd 86 87
|
||||
Store 69(OutColor) 88
|
||||
Return
|
||||
FunctionEnd
|
||||
26(GetColor4(struct-S-vf31;i1;): 2 Function None 15
|
||||
24(i): 8(S) FunctionParameter
|
||||
25(comp): 14(ptr) FunctionParameter
|
||||
27: Label
|
||||
85: 13(int) Load 25(comp)
|
||||
86: 7(fvec3) CompositeExtract 24(i) 0
|
||||
87: 6(float) VectorExtractDynamic 86 85
|
||||
88: 7(fvec3) Load 65(OutColor)
|
||||
89: 7(fvec3) CompositeConstruct 87 87 87
|
||||
90: 7(fvec3) FAdd 88 89
|
||||
Store 65(OutColor) 90
|
||||
89: 13(int) Load 25(comp)
|
||||
90: 7(fvec3) CompositeExtract 24(i) 0
|
||||
91: 6(float) VectorExtractDynamic 90 89
|
||||
92: 7(fvec3) Load 69(OutColor)
|
||||
93: 7(fvec3) CompositeConstruct 91 91 91
|
||||
94: 7(fvec3) FAdd 92 93
|
||||
Store 69(OutColor) 94
|
||||
Return
|
||||
FunctionEnd
|
||||
30(GetColor5(struct-S-vf31;i1;): 2 Function None 15
|
||||
28(i): 8(S) FunctionParameter
|
||||
29(comp): 14(ptr) FunctionParameter
|
||||
31: Label
|
||||
91: 7(fvec3) CompositeExtract 28(i) 0
|
||||
92: 7(fvec3) Load 65(OutColor)
|
||||
93: 7(fvec3) FAdd 92 91
|
||||
Store 65(OutColor) 93
|
||||
95: 7(fvec3) CompositeExtract 28(i) 0
|
||||
96: 7(fvec3) Load 69(OutColor)
|
||||
97: 7(fvec3) FAdd 96 95
|
||||
Store 69(OutColor) 97
|
||||
Return
|
||||
FunctionEnd
|
||||
34(GetColor6(struct-S-vf31;i1;): 2 Function None 15
|
||||
32(i): 8(S) FunctionParameter
|
||||
33(comp): 14(ptr) FunctionParameter
|
||||
35: Label
|
||||
94: 13(int) Load 33(comp)
|
||||
96: 7(fvec3) CompositeExtract 32(i) 0
|
||||
97: 95(fvec2) VectorShuffle 96 96 1 0
|
||||
98: 6(float) VectorExtractDynamic 97 94
|
||||
99: 7(fvec3) Load 65(OutColor)
|
||||
100: 7(fvec3) CompositeConstruct 98 98 98
|
||||
101: 7(fvec3) FAdd 99 100
|
||||
Store 65(OutColor) 101
|
||||
98: 13(int) Load 33(comp)
|
||||
100: 7(fvec3) CompositeExtract 32(i) 0
|
||||
101: 99(fvec2) VectorShuffle 100 100 1 0
|
||||
102: 6(float) VectorExtractDynamic 101 98
|
||||
103: 7(fvec3) Load 69(OutColor)
|
||||
104: 7(fvec3) CompositeConstruct 102 102 102
|
||||
105: 7(fvec3) FAdd 103 104
|
||||
Store 69(OutColor) 105
|
||||
Return
|
||||
FunctionEnd
|
||||
38(GetColor7(struct-S-vf31;i1;): 2 Function None 15
|
||||
36(i): 8(S) FunctionParameter
|
||||
37(comp): 14(ptr) FunctionParameter
|
||||
39: Label
|
||||
102: 7(fvec3) CompositeExtract 36(i) 0
|
||||
103: 95(fvec2) VectorShuffle 102 102 0 1
|
||||
104: 7(fvec3) Load 65(OutColor)
|
||||
105: 95(fvec2) VectorShuffle 104 104 0 1
|
||||
106: 95(fvec2) FAdd 105 103
|
||||
107: 7(fvec3) Load 65(OutColor)
|
||||
108: 7(fvec3) VectorShuffle 107 106 3 4 2
|
||||
Store 65(OutColor) 108
|
||||
106: 7(fvec3) CompositeExtract 36(i) 0
|
||||
107: 99(fvec2) VectorShuffle 106 106 0 1
|
||||
108: 7(fvec3) Load 69(OutColor)
|
||||
109: 99(fvec2) VectorShuffle 108 108 0 1
|
||||
110: 99(fvec2) FAdd 109 107
|
||||
111: 7(fvec3) Load 69(OutColor)
|
||||
112: 7(fvec3) VectorShuffle 111 110 3 4 2
|
||||
Store 69(OutColor) 112
|
||||
Return
|
||||
FunctionEnd
|
||||
42(GetColor8(struct-S-vf31;i1;): 2 Function None 15
|
||||
40(i): 8(S) FunctionParameter
|
||||
41(comp): 14(ptr) FunctionParameter
|
||||
43: Label
|
||||
110: 6(float) CompositeExtract 40(i) 0 2
|
||||
111: 7(fvec3) Load 65(OutColor)
|
||||
112: 7(fvec3) CompositeConstruct 110 110 110
|
||||
113: 7(fvec3) FAdd 111 112
|
||||
Store 65(OutColor) 113
|
||||
114: 6(float) CompositeExtract 40(i) 0 2
|
||||
115: 7(fvec3) Load 69(OutColor)
|
||||
116: 7(fvec3) CompositeConstruct 114 114 114
|
||||
117: 7(fvec3) FAdd 115 116
|
||||
Store 69(OutColor) 117
|
||||
Return
|
||||
FunctionEnd
|
||||
46(GetColor9(struct-S-vf31;i1;): 2 Function None 15
|
||||
44(i): 8(S) FunctionParameter
|
||||
45(comp): 14(ptr) FunctionParameter
|
||||
47: Label
|
||||
114: 7(fvec3) CompositeExtract 44(i) 0
|
||||
115: 7(fvec3) Load 65(OutColor)
|
||||
116: 7(fvec3) VectorShuffle 115 115 2 0 1
|
||||
117: 7(fvec3) FAdd 116 114
|
||||
118: 7(fvec3) Load 65(OutColor)
|
||||
119: 7(fvec3) VectorShuffle 118 117 4 5 3
|
||||
Store 65(OutColor) 119
|
||||
118: 7(fvec3) CompositeExtract 44(i) 0
|
||||
119: 7(fvec3) Load 69(OutColor)
|
||||
120: 7(fvec3) VectorShuffle 119 119 2 0 1
|
||||
121: 7(fvec3) FAdd 120 118
|
||||
122: 7(fvec3) Load 69(OutColor)
|
||||
123: 7(fvec3) VectorShuffle 122 121 4 5 3
|
||||
Store 69(OutColor) 123
|
||||
Return
|
||||
FunctionEnd
|
||||
50(GetColor10(struct-S-vf31;i1;): 2 Function None 15
|
||||
48(i): 8(S) FunctionParameter
|
||||
49(comp): 14(ptr) FunctionParameter
|
||||
51: Label
|
||||
120: 7(fvec3) CompositeExtract 48(i) 0
|
||||
121: 95(fvec2) VectorShuffle 120 120 0 1
|
||||
122: 7(fvec3) Load 65(OutColor)
|
||||
123: 95(fvec2) VectorShuffle 122 122 2 1
|
||||
124: 95(fvec2) FAdd 123 121
|
||||
125: 7(fvec3) Load 65(OutColor)
|
||||
126: 7(fvec3) VectorShuffle 125 124 0 4 3
|
||||
Store 65(OutColor) 126
|
||||
124: 7(fvec3) CompositeExtract 48(i) 0
|
||||
125: 99(fvec2) VectorShuffle 124 124 0 1
|
||||
126: 7(fvec3) Load 69(OutColor)
|
||||
127: 99(fvec2) VectorShuffle 126 126 2 1
|
||||
128: 99(fvec2) FAdd 127 125
|
||||
129: 7(fvec3) Load 69(OutColor)
|
||||
130: 7(fvec3) VectorShuffle 129 128 0 4 3
|
||||
Store 69(OutColor) 130
|
||||
Return
|
||||
FunctionEnd
|
||||
54(GetColor11(struct-S-vf31;i1;): 2 Function None 15
|
||||
52(i): 8(S) FunctionParameter
|
||||
53(comp): 14(ptr) FunctionParameter
|
||||
55: Label
|
||||
127: 7(fvec3) CompositeExtract 52(i) 0
|
||||
128: 95(fvec2) VectorShuffle 127 127 0 1
|
||||
129: 7(fvec3) Load 65(OutColor)
|
||||
130: 95(fvec2) VectorShuffle 129 129 0 2
|
||||
131: 95(fvec2) FAdd 130 128
|
||||
132: 7(fvec3) Load 65(OutColor)
|
||||
133: 7(fvec3) VectorShuffle 132 131 3 1 4
|
||||
Store 65(OutColor) 133
|
||||
131: 7(fvec3) CompositeExtract 52(i) 0
|
||||
132: 99(fvec2) VectorShuffle 131 131 0 1
|
||||
133: 7(fvec3) Load 69(OutColor)
|
||||
134: 99(fvec2) VectorShuffle 133 133 0 2
|
||||
135: 99(fvec2) FAdd 134 132
|
||||
136: 7(fvec3) Load 69(OutColor)
|
||||
137: 7(fvec3) VectorShuffle 136 135 3 1 4
|
||||
Store 69(OutColor) 137
|
||||
Return
|
||||
FunctionEnd
|
||||
58(GetColor12(struct-S-vf31;i1;): 2 Function None 15
|
||||
56(i): 8(S) FunctionParameter
|
||||
57(comp): 14(ptr) FunctionParameter
|
||||
59: Label
|
||||
134: 13(int) Load 57(comp)
|
||||
135: 6(float) CompositeExtract 56(i) 0 0
|
||||
137: 136(ptr) AccessChain 65(OutColor) 134
|
||||
138: 6(float) Load 137
|
||||
139: 6(float) FAdd 138 135
|
||||
140: 136(ptr) AccessChain 65(OutColor) 134
|
||||
Store 140 139
|
||||
138: 13(int) Load 57(comp)
|
||||
139: 6(float) CompositeExtract 56(i) 0 0
|
||||
141: 140(ptr) AccessChain 69(OutColor) 138
|
||||
142: 6(float) Load 141
|
||||
143: 6(float) FAdd 142 139
|
||||
144: 140(ptr) AccessChain 69(OutColor) 138
|
||||
Store 144 143
|
||||
Return
|
||||
FunctionEnd
|
||||
62(GetColor13(struct-S-vf31;i1;): 2 Function None 15
|
||||
60(i): 8(S) FunctionParameter
|
||||
61(comp): 14(ptr) FunctionParameter
|
||||
63: Label
|
||||
141: 13(int) Load 61(comp)
|
||||
142: 6(float) CompositeExtract 60(i) 0 0
|
||||
143: 7(fvec3) Load 65(OutColor)
|
||||
144: 95(fvec2) VectorShuffle 143 143 2 1
|
||||
145: 6(float) VectorExtractDynamic 144 141
|
||||
146: 6(float) FAdd 145 142
|
||||
147: 7(fvec3) Load 65(OutColor)
|
||||
148: 7(fvec3) VectorShuffle 147 147 2 1 2
|
||||
149: 7(fvec3) VectorInsertDynamic 148 146 141
|
||||
Store 65(OutColor) 149
|
||||
145: 13(int) Load 61(comp)
|
||||
146: 6(float) CompositeExtract 60(i) 0 0
|
||||
150: 71(int) VectorExtractDynamic 149 145
|
||||
151: 140(ptr) AccessChain 69(OutColor) 150
|
||||
152: 6(float) Load 151
|
||||
153: 6(float) FAdd 152 146
|
||||
154: 71(int) VectorExtractDynamic 149 145
|
||||
155: 140(ptr) AccessChain 69(OutColor) 154
|
||||
Store 155 153
|
||||
Return
|
||||
FunctionEnd
|
||||
66(GetColor14(struct-S-vf31;i1;): 2 Function None 15
|
||||
64(i): 8(S) FunctionParameter
|
||||
65(comp): 14(ptr) FunctionParameter
|
||||
67: Label
|
||||
156: 13(int) Load 65(comp)
|
||||
157: 6(float) CompositeExtract 64(i) 0 0
|
||||
160: 71(int) VectorExtractDynamic 159 156
|
||||
161: 140(ptr) AccessChain 69(OutColor) 160
|
||||
Store 161 157
|
||||
Return
|
||||
FunctionEnd
|
||||
|
@ -1,12 +1,12 @@
|
||||
spv.boolInBlock.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80003
|
||||
// Id's are bound by 107
|
||||
// Id's are bound by 102
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 75
|
||||
EntryPoint Fragment 4 "main" 74
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
@ -14,24 +14,24 @@ spv.boolInBlock.frag
|
||||
Name 12 "paramb4"
|
||||
Name 13 "paramb2"
|
||||
Name 17 "b1"
|
||||
Name 24 "Buffer"
|
||||
MemberName 24(Buffer) 0 "b2"
|
||||
Name 26 ""
|
||||
Name 39 "Uniform"
|
||||
MemberName 39(Uniform) 0 "b4"
|
||||
Name 41 ""
|
||||
Name 62 "param"
|
||||
Name 67 "param"
|
||||
Name 75 "fragColor"
|
||||
MemberDecorate 24(Buffer) 0 Offset 0
|
||||
Decorate 24(Buffer) BufferBlock
|
||||
Decorate 26 DescriptorSet 0
|
||||
Decorate 26 Binding 1
|
||||
MemberDecorate 39(Uniform) 0 Offset 0
|
||||
Decorate 39(Uniform) Block
|
||||
Decorate 41 DescriptorSet 0
|
||||
Decorate 41 Binding 0
|
||||
Decorate 75(fragColor) Location 0
|
||||
Name 25 "Buffer"
|
||||
MemberName 25(Buffer) 0 "b2"
|
||||
Name 27 ""
|
||||
Name 40 "Uniform"
|
||||
MemberName 40(Uniform) 0 "b4"
|
||||
Name 42 ""
|
||||
Name 60 "param"
|
||||
Name 66 "param"
|
||||
Name 74 "fragColor"
|
||||
MemberDecorate 25(Buffer) 0 Offset 0
|
||||
Decorate 25(Buffer) BufferBlock
|
||||
Decorate 27 DescriptorSet 0
|
||||
Decorate 27 Binding 1
|
||||
MemberDecorate 40(Uniform) 0 Offset 0
|
||||
Decorate 40(Uniform) Block
|
||||
Decorate 42 DescriptorSet 0
|
||||
Decorate 42 Binding 0
|
||||
Decorate 74(fragColor) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeBool
|
||||
@ -41,111 +41,106 @@ spv.boolInBlock.frag
|
||||
10: TypePointer Function 9(bvec2)
|
||||
11: TypeFunction 2 8(ptr) 10(ptr)
|
||||
16: TypePointer Function 6(bool)
|
||||
22: TypeInt 32 0
|
||||
23: TypeVector 22(int) 2
|
||||
24(Buffer): TypeStruct 23(ivec2)
|
||||
25: TypePointer Uniform 24(Buffer)
|
||||
26: 25(ptr) Variable Uniform
|
||||
27: TypeInt 32 1
|
||||
28: 27(int) Constant 0
|
||||
29: 6(bool) ConstantFalse
|
||||
30: 9(bvec2) ConstantComposite 29 29
|
||||
31: 22(int) Constant 1
|
||||
32: 23(ivec2) ConstantComposite 31 31
|
||||
33: 22(int) Constant 0
|
||||
34: 23(ivec2) ConstantComposite 33 33
|
||||
36: TypePointer Uniform 23(ivec2)
|
||||
38: TypeVector 22(int) 4
|
||||
39(Uniform): TypeStruct 38(ivec4)
|
||||
40: TypePointer Uniform 39(Uniform)
|
||||
41: 40(ptr) Variable Uniform
|
||||
42: TypePointer Uniform 38(ivec4)
|
||||
65: 38(ivec4) ConstantComposite 33 33 33 33
|
||||
72: TypeFloat 32
|
||||
73: TypeVector 72(float) 4
|
||||
74: TypePointer Output 73(fvec4)
|
||||
75(fragColor): 74(ptr) Variable Output
|
||||
87: 72(float) Constant 0
|
||||
88: 72(float) Constant 1065353216
|
||||
18: TypeInt 32 0
|
||||
19: 18(int) Constant 2
|
||||
24: TypeVector 18(int) 2
|
||||
25(Buffer): TypeStruct 24(ivec2)
|
||||
26: TypePointer Uniform 25(Buffer)
|
||||
27: 26(ptr) Variable Uniform
|
||||
28: TypeInt 32 1
|
||||
29: 28(int) Constant 0
|
||||
30: 6(bool) ConstantFalse
|
||||
31: 9(bvec2) ConstantComposite 30 30
|
||||
32: 18(int) Constant 1
|
||||
33: 24(ivec2) ConstantComposite 32 32
|
||||
34: 18(int) Constant 0
|
||||
35: 24(ivec2) ConstantComposite 34 34
|
||||
37: TypePointer Uniform 24(ivec2)
|
||||
39: TypeVector 18(int) 4
|
||||
40(Uniform): TypeStruct 39(ivec4)
|
||||
41: TypePointer Uniform 40(Uniform)
|
||||
42: 41(ptr) Variable Uniform
|
||||
43: TypePointer Uniform 18(int)
|
||||
61: TypePointer Uniform 39(ivec4)
|
||||
64: 39(ivec4) ConstantComposite 34 34 34 34
|
||||
71: TypeFloat 32
|
||||
72: TypeVector 71(float) 4
|
||||
73: TypePointer Output 72(fvec4)
|
||||
74(fragColor): 73(ptr) Variable Output
|
||||
84: 71(float) Constant 0
|
||||
85: 71(float) Constant 1065353216
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
62(param): 8(ptr) Variable Function
|
||||
67(param): 10(ptr) Variable Function
|
||||
35: 23(ivec2) Select 30 32 34
|
||||
37: 36(ptr) AccessChain 26 28
|
||||
Store 37 35
|
||||
43: 42(ptr) AccessChain 41 28
|
||||
44: 38(ivec4) Load 43
|
||||
45: 22(int) CompositeExtract 44 2
|
||||
46: 6(bool) INotEqual 45 33
|
||||
60(param): 8(ptr) Variable Function
|
||||
66(param): 10(ptr) Variable Function
|
||||
36: 24(ivec2) Select 31 33 35
|
||||
38: 37(ptr) AccessChain 27 29
|
||||
Store 38 36
|
||||
44: 43(ptr) AccessChain 42 29 19
|
||||
45: 18(int) Load 44
|
||||
46: 6(bool) INotEqual 45 34
|
||||
SelectionMerge 48 None
|
||||
BranchConditional 46 47 48
|
||||
47: Label
|
||||
49: 42(ptr) AccessChain 41 28
|
||||
50: 38(ivec4) Load 49
|
||||
51: 22(int) CompositeExtract 50 0
|
||||
52: 6(bool) INotEqual 51 33
|
||||
53: 9(bvec2) CompositeConstruct 52 52
|
||||
54: 23(ivec2) Select 53 32 34
|
||||
55: 36(ptr) AccessChain 26 28
|
||||
Store 55 54
|
||||
49: 43(ptr) AccessChain 42 29 34
|
||||
50: 18(int) Load 49
|
||||
51: 6(bool) INotEqual 50 34
|
||||
52: 9(bvec2) CompositeConstruct 51 51
|
||||
53: 24(ivec2) Select 52 33 35
|
||||
54: 37(ptr) AccessChain 27 29
|
||||
Store 54 53
|
||||
Branch 48
|
||||
48: Label
|
||||
56: 36(ptr) AccessChain 26 28
|
||||
57: 23(ivec2) Load 56
|
||||
58: 22(int) CompositeExtract 57 0
|
||||
59: 6(bool) INotEqual 58 33
|
||||
SelectionMerge 61 None
|
||||
BranchConditional 59 60 61
|
||||
60: Label
|
||||
63: 42(ptr) AccessChain 41 28
|
||||
64: 38(ivec4) Load 63
|
||||
66: 7(bvec4) INotEqual 64 65
|
||||
Store 62(param) 66
|
||||
68: 2 FunctionCall 14(foo(vb4;vb2;) 62(param) 67(param)
|
||||
69: 9(bvec2) Load 67(param)
|
||||
70: 23(ivec2) Select 69 32 34
|
||||
71: 36(ptr) AccessChain 26 28
|
||||
Store 71 70
|
||||
Branch 61
|
||||
61: Label
|
||||
76: 42(ptr) AccessChain 41 28
|
||||
77: 38(ivec4) Load 76
|
||||
78: 22(int) CompositeExtract 77 0
|
||||
79: 6(bool) INotEqual 78 33
|
||||
SelectionMerge 81 None
|
||||
BranchConditional 79 80 81
|
||||
80: Label
|
||||
82: 42(ptr) AccessChain 41 28
|
||||
83: 38(ivec4) Load 82
|
||||
84: 22(int) CompositeExtract 83 1
|
||||
85: 6(bool) INotEqual 84 33
|
||||
Branch 81
|
||||
81: Label
|
||||
86: 6(bool) Phi 79 61 85 80
|
||||
89: 72(float) Select 86 88 87
|
||||
90: 73(fvec4) CompositeConstruct 89 89 89 89
|
||||
Store 75(fragColor) 90
|
||||
91: 42(ptr) AccessChain 41 28
|
||||
92: 38(ivec4) Load 91
|
||||
93: 22(int) CompositeExtract 92 0
|
||||
94: 6(bool) INotEqual 93 33
|
||||
95: 6(bool) LogicalNot 94
|
||||
SelectionMerge 97 None
|
||||
BranchConditional 95 96 97
|
||||
96: Label
|
||||
98: 42(ptr) AccessChain 41 28
|
||||
99: 38(ivec4) Load 98
|
||||
100: 22(int) CompositeExtract 99 1
|
||||
101: 6(bool) INotEqual 100 33
|
||||
Branch 97
|
||||
97: Label
|
||||
102: 6(bool) Phi 94 81 101 96
|
||||
103: 72(float) Select 102 88 87
|
||||
104: 73(fvec4) CompositeConstruct 103 103 103 103
|
||||
105: 73(fvec4) Load 75(fragColor)
|
||||
106: 73(fvec4) FSub 105 104
|
||||
Store 75(fragColor) 106
|
||||
55: 43(ptr) AccessChain 27 29 34
|
||||
56: 18(int) Load 55
|
||||
57: 6(bool) INotEqual 56 34
|
||||
SelectionMerge 59 None
|
||||
BranchConditional 57 58 59
|
||||
58: Label
|
||||
62: 61(ptr) AccessChain 42 29
|
||||
63: 39(ivec4) Load 62
|
||||
65: 7(bvec4) INotEqual 63 64
|
||||
Store 60(param) 65
|
||||
67: 2 FunctionCall 14(foo(vb4;vb2;) 60(param) 66(param)
|
||||
68: 9(bvec2) Load 66(param)
|
||||
69: 24(ivec2) Select 68 33 35
|
||||
70: 37(ptr) AccessChain 27 29
|
||||
Store 70 69
|
||||
Branch 59
|
||||
59: Label
|
||||
75: 43(ptr) AccessChain 42 29 34
|
||||
76: 18(int) Load 75
|
||||
77: 6(bool) INotEqual 76 34
|
||||
SelectionMerge 79 None
|
||||
BranchConditional 77 78 79
|
||||
78: Label
|
||||
80: 43(ptr) AccessChain 42 29 32
|
||||
81: 18(int) Load 80
|
||||
82: 6(bool) INotEqual 81 34
|
||||
Branch 79
|
||||
79: Label
|
||||
83: 6(bool) Phi 77 59 82 78
|
||||
86: 71(float) Select 83 85 84
|
||||
87: 72(fvec4) CompositeConstruct 86 86 86 86
|
||||
Store 74(fragColor) 87
|
||||
88: 43(ptr) AccessChain 42 29 34
|
||||
89: 18(int) Load 88
|
||||
90: 6(bool) INotEqual 89 34
|
||||
91: 6(bool) LogicalNot 90
|
||||
SelectionMerge 93 None
|
||||
BranchConditional 91 92 93
|
||||
92: Label
|
||||
94: 43(ptr) AccessChain 42 29 32
|
||||
95: 18(int) Load 94
|
||||
96: 6(bool) INotEqual 95 34
|
||||
Branch 93
|
||||
93: Label
|
||||
97: 6(bool) Phi 90 79 96 92
|
||||
98: 71(float) Select 97 85 84
|
||||
99: 72(fvec4) CompositeConstruct 98 98 98 98
|
||||
100: 72(fvec4) Load 74(fragColor)
|
||||
101: 72(fvec4) FSub 100 99
|
||||
Store 74(fragColor) 101
|
||||
Return
|
||||
FunctionEnd
|
||||
14(foo(vb4;vb2;): 2 Function None 11
|
||||
@ -153,11 +148,11 @@ spv.boolInBlock.frag
|
||||
13(paramb2): 10(ptr) FunctionParameter
|
||||
15: Label
|
||||
17(b1): 16(ptr) Variable Function
|
||||
18: 7(bvec4) Load 12(paramb4)
|
||||
19: 6(bool) CompositeExtract 18 2
|
||||
Store 17(b1) 19
|
||||
20: 6(bool) Load 17(b1)
|
||||
21: 9(bvec2) CompositeConstruct 20 20
|
||||
Store 13(paramb2) 21
|
||||
20: 16(ptr) AccessChain 12(paramb4) 19
|
||||
21: 6(bool) Load 20
|
||||
Store 17(b1) 21
|
||||
22: 6(bool) Load 17(b1)
|
||||
23: 9(bvec2) CompositeConstruct 22 22
|
||||
Store 13(paramb2) 23
|
||||
Return
|
||||
FunctionEnd
|
||||
|
@ -119,8 +119,8 @@ spv.conversion.frag
|
||||
315: 13(int) Constant 1
|
||||
321: TypePointer Output 95(fvec4)
|
||||
322(gl_FragColor): 321(ptr) Variable Output
|
||||
367: 13(int) Constant 2
|
||||
380: 13(int) Constant 3
|
||||
337: 13(int) Constant 2
|
||||
350: 13(int) Constant 3
|
||||
427: TypePointer Private 6(bool)
|
||||
428(u_b): 427(ptr) Variable Private
|
||||
429: TypePointer Private 23(bvec2)
|
||||
@ -440,8 +440,8 @@ spv.conversion.frag
|
||||
Branch 300
|
||||
300: Label
|
||||
306: 16(float) Load 297
|
||||
308: 23(bvec2) Load 25(b2)
|
||||
309: 6(bool) CompositeExtract 308 0
|
||||
308: 7(ptr) AccessChain 25(b2) 14
|
||||
309: 6(bool) Load 308
|
||||
SelectionMerge 311 None
|
||||
BranchConditional 309 310 314
|
||||
310: Label
|
||||
@ -462,64 +462,64 @@ spv.conversion.frag
|
||||
Branch 296
|
||||
296: Label
|
||||
324: 6(bool) Load 8(b)
|
||||
325: 23(bvec2) Load 25(b2)
|
||||
326: 6(bool) CompositeExtract 325 0
|
||||
325: 7(ptr) AccessChain 25(b2) 14
|
||||
326: 6(bool) Load 325
|
||||
327: 6(bool) LogicalOr 324 326
|
||||
328: 23(bvec2) Load 25(b2)
|
||||
329: 6(bool) CompositeExtract 328 1
|
||||
328: 7(ptr) AccessChain 25(b2) 315
|
||||
329: 6(bool) Load 328
|
||||
330: 6(bool) LogicalOr 327 329
|
||||
331: 31(bvec3) Load 33(b3)
|
||||
332: 6(bool) CompositeExtract 331 0
|
||||
331: 7(ptr) AccessChain 33(b3) 14
|
||||
332: 6(bool) Load 331
|
||||
333: 6(bool) LogicalOr 330 332
|
||||
334: 31(bvec3) Load 33(b3)
|
||||
335: 6(bool) CompositeExtract 334 1
|
||||
334: 7(ptr) AccessChain 33(b3) 315
|
||||
335: 6(bool) Load 334
|
||||
336: 6(bool) LogicalOr 333 335
|
||||
337: 31(bvec3) Load 33(b3)
|
||||
338: 6(bool) CompositeExtract 337 2
|
||||
339: 6(bool) LogicalOr 336 338
|
||||
340: 43(bvec4) Load 45(b4)
|
||||
341: 6(bool) CompositeExtract 340 0
|
||||
342: 6(bool) LogicalOr 339 341
|
||||
343: 43(bvec4) Load 45(b4)
|
||||
344: 6(bool) CompositeExtract 343 1
|
||||
345: 6(bool) LogicalOr 342 344
|
||||
346: 43(bvec4) Load 45(b4)
|
||||
347: 6(bool) CompositeExtract 346 2
|
||||
348: 6(bool) LogicalOr 345 347
|
||||
349: 43(bvec4) Load 45(b4)
|
||||
350: 6(bool) CompositeExtract 349 3
|
||||
351: 6(bool) LogicalOr 348 350
|
||||
SelectionMerge 353 None
|
||||
BranchConditional 351 352 415
|
||||
352: Label
|
||||
354: 9(int) Load 58(i)
|
||||
355: 57(ptr) AccessChain 68(i2) 14
|
||||
356: 9(int) Load 355
|
||||
357: 9(int) IAdd 354 356
|
||||
358: 57(ptr) AccessChain 68(i2) 315
|
||||
359: 9(int) Load 358
|
||||
360: 9(int) IAdd 357 359
|
||||
361: 57(ptr) AccessChain 81(i3) 14
|
||||
362: 9(int) Load 361
|
||||
363: 9(int) IAdd 360 362
|
||||
364: 57(ptr) AccessChain 81(i3) 315
|
||||
365: 9(int) Load 364
|
||||
366: 9(int) IAdd 363 365
|
||||
368: 57(ptr) AccessChain 81(i3) 367
|
||||
369: 9(int) Load 368
|
||||
370: 9(int) IAdd 366 369
|
||||
371: 57(ptr) AccessChain 94(i4) 14
|
||||
372: 9(int) Load 371
|
||||
373: 9(int) IAdd 370 372
|
||||
374: 57(ptr) AccessChain 94(i4) 315
|
||||
375: 9(int) Load 374
|
||||
376: 9(int) IAdd 373 375
|
||||
377: 57(ptr) AccessChain 94(i4) 367
|
||||
378: 9(int) Load 377
|
||||
379: 9(int) IAdd 376 378
|
||||
381: 57(ptr) AccessChain 94(i4) 380
|
||||
338: 7(ptr) AccessChain 33(b3) 337
|
||||
339: 6(bool) Load 338
|
||||
340: 6(bool) LogicalOr 336 339
|
||||
341: 7(ptr) AccessChain 45(b4) 14
|
||||
342: 6(bool) Load 341
|
||||
343: 6(bool) LogicalOr 340 342
|
||||
344: 7(ptr) AccessChain 45(b4) 315
|
||||
345: 6(bool) Load 344
|
||||
346: 6(bool) LogicalOr 343 345
|
||||
347: 7(ptr) AccessChain 45(b4) 337
|
||||
348: 6(bool) Load 347
|
||||
349: 6(bool) LogicalOr 346 348
|
||||
351: 7(ptr) AccessChain 45(b4) 350
|
||||
352: 6(bool) Load 351
|
||||
353: 6(bool) LogicalOr 349 352
|
||||
SelectionMerge 355 None
|
||||
BranchConditional 353 354 415
|
||||
354: Label
|
||||
356: 9(int) Load 58(i)
|
||||
357: 57(ptr) AccessChain 68(i2) 14
|
||||
358: 9(int) Load 357
|
||||
359: 9(int) IAdd 356 358
|
||||
360: 57(ptr) AccessChain 68(i2) 315
|
||||
361: 9(int) Load 360
|
||||
362: 9(int) IAdd 359 361
|
||||
363: 57(ptr) AccessChain 81(i3) 14
|
||||
364: 9(int) Load 363
|
||||
365: 9(int) IAdd 362 364
|
||||
366: 57(ptr) AccessChain 81(i3) 315
|
||||
367: 9(int) Load 366
|
||||
368: 9(int) IAdd 365 367
|
||||
369: 57(ptr) AccessChain 81(i3) 337
|
||||
370: 9(int) Load 369
|
||||
371: 9(int) IAdd 368 370
|
||||
372: 57(ptr) AccessChain 94(i4) 14
|
||||
373: 9(int) Load 372
|
||||
374: 9(int) IAdd 371 373
|
||||
375: 57(ptr) AccessChain 94(i4) 315
|
||||
376: 9(int) Load 375
|
||||
377: 9(int) IAdd 374 376
|
||||
378: 57(ptr) AccessChain 94(i4) 337
|
||||
379: 9(int) Load 378
|
||||
380: 9(int) IAdd 377 379
|
||||
381: 57(ptr) AccessChain 94(i4) 350
|
||||
382: 9(int) Load 381
|
||||
383: 9(int) IAdd 379 382
|
||||
383: 9(int) IAdd 380 382
|
||||
384: 16(float) ConvertSToF 383
|
||||
385: 16(float) Load 106(f)
|
||||
386: 16(float) FAdd 384 385
|
||||
@ -535,7 +535,7 @@ spv.conversion.frag
|
||||
396: 105(ptr) AccessChain 114(f3) 315
|
||||
397: 16(float) Load 396
|
||||
398: 16(float) FAdd 395 397
|
||||
399: 105(ptr) AccessChain 114(f3) 367
|
||||
399: 105(ptr) AccessChain 114(f3) 337
|
||||
400: 16(float) Load 399
|
||||
401: 16(float) FAdd 398 400
|
||||
402: 105(ptr) AccessChain 118(f4) 14
|
||||
@ -544,19 +544,19 @@ spv.conversion.frag
|
||||
405: 105(ptr) AccessChain 118(f4) 315
|
||||
406: 16(float) Load 405
|
||||
407: 16(float) FAdd 404 406
|
||||
408: 105(ptr) AccessChain 118(f4) 367
|
||||
408: 105(ptr) AccessChain 118(f4) 337
|
||||
409: 16(float) Load 408
|
||||
410: 16(float) FAdd 407 409
|
||||
411: 105(ptr) AccessChain 118(f4) 380
|
||||
411: 105(ptr) AccessChain 118(f4) 350
|
||||
412: 16(float) Load 411
|
||||
413: 16(float) FAdd 410 412
|
||||
414: 95(fvec4) CompositeConstruct 413 413 413 413
|
||||
Store 323 414
|
||||
Branch 353
|
||||
Branch 355
|
||||
415: Label
|
||||
Store 323 151
|
||||
Branch 353
|
||||
353: Label
|
||||
Branch 355
|
||||
355: Label
|
||||
416: 95(fvec4) Load 323
|
||||
Store 322(gl_FragColor) 416
|
||||
Store 417(cv2) 102
|
||||
|
@ -6,7 +6,7 @@ spv.types.frag
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 91 93 100 102 109 111 118 120 127 129 136 138 145 147 154 156 160
|
||||
EntryPoint Fragment 4 "main" 96 98 105 107 114 116 123 125 132 134 141 143 150 152 159 161 165
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 140
|
||||
Name 4 "main"
|
||||
@ -15,47 +15,47 @@ spv.types.frag
|
||||
Name 12 "i_b"
|
||||
Name 17 "b2"
|
||||
Name 19 "u_b2"
|
||||
Name 22 "i_b2"
|
||||
Name 35 "b3"
|
||||
Name 37 "u_b3"
|
||||
Name 40 "i_b3"
|
||||
Name 59 "b4"
|
||||
Name 61 "u_b4"
|
||||
Name 64 "i_b4"
|
||||
Name 89 "i"
|
||||
Name 91 "u_i"
|
||||
Name 93 "i_i"
|
||||
Name 98 "i2"
|
||||
Name 100 "u_i2"
|
||||
Name 102 "i_i2"
|
||||
Name 107 "i3"
|
||||
Name 109 "u_i3"
|
||||
Name 111 "i_i3"
|
||||
Name 116 "i4"
|
||||
Name 118 "u_i4"
|
||||
Name 120 "i_i4"
|
||||
Name 125 "f"
|
||||
Name 127 "u_f"
|
||||
Name 129 "i_f"
|
||||
Name 134 "f2"
|
||||
Name 136 "u_f2"
|
||||
Name 138 "i_f2"
|
||||
Name 143 "f3"
|
||||
Name 145 "u_f3"
|
||||
Name 147 "i_f3"
|
||||
Name 152 "f4"
|
||||
Name 154 "u_f4"
|
||||
Name 156 "i_f4"
|
||||
Name 160 "gl_FragColor"
|
||||
Decorate 91(u_i) Flat
|
||||
Decorate 93(i_i) Flat
|
||||
Decorate 100(u_i2) Flat
|
||||
Decorate 102(i_i2) Flat
|
||||
Decorate 109(u_i3) Flat
|
||||
Decorate 111(i_i3) Flat
|
||||
Decorate 118(u_i4) Flat
|
||||
Decorate 120(i_i4) Flat
|
||||
Decorate 160(gl_FragColor) Location 0
|
||||
Name 24 "i_b2"
|
||||
Name 38 "b3"
|
||||
Name 40 "u_b3"
|
||||
Name 43 "i_b3"
|
||||
Name 63 "b4"
|
||||
Name 65 "u_b4"
|
||||
Name 68 "i_b4"
|
||||
Name 94 "i"
|
||||
Name 96 "u_i"
|
||||
Name 98 "i_i"
|
||||
Name 103 "i2"
|
||||
Name 105 "u_i2"
|
||||
Name 107 "i_i2"
|
||||
Name 112 "i3"
|
||||
Name 114 "u_i3"
|
||||
Name 116 "i_i3"
|
||||
Name 121 "i4"
|
||||
Name 123 "u_i4"
|
||||
Name 125 "i_i4"
|
||||
Name 130 "f"
|
||||
Name 132 "u_f"
|
||||
Name 134 "i_f"
|
||||
Name 139 "f2"
|
||||
Name 141 "u_f2"
|
||||
Name 143 "i_f2"
|
||||
Name 148 "f3"
|
||||
Name 150 "u_f3"
|
||||
Name 152 "i_f3"
|
||||
Name 157 "f4"
|
||||
Name 159 "u_f4"
|
||||
Name 161 "i_f4"
|
||||
Name 165 "gl_FragColor"
|
||||
Decorate 96(u_i) Flat
|
||||
Decorate 98(i_i) Flat
|
||||
Decorate 105(u_i2) Flat
|
||||
Decorate 107(i_i2) Flat
|
||||
Decorate 114(u_i3) Flat
|
||||
Decorate 116(i_i3) Flat
|
||||
Decorate 123(u_i4) Flat
|
||||
Decorate 125(i_i4) Flat
|
||||
Decorate 165(gl_FragColor) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeBool
|
||||
@ -67,271 +67,271 @@ spv.types.frag
|
||||
16: TypePointer Function 15(bvec2)
|
||||
18: TypePointer Private 15(bvec2)
|
||||
19(u_b2): 18(ptr) Variable Private
|
||||
22(i_b2): 18(ptr) Variable Private
|
||||
33: TypeVector 6(bool) 3
|
||||
34: TypePointer Function 33(bvec3)
|
||||
36: TypePointer Private 33(bvec3)
|
||||
37(u_b3): 36(ptr) Variable Private
|
||||
40(i_b3): 36(ptr) Variable Private
|
||||
57: TypeVector 6(bool) 4
|
||||
58: TypePointer Function 57(bvec4)
|
||||
60: TypePointer Private 57(bvec4)
|
||||
61(u_b4): 60(ptr) Variable Private
|
||||
64(i_b4): 60(ptr) Variable Private
|
||||
87: TypeInt 32 1
|
||||
88: TypePointer Function 87(int)
|
||||
90: TypePointer Input 87(int)
|
||||
91(u_i): 90(ptr) Variable Input
|
||||
93(i_i): 90(ptr) Variable Input
|
||||
96: TypeVector 87(int) 2
|
||||
97: TypePointer Function 96(ivec2)
|
||||
99: TypePointer Input 96(ivec2)
|
||||
100(u_i2): 99(ptr) Variable Input
|
||||
102(i_i2): 99(ptr) Variable Input
|
||||
105: TypeVector 87(int) 3
|
||||
106: TypePointer Function 105(ivec3)
|
||||
108: TypePointer Input 105(ivec3)
|
||||
109(u_i3): 108(ptr) Variable Input
|
||||
111(i_i3): 108(ptr) Variable Input
|
||||
114: TypeVector 87(int) 4
|
||||
115: TypePointer Function 114(ivec4)
|
||||
117: TypePointer Input 114(ivec4)
|
||||
118(u_i4): 117(ptr) Variable Input
|
||||
120(i_i4): 117(ptr) Variable Input
|
||||
123: TypeFloat 32
|
||||
124: TypePointer Function 123(float)
|
||||
126: TypePointer Input 123(float)
|
||||
127(u_f): 126(ptr) Variable Input
|
||||
129(i_f): 126(ptr) Variable Input
|
||||
132: TypeVector 123(float) 2
|
||||
133: TypePointer Function 132(fvec2)
|
||||
135: TypePointer Input 132(fvec2)
|
||||
136(u_f2): 135(ptr) Variable Input
|
||||
138(i_f2): 135(ptr) Variable Input
|
||||
141: TypeVector 123(float) 3
|
||||
142: TypePointer Function 141(fvec3)
|
||||
144: TypePointer Input 141(fvec3)
|
||||
145(u_f3): 144(ptr) Variable Input
|
||||
147(i_f3): 144(ptr) Variable Input
|
||||
150: TypeVector 123(float) 4
|
||||
151: TypePointer Function 150(fvec4)
|
||||
153: TypePointer Input 150(fvec4)
|
||||
154(u_f4): 153(ptr) Variable Input
|
||||
156(i_f4): 153(ptr) Variable Input
|
||||
159: TypePointer Output 150(fvec4)
|
||||
160(gl_FragColor): 159(ptr) Variable Output
|
||||
193: TypeInt 32 0
|
||||
194: 193(int) Constant 0
|
||||
198: 193(int) Constant 1
|
||||
208: 193(int) Constant 2
|
||||
221: 193(int) Constant 3
|
||||
257: 123(float) Constant 1065353216
|
||||
258: 150(fvec4) ConstantComposite 257 257 257 257
|
||||
20: TypeInt 32 0
|
||||
21: 20(int) Constant 0
|
||||
24(i_b2): 18(ptr) Variable Private
|
||||
28: 20(int) Constant 1
|
||||
36: TypeVector 6(bool) 3
|
||||
37: TypePointer Function 36(bvec3)
|
||||
39: TypePointer Private 36(bvec3)
|
||||
40(u_b3): 39(ptr) Variable Private
|
||||
43(i_b3): 39(ptr) Variable Private
|
||||
53: 20(int) Constant 2
|
||||
61: TypeVector 6(bool) 4
|
||||
62: TypePointer Function 61(bvec4)
|
||||
64: TypePointer Private 61(bvec4)
|
||||
65(u_b4): 64(ptr) Variable Private
|
||||
68(i_b4): 64(ptr) Variable Private
|
||||
84: 20(int) Constant 3
|
||||
92: TypeInt 32 1
|
||||
93: TypePointer Function 92(int)
|
||||
95: TypePointer Input 92(int)
|
||||
96(u_i): 95(ptr) Variable Input
|
||||
98(i_i): 95(ptr) Variable Input
|
||||
101: TypeVector 92(int) 2
|
||||
102: TypePointer Function 101(ivec2)
|
||||
104: TypePointer Input 101(ivec2)
|
||||
105(u_i2): 104(ptr) Variable Input
|
||||
107(i_i2): 104(ptr) Variable Input
|
||||
110: TypeVector 92(int) 3
|
||||
111: TypePointer Function 110(ivec3)
|
||||
113: TypePointer Input 110(ivec3)
|
||||
114(u_i3): 113(ptr) Variable Input
|
||||
116(i_i3): 113(ptr) Variable Input
|
||||
119: TypeVector 92(int) 4
|
||||
120: TypePointer Function 119(ivec4)
|
||||
122: TypePointer Input 119(ivec4)
|
||||
123(u_i4): 122(ptr) Variable Input
|
||||
125(i_i4): 122(ptr) Variable Input
|
||||
128: TypeFloat 32
|
||||
129: TypePointer Function 128(float)
|
||||
131: TypePointer Input 128(float)
|
||||
132(u_f): 131(ptr) Variable Input
|
||||
134(i_f): 131(ptr) Variable Input
|
||||
137: TypeVector 128(float) 2
|
||||
138: TypePointer Function 137(fvec2)
|
||||
140: TypePointer Input 137(fvec2)
|
||||
141(u_f2): 140(ptr) Variable Input
|
||||
143(i_f2): 140(ptr) Variable Input
|
||||
146: TypeVector 128(float) 3
|
||||
147: TypePointer Function 146(fvec3)
|
||||
149: TypePointer Input 146(fvec3)
|
||||
150(u_f3): 149(ptr) Variable Input
|
||||
152(i_f3): 149(ptr) Variable Input
|
||||
155: TypeVector 128(float) 4
|
||||
156: TypePointer Function 155(fvec4)
|
||||
158: TypePointer Input 155(fvec4)
|
||||
159(u_f4): 158(ptr) Variable Input
|
||||
161(i_f4): 158(ptr) Variable Input
|
||||
164: TypePointer Output 155(fvec4)
|
||||
165(gl_FragColor): 164(ptr) Variable Output
|
||||
257: 128(float) Constant 1065353216
|
||||
258: 155(fvec4) ConstantComposite 257 257 257 257
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
8(b): 7(ptr) Variable Function
|
||||
17(b2): 16(ptr) Variable Function
|
||||
35(b3): 34(ptr) Variable Function
|
||||
59(b4): 58(ptr) Variable Function
|
||||
89(i): 88(ptr) Variable Function
|
||||
98(i2): 97(ptr) Variable Function
|
||||
107(i3): 106(ptr) Variable Function
|
||||
116(i4): 115(ptr) Variable Function
|
||||
125(f): 124(ptr) Variable Function
|
||||
134(f2): 133(ptr) Variable Function
|
||||
143(f3): 142(ptr) Variable Function
|
||||
152(f4): 151(ptr) Variable Function
|
||||
161: 151(ptr) Variable Function
|
||||
38(b3): 37(ptr) Variable Function
|
||||
63(b4): 62(ptr) Variable Function
|
||||
94(i): 93(ptr) Variable Function
|
||||
103(i2): 102(ptr) Variable Function
|
||||
112(i3): 111(ptr) Variable Function
|
||||
121(i4): 120(ptr) Variable Function
|
||||
130(f): 129(ptr) Variable Function
|
||||
139(f2): 138(ptr) Variable Function
|
||||
148(f3): 147(ptr) Variable Function
|
||||
157(f4): 156(ptr) Variable Function
|
||||
166: 156(ptr) Variable Function
|
||||
11: 6(bool) Load 10(u_b)
|
||||
13: 6(bool) Load 12(i_b)
|
||||
14: 6(bool) LogicalAnd 11 13
|
||||
Store 8(b) 14
|
||||
20: 15(bvec2) Load 19(u_b2)
|
||||
21: 6(bool) CompositeExtract 20 0
|
||||
23: 15(bvec2) Load 22(i_b2)
|
||||
24: 6(bool) CompositeExtract 23 0
|
||||
25: 6(bool) LogicalAnd 21 24
|
||||
26: 15(bvec2) Load 19(u_b2)
|
||||
27: 6(bool) CompositeExtract 26 1
|
||||
28: 6(bool) LogicalAnd 25 27
|
||||
29: 15(bvec2) Load 22(i_b2)
|
||||
30: 6(bool) CompositeExtract 29 1
|
||||
31: 6(bool) LogicalAnd 28 30
|
||||
32: 15(bvec2) CompositeConstruct 31 31
|
||||
Store 17(b2) 32
|
||||
38: 33(bvec3) Load 37(u_b3)
|
||||
39: 6(bool) CompositeExtract 38 0
|
||||
41: 33(bvec3) Load 40(i_b3)
|
||||
42: 6(bool) CompositeExtract 41 0
|
||||
43: 6(bool) LogicalAnd 39 42
|
||||
44: 33(bvec3) Load 37(u_b3)
|
||||
45: 6(bool) CompositeExtract 44 1
|
||||
46: 6(bool) LogicalAnd 43 45
|
||||
47: 33(bvec3) Load 40(i_b3)
|
||||
48: 6(bool) CompositeExtract 47 1
|
||||
22: 9(ptr) AccessChain 19(u_b2) 21
|
||||
23: 6(bool) Load 22
|
||||
25: 9(ptr) AccessChain 24(i_b2) 21
|
||||
26: 6(bool) Load 25
|
||||
27: 6(bool) LogicalAnd 23 26
|
||||
29: 9(ptr) AccessChain 19(u_b2) 28
|
||||
30: 6(bool) Load 29
|
||||
31: 6(bool) LogicalAnd 27 30
|
||||
32: 9(ptr) AccessChain 24(i_b2) 28
|
||||
33: 6(bool) Load 32
|
||||
34: 6(bool) LogicalAnd 31 33
|
||||
35: 15(bvec2) CompositeConstruct 34 34
|
||||
Store 17(b2) 35
|
||||
41: 9(ptr) AccessChain 40(u_b3) 21
|
||||
42: 6(bool) Load 41
|
||||
44: 9(ptr) AccessChain 43(i_b3) 21
|
||||
45: 6(bool) Load 44
|
||||
46: 6(bool) LogicalAnd 42 45
|
||||
47: 9(ptr) AccessChain 40(u_b3) 28
|
||||
48: 6(bool) Load 47
|
||||
49: 6(bool) LogicalAnd 46 48
|
||||
50: 33(bvec3) Load 37(u_b3)
|
||||
51: 6(bool) CompositeExtract 50 2
|
||||
50: 9(ptr) AccessChain 43(i_b3) 28
|
||||
51: 6(bool) Load 50
|
||||
52: 6(bool) LogicalAnd 49 51
|
||||
53: 33(bvec3) Load 40(i_b3)
|
||||
54: 6(bool) CompositeExtract 53 2
|
||||
55: 6(bool) LogicalAnd 52 54
|
||||
56: 33(bvec3) CompositeConstruct 55 55 55
|
||||
Store 35(b3) 56
|
||||
62: 57(bvec4) Load 61(u_b4)
|
||||
63: 6(bool) CompositeExtract 62 0
|
||||
65: 57(bvec4) Load 64(i_b4)
|
||||
66: 6(bool) CompositeExtract 65 0
|
||||
67: 6(bool) LogicalAnd 63 66
|
||||
68: 57(bvec4) Load 61(u_b4)
|
||||
69: 6(bool) CompositeExtract 68 1
|
||||
70: 6(bool) LogicalAnd 67 69
|
||||
71: 57(bvec4) Load 64(i_b4)
|
||||
72: 6(bool) CompositeExtract 71 1
|
||||
73: 6(bool) LogicalAnd 70 72
|
||||
74: 57(bvec4) Load 61(u_b4)
|
||||
75: 6(bool) CompositeExtract 74 2
|
||||
76: 6(bool) LogicalAnd 73 75
|
||||
77: 57(bvec4) Load 64(i_b4)
|
||||
78: 6(bool) CompositeExtract 77 2
|
||||
79: 6(bool) LogicalAnd 76 78
|
||||
80: 57(bvec4) Load 61(u_b4)
|
||||
81: 6(bool) CompositeExtract 80 3
|
||||
82: 6(bool) LogicalAnd 79 81
|
||||
83: 57(bvec4) Load 64(i_b4)
|
||||
84: 6(bool) CompositeExtract 83 3
|
||||
85: 6(bool) LogicalAnd 82 84
|
||||
86: 57(bvec4) CompositeConstruct 85 85 85 85
|
||||
Store 59(b4) 86
|
||||
92: 87(int) Load 91(u_i)
|
||||
94: 87(int) Load 93(i_i)
|
||||
95: 87(int) IAdd 92 94
|
||||
Store 89(i) 95
|
||||
101: 96(ivec2) Load 100(u_i2)
|
||||
103: 96(ivec2) Load 102(i_i2)
|
||||
104: 96(ivec2) IAdd 101 103
|
||||
Store 98(i2) 104
|
||||
110: 105(ivec3) Load 109(u_i3)
|
||||
112: 105(ivec3) Load 111(i_i3)
|
||||
113: 105(ivec3) IAdd 110 112
|
||||
Store 107(i3) 113
|
||||
119: 114(ivec4) Load 118(u_i4)
|
||||
121: 114(ivec4) Load 120(i_i4)
|
||||
122: 114(ivec4) IAdd 119 121
|
||||
Store 116(i4) 122
|
||||
128: 123(float) Load 127(u_f)
|
||||
130: 123(float) Load 129(i_f)
|
||||
131: 123(float) FAdd 128 130
|
||||
Store 125(f) 131
|
||||
137: 132(fvec2) Load 136(u_f2)
|
||||
139: 132(fvec2) Load 138(i_f2)
|
||||
140: 132(fvec2) FAdd 137 139
|
||||
Store 134(f2) 140
|
||||
146: 141(fvec3) Load 145(u_f3)
|
||||
148: 141(fvec3) Load 147(i_f3)
|
||||
149: 141(fvec3) FAdd 146 148
|
||||
Store 143(f3) 149
|
||||
155: 150(fvec4) Load 154(u_f4)
|
||||
157: 150(fvec4) Load 156(i_f4)
|
||||
158: 150(fvec4) FAdd 155 157
|
||||
Store 152(f4) 158
|
||||
162: 6(bool) Load 8(b)
|
||||
163: 15(bvec2) Load 17(b2)
|
||||
164: 6(bool) CompositeExtract 163 0
|
||||
165: 6(bool) LogicalOr 162 164
|
||||
166: 15(bvec2) Load 17(b2)
|
||||
167: 6(bool) CompositeExtract 166 1
|
||||
168: 6(bool) LogicalOr 165 167
|
||||
169: 33(bvec3) Load 35(b3)
|
||||
170: 6(bool) CompositeExtract 169 0
|
||||
171: 6(bool) LogicalOr 168 170
|
||||
172: 33(bvec3) Load 35(b3)
|
||||
173: 6(bool) CompositeExtract 172 1
|
||||
174: 6(bool) LogicalOr 171 173
|
||||
175: 33(bvec3) Load 35(b3)
|
||||
176: 6(bool) CompositeExtract 175 2
|
||||
177: 6(bool) LogicalOr 174 176
|
||||
178: 57(bvec4) Load 59(b4)
|
||||
179: 6(bool) CompositeExtract 178 0
|
||||
180: 6(bool) LogicalOr 177 179
|
||||
181: 57(bvec4) Load 59(b4)
|
||||
182: 6(bool) CompositeExtract 181 1
|
||||
183: 6(bool) LogicalOr 180 182
|
||||
184: 57(bvec4) Load 59(b4)
|
||||
185: 6(bool) CompositeExtract 184 2
|
||||
186: 6(bool) LogicalOr 183 185
|
||||
187: 57(bvec4) Load 59(b4)
|
||||
188: 6(bool) CompositeExtract 187 3
|
||||
189: 6(bool) LogicalOr 186 188
|
||||
SelectionMerge 191 None
|
||||
BranchConditional 189 190 256
|
||||
190: Label
|
||||
192: 87(int) Load 89(i)
|
||||
195: 88(ptr) AccessChain 98(i2) 194
|
||||
196: 87(int) Load 195
|
||||
197: 87(int) IAdd 192 196
|
||||
199: 88(ptr) AccessChain 98(i2) 198
|
||||
200: 87(int) Load 199
|
||||
201: 87(int) IAdd 197 200
|
||||
202: 88(ptr) AccessChain 107(i3) 194
|
||||
203: 87(int) Load 202
|
||||
204: 87(int) IAdd 201 203
|
||||
205: 88(ptr) AccessChain 107(i3) 198
|
||||
206: 87(int) Load 205
|
||||
207: 87(int) IAdd 204 206
|
||||
209: 88(ptr) AccessChain 107(i3) 208
|
||||
210: 87(int) Load 209
|
||||
211: 87(int) IAdd 207 210
|
||||
212: 88(ptr) AccessChain 116(i4) 194
|
||||
213: 87(int) Load 212
|
||||
214: 87(int) IAdd 211 213
|
||||
215: 88(ptr) AccessChain 116(i4) 198
|
||||
216: 87(int) Load 215
|
||||
217: 87(int) IAdd 214 216
|
||||
218: 88(ptr) AccessChain 116(i4) 208
|
||||
219: 87(int) Load 218
|
||||
220: 87(int) IAdd 217 219
|
||||
222: 88(ptr) AccessChain 116(i4) 221
|
||||
223: 87(int) Load 222
|
||||
224: 87(int) IAdd 220 223
|
||||
225: 123(float) ConvertSToF 224
|
||||
226: 123(float) Load 125(f)
|
||||
227: 123(float) FAdd 225 226
|
||||
228: 124(ptr) AccessChain 134(f2) 194
|
||||
229: 123(float) Load 228
|
||||
230: 123(float) FAdd 227 229
|
||||
231: 124(ptr) AccessChain 134(f2) 198
|
||||
232: 123(float) Load 231
|
||||
233: 123(float) FAdd 230 232
|
||||
234: 124(ptr) AccessChain 143(f3) 194
|
||||
235: 123(float) Load 234
|
||||
236: 123(float) FAdd 233 235
|
||||
237: 124(ptr) AccessChain 143(f3) 198
|
||||
238: 123(float) Load 237
|
||||
239: 123(float) FAdd 236 238
|
||||
240: 124(ptr) AccessChain 143(f3) 208
|
||||
241: 123(float) Load 240
|
||||
242: 123(float) FAdd 239 241
|
||||
243: 124(ptr) AccessChain 152(f4) 194
|
||||
244: 123(float) Load 243
|
||||
245: 123(float) FAdd 242 244
|
||||
246: 124(ptr) AccessChain 152(f4) 198
|
||||
247: 123(float) Load 246
|
||||
248: 123(float) FAdd 245 247
|
||||
249: 124(ptr) AccessChain 152(f4) 208
|
||||
250: 123(float) Load 249
|
||||
251: 123(float) FAdd 248 250
|
||||
252: 124(ptr) AccessChain 152(f4) 221
|
||||
253: 123(float) Load 252
|
||||
254: 123(float) FAdd 251 253
|
||||
255: 150(fvec4) CompositeConstruct 254 254 254 254
|
||||
Store 161 255
|
||||
Branch 191
|
||||
54: 9(ptr) AccessChain 40(u_b3) 53
|
||||
55: 6(bool) Load 54
|
||||
56: 6(bool) LogicalAnd 52 55
|
||||
57: 9(ptr) AccessChain 43(i_b3) 53
|
||||
58: 6(bool) Load 57
|
||||
59: 6(bool) LogicalAnd 56 58
|
||||
60: 36(bvec3) CompositeConstruct 59 59 59
|
||||
Store 38(b3) 60
|
||||
66: 9(ptr) AccessChain 65(u_b4) 21
|
||||
67: 6(bool) Load 66
|
||||
69: 9(ptr) AccessChain 68(i_b4) 21
|
||||
70: 6(bool) Load 69
|
||||
71: 6(bool) LogicalAnd 67 70
|
||||
72: 9(ptr) AccessChain 65(u_b4) 28
|
||||
73: 6(bool) Load 72
|
||||
74: 6(bool) LogicalAnd 71 73
|
||||
75: 9(ptr) AccessChain 68(i_b4) 28
|
||||
76: 6(bool) Load 75
|
||||
77: 6(bool) LogicalAnd 74 76
|
||||
78: 9(ptr) AccessChain 65(u_b4) 53
|
||||
79: 6(bool) Load 78
|
||||
80: 6(bool) LogicalAnd 77 79
|
||||
81: 9(ptr) AccessChain 68(i_b4) 53
|
||||
82: 6(bool) Load 81
|
||||
83: 6(bool) LogicalAnd 80 82
|
||||
85: 9(ptr) AccessChain 65(u_b4) 84
|
||||
86: 6(bool) Load 85
|
||||
87: 6(bool) LogicalAnd 83 86
|
||||
88: 9(ptr) AccessChain 68(i_b4) 84
|
||||
89: 6(bool) Load 88
|
||||
90: 6(bool) LogicalAnd 87 89
|
||||
91: 61(bvec4) CompositeConstruct 90 90 90 90
|
||||
Store 63(b4) 91
|
||||
97: 92(int) Load 96(u_i)
|
||||
99: 92(int) Load 98(i_i)
|
||||
100: 92(int) IAdd 97 99
|
||||
Store 94(i) 100
|
||||
106: 101(ivec2) Load 105(u_i2)
|
||||
108: 101(ivec2) Load 107(i_i2)
|
||||
109: 101(ivec2) IAdd 106 108
|
||||
Store 103(i2) 109
|
||||
115: 110(ivec3) Load 114(u_i3)
|
||||
117: 110(ivec3) Load 116(i_i3)
|
||||
118: 110(ivec3) IAdd 115 117
|
||||
Store 112(i3) 118
|
||||
124: 119(ivec4) Load 123(u_i4)
|
||||
126: 119(ivec4) Load 125(i_i4)
|
||||
127: 119(ivec4) IAdd 124 126
|
||||
Store 121(i4) 127
|
||||
133: 128(float) Load 132(u_f)
|
||||
135: 128(float) Load 134(i_f)
|
||||
136: 128(float) FAdd 133 135
|
||||
Store 130(f) 136
|
||||
142: 137(fvec2) Load 141(u_f2)
|
||||
144: 137(fvec2) Load 143(i_f2)
|
||||
145: 137(fvec2) FAdd 142 144
|
||||
Store 139(f2) 145
|
||||
151: 146(fvec3) Load 150(u_f3)
|
||||
153: 146(fvec3) Load 152(i_f3)
|
||||
154: 146(fvec3) FAdd 151 153
|
||||
Store 148(f3) 154
|
||||
160: 155(fvec4) Load 159(u_f4)
|
||||
162: 155(fvec4) Load 161(i_f4)
|
||||
163: 155(fvec4) FAdd 160 162
|
||||
Store 157(f4) 163
|
||||
167: 6(bool) Load 8(b)
|
||||
168: 7(ptr) AccessChain 17(b2) 21
|
||||
169: 6(bool) Load 168
|
||||
170: 6(bool) LogicalOr 167 169
|
||||
171: 7(ptr) AccessChain 17(b2) 28
|
||||
172: 6(bool) Load 171
|
||||
173: 6(bool) LogicalOr 170 172
|
||||
174: 7(ptr) AccessChain 38(b3) 21
|
||||
175: 6(bool) Load 174
|
||||
176: 6(bool) LogicalOr 173 175
|
||||
177: 7(ptr) AccessChain 38(b3) 28
|
||||
178: 6(bool) Load 177
|
||||
179: 6(bool) LogicalOr 176 178
|
||||
180: 7(ptr) AccessChain 38(b3) 53
|
||||
181: 6(bool) Load 180
|
||||
182: 6(bool) LogicalOr 179 181
|
||||
183: 7(ptr) AccessChain 63(b4) 21
|
||||
184: 6(bool) Load 183
|
||||
185: 6(bool) LogicalOr 182 184
|
||||
186: 7(ptr) AccessChain 63(b4) 28
|
||||
187: 6(bool) Load 186
|
||||
188: 6(bool) LogicalOr 185 187
|
||||
189: 7(ptr) AccessChain 63(b4) 53
|
||||
190: 6(bool) Load 189
|
||||
191: 6(bool) LogicalOr 188 190
|
||||
192: 7(ptr) AccessChain 63(b4) 84
|
||||
193: 6(bool) Load 192
|
||||
194: 6(bool) LogicalOr 191 193
|
||||
SelectionMerge 196 None
|
||||
BranchConditional 194 195 256
|
||||
195: Label
|
||||
197: 92(int) Load 94(i)
|
||||
198: 93(ptr) AccessChain 103(i2) 21
|
||||
199: 92(int) Load 198
|
||||
200: 92(int) IAdd 197 199
|
||||
201: 93(ptr) AccessChain 103(i2) 28
|
||||
202: 92(int) Load 201
|
||||
203: 92(int) IAdd 200 202
|
||||
204: 93(ptr) AccessChain 112(i3) 21
|
||||
205: 92(int) Load 204
|
||||
206: 92(int) IAdd 203 205
|
||||
207: 93(ptr) AccessChain 112(i3) 28
|
||||
208: 92(int) Load 207
|
||||
209: 92(int) IAdd 206 208
|
||||
210: 93(ptr) AccessChain 112(i3) 53
|
||||
211: 92(int) Load 210
|
||||
212: 92(int) IAdd 209 211
|
||||
213: 93(ptr) AccessChain 121(i4) 21
|
||||
214: 92(int) Load 213
|
||||
215: 92(int) IAdd 212 214
|
||||
216: 93(ptr) AccessChain 121(i4) 28
|
||||
217: 92(int) Load 216
|
||||
218: 92(int) IAdd 215 217
|
||||
219: 93(ptr) AccessChain 121(i4) 53
|
||||
220: 92(int) Load 219
|
||||
221: 92(int) IAdd 218 220
|
||||
222: 93(ptr) AccessChain 121(i4) 84
|
||||
223: 92(int) Load 222
|
||||
224: 92(int) IAdd 221 223
|
||||
225: 128(float) ConvertSToF 224
|
||||
226: 128(float) Load 130(f)
|
||||
227: 128(float) FAdd 225 226
|
||||
228: 129(ptr) AccessChain 139(f2) 21
|
||||
229: 128(float) Load 228
|
||||
230: 128(float) FAdd 227 229
|
||||
231: 129(ptr) AccessChain 139(f2) 28
|
||||
232: 128(float) Load 231
|
||||
233: 128(float) FAdd 230 232
|
||||
234: 129(ptr) AccessChain 148(f3) 21
|
||||
235: 128(float) Load 234
|
||||
236: 128(float) FAdd 233 235
|
||||
237: 129(ptr) AccessChain 148(f3) 28
|
||||
238: 128(float) Load 237
|
||||
239: 128(float) FAdd 236 238
|
||||
240: 129(ptr) AccessChain 148(f3) 53
|
||||
241: 128(float) Load 240
|
||||
242: 128(float) FAdd 239 241
|
||||
243: 129(ptr) AccessChain 157(f4) 21
|
||||
244: 128(float) Load 243
|
||||
245: 128(float) FAdd 242 244
|
||||
246: 129(ptr) AccessChain 157(f4) 28
|
||||
247: 128(float) Load 246
|
||||
248: 128(float) FAdd 245 247
|
||||
249: 129(ptr) AccessChain 157(f4) 53
|
||||
250: 128(float) Load 249
|
||||
251: 128(float) FAdd 248 250
|
||||
252: 129(ptr) AccessChain 157(f4) 84
|
||||
253: 128(float) Load 252
|
||||
254: 128(float) FAdd 251 253
|
||||
255: 155(fvec4) CompositeConstruct 254 254 254 254
|
||||
Store 166 255
|
||||
Branch 196
|
||||
256: Label
|
||||
Store 161 258
|
||||
Branch 191
|
||||
191: Label
|
||||
259: 150(fvec4) Load 161
|
||||
Store 160(gl_FragColor) 259
|
||||
Store 166 258
|
||||
Branch 196
|
||||
196: Label
|
||||
259: 155(fvec4) Load 166
|
||||
Store 165(gl_FragColor) 259
|
||||
Return
|
||||
FunctionEnd
|
||||
|
@ -74,6 +74,11 @@ void GetColor13(const S i, int comp)
|
||||
OutColor.zy[comp] += i.color.x;
|
||||
}
|
||||
|
||||
void GetColor14(const S i, int comp)
|
||||
{
|
||||
OutColor.zyx[comp] = i.color.x;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
S s;
|
||||
@ -91,4 +96,5 @@ void main()
|
||||
GetColor11(s, u);
|
||||
GetColor12(s, u);
|
||||
GetColor13(s, u);
|
||||
GetColor14(s, u);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user