fix for #1501

Maintain the incrementing location throughout the structure traversal.
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVReflection.h b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVReflection.h
index f96f693..ad4ca40 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVReflection.h
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVReflection.h
@@ -216,10 +216,10 @@
 					type = &reflect.get_type(type->parent_type);
 
 				if (type->basetype == SPIRV_CROSS_NAMESPACE::SPIRType::Struct) {
+					uint32_t memberLoc = loc;
 					for (uint32_t idx = 0; idx < type->member_types.size(); idx++) {
 						// Each member may have a location decoration. If not, each member
-						// gets an incrementing location.
-						uint32_t memberLoc = addSat(loc, idx);
+						// gets an incrementing location based the base location for the struct.
 						uint32_t memberCmp = 0;
 						if (reflect.has_member_decoration(type->self, idx, spv::DecorationLocation)) {
 							memberLoc = reflect.get_member_decoration(type->self, idx, spv::DecorationLocation);
@@ -233,14 +233,17 @@
 						const SPIRV_CROSS_NAMESPACE::SPIRType& memberType = reflect.get_type(type->member_types[idx]);
 						if (memberType.columns > 1) {
 							for (uint32_t i = 0; i < memberType.columns; i++) {
-								outputs.push_back({memberType.basetype, memberType.vecsize, addSat(memberLoc, i), memberCmp, biType, patch, isUsed});
+								outputs.push_back({memberType.basetype, memberType.vecsize, memberLoc, memberCmp, biType, patch, isUsed});
+								memberLoc = addSat(memberLoc, 1);
 							}
 						} else if (!memberType.array.empty()) {
 							for (uint32_t i = 0; i < memberType.array[0]; i++) {
-								outputs.push_back({memberType.basetype, memberType.vecsize, addSat(memberLoc, i), memberCmp, biType, patch, isUsed});
+								outputs.push_back({memberType.basetype, memberType.vecsize, memberLoc, memberCmp, biType, patch, isUsed});
+								memberLoc = addSat(memberLoc, 1);
 							}
 						} else {
 							outputs.push_back({memberType.basetype, memberType.vecsize, memberLoc, memberCmp, biType, patch, isUsed});
+							memberLoc = addSat(memberLoc, 1);
 						}
 					}
 				} else if (type->columns > 1) {