message: Allow a [[pad]] annotation to specify padding elements
  * These elements are consumed but not shown, so the offsets of subsequent
  elements still act as if they're there. This may be more convenient than
  specifying a manual offset on the next element or a struct size.
diff: @@ -792,6 +792,8 @@ ShaderConstant BufferFormatter::ParseFormatString(const QString &formatString, u
  QRegularExpressionMatch structMatch = structUseRegex.match(line);
  + bool isPadding = false;
  +
  if(structMatch.hasMatch() && structelems.contains(structMatch.captured(1)))
  {
  StructFormatData &structContext = structelems[structMatch.captured(1)];
  @@ -807,6 +809,10 @@ ShaderConstant BufferFormatter::ParseFormatString(const QString &formatString, u
  {
  specifiedOffset = annot.param.toUInt();
  }
  + else if(annot.name == lit("pad") || annot.name == lit("padding"))
  + {
  + isPadding = true;
  + }
  else
  {
  errors = tr("Unrecognised annotation on variable: %1\n").arg(annot.name);
  @@ -864,6 +870,8 @@ ShaderConstant BufferFormatter::ParseFormatString(const QString &formatString, u
  el.type.descriptor.elements = arrayCount;
  cur->offset += 8;
  +
  + if(!isPadding)
  cur->structDef.type.members.push_back(el);
  continue;
  @@ -946,6 +954,7 @@ ShaderConstant BufferFormatter::ParseFormatString(const QString &formatString, u
  el.byteOffset = cur->offset;
  el.type.descriptor.elements = arrayCount;
  + if(!isPadding)
  cur->structDef.type.members.push_back(el);
  // advance by the struct including any trailing padding
  @@ -1268,6 +1277,10 @@ ShaderConstant BufferFormatter::ParseFormatString(const QString &formatString, u
  cur->offset = specifiedOffset;
  }
  + else if(annot.name == lit("pad") || annot.name == lit("padding"))
  + {
  + isPadding = true;
  + }
  else
  {
  errors = tr("Unrecognised annotation on variable: %1\n").arg(annot.name);
  @@ -1455,6 +1468,7 @@ ShaderConstant BufferFormatter::ParseFormatString(const QString &formatString, u
  el.byteOffset = cur->offset;
  + if(!isPadding)
  cur->structDef.type.members.push_back(el);
  // if we're bitfield packing don't advance offset, otherwise advance to the end of this element
  