MeshBinary.xml 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <serializer>
  2. <includes>
  3. <include file="&lt;AnKi/Resource/Common.h&gt;"/>
  4. <include file="&lt;AnKi/Math.h&gt;"/>
  5. </includes>
  6. <doxygen_group name="resource"/>
  7. <prefix_code><![CDATA[
  8. static constexpr const char* MESH_MAGIC = "ANKIMES5";
  9. constexpr U32 MESH_BINARY_BUFFER_ALIGNMENT = 16;
  10. enum class MeshBinaryFlag : U32
  11. {
  12. NONE = 0,
  13. QUAD = 1 << 0,
  14. CONVEX = 1 << 1,
  15. ALL = QUAD | CONVEX,
  16. };
  17. ANKI_ENUM_ALLOW_NUMERIC_OPERATIONS(MeshBinaryFlag)
  18. ]]></prefix_code>
  19. <classes>
  20. <class name="MeshBinaryVertexBuffer" comment="Vertex buffer info. The size of the buffer is m_vertexStride*MeshBinaryHeader::m_totalVertexCount aligned to MESH_BINARY_BUFFER_ALIGNMENT">
  21. <members>
  22. <member name="m_vertexStride" type="U32" comment="The size of the vertex"/>
  23. </members>
  24. </class>
  25. <class name="MeshBinaryVertexAttribute" comment="Vertex attribute">
  26. <members>
  27. <member name="m_bufferBinding" type="U32"/>
  28. <member name="m_format" type="Format" comment="If the format is NONE then the attribute is not present"/>
  29. <member name="m_relativeOffset" type="U32"/>
  30. <member name="m_scale" type="F32"/>
  31. </members>
  32. </class>
  33. <class name="MeshBinarySubMesh">
  34. <members>
  35. <member name="m_firstIndex" type="U32"/>
  36. <member name="m_indexCount" type="U32"/>
  37. <member name="m_aabbMin" type="Vec3" comment="Bounding box min"/>
  38. <member name="m_aabbMax" type="Vec3" comment="Bounding box max"/>
  39. </members>
  40. </class>
  41. <class name="MeshBinaryHeader" comment="The 1st things that appears in a mesh binary. @note The index and vertex buffers are aligned to MESH_BINARY_BUFFER_ALIGNMENT bytes">
  42. <members>
  43. <member name="m_magic" type="U8" array_size="8"/>
  44. <member name="m_flags" type="MeshBinaryFlag"/>
  45. <member name="m_vertexBuffers" type="MeshBinaryVertexBuffer" array_size="U32(VertexAttributeId::COUNT)"/>
  46. <member name="m_vertexBufferCount" type="U32"/>
  47. <member name="m_vertexAttributes" type="MeshBinaryVertexAttribute" array_size="U32(VertexAttributeId::COUNT)"/>
  48. <member name="m_indexType" type="IndexType"/>
  49. <member name="m_padding" type="U8" array_size="3"/>
  50. <member name="m_totalIndexCount" type="U32"/>
  51. <member name="m_totalVertexCount" type="U32"/>
  52. <member name="m_subMeshCount" type="U32"/>
  53. <member name="m_aabbMin" type="Vec3" comment="Bounding box min"/>
  54. <member name="m_aabbMax" type="Vec3" comment="Bounding box max"/>
  55. </members>
  56. </class>
  57. </classes>
  58. </serializer>