Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mesh Data rework #371

Merged
merged 107 commits into from
Mar 11, 2020
Merged

Mesh Data rework #371

merged 107 commits into from
Mar 11, 2020

Commits on Mar 10, 2020

  1. MeshTools: clean up and clarify removeDuplicates().

    I spent a week (!) thinking the extra remapping array is not necessary.
    Actually, it is (though with a non-shitty hashmap the allocation could
    be done for both) -- this was an university assignment almost a decade
    ago and it wouldn't pass if it would be wasting time.
    
    But the english of past me was horrible. Yes.
    mosra committed Mar 10, 2020
    Configuration menu
    Copy the full SHA
    274759c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    ea7259b View commit details
    Browse the repository at this point in the history

Commits on Mar 11, 2020

  1. Primitives: use a more efficient duplicate removal approach in Icosph…

    …ere.
    
    It's still extremely bad, but at least something.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    1c74a87 View commit details
    Browse the repository at this point in the history
  2. MeshTools: subdivideInPlace() accepts strided indices of any type.

    Also vastly improved tests and docs.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    a1924f5 View commit details
    Browse the repository at this point in the history
  3. MeshTools: doc++

    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    677b24a View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    847e3c8 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    2f15f95 View commit details
    Browse the repository at this point in the history
  6. MeshTools: explicit generateSmoothNormals() overloads for each index …

    …type.
    
    The templated version had the unfortunate "feature" of not being able to
    figure out the type when an array view or a C array got passed to it.
    That led to worse-than-ideal UX and even though it's now a bit more
    verbose on the implementation side, it's the preferred solution.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    29f0fdb View commit details
    Browse the repository at this point in the history
  7. MeshTools: added a duplicateInto() variant taking a 2D strided array …

    …view.
    
    This also allowed me to move all the complexity and assertions into a
    cpp file, no longer polluting the header.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    735c59e View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    24d01e2 View commit details
    Browse the repository at this point in the history
  9. MeshTools: this test didn't test the NaNs at all.

    I wonder what was I doing back then.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    db502c1 View commit details
    Browse the repository at this point in the history
  10. MeshTools: simplify test code a bit.

    We have new less shitty APIs, so use them!
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    1684cca View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    aeedf12 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    78a2943 View commit details
    Browse the repository at this point in the history
  13. MeshTools: added a STL-less subdivide().

    The subdivideInPlace() alone wasn't convenient enough.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    77d7931 View commit details
    Browse the repository at this point in the history
  14. MeshTools: deSTLify flipNormals(), flipFaceWinding() and tipsify().

    And rename them to *InPlace(), since that's what they do. The original
    STL variants are now deprecated wrappers over the new names. Not
    adapting the test yet in order to test everything is alright.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    b589f15 View commit details
    Browse the repository at this point in the history
  15. Configuration menu
    Copy the full SHA
    75eefdb View commit details
    Browse the repository at this point in the history
  16. MeshTools: deSTLify compressIndices().

    There's a lot to change with the current version -- the bloaty tuple,
    the useless min/max, and compressing all the way down to 8 bits is not
    desirable anymore either. The new function allows to specify a minimal
    type to compress to and works also on 8- and 16-byte types, which makes
    it possible to also inflate a smaller type into a larger one.
    
    The old function is now deprecated.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    937689e View commit details
    Browse the repository at this point in the history
  17. MeshTools: added a type-erased compressIndices().

    Useful when consuming the indices straight from MeshData.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    1974da2 View commit details
    Browse the repository at this point in the history
  18. Configuration menu
    Copy the full SHA
    bae5eec View commit details
    Browse the repository at this point in the history
  19. Configuration menu
    Copy the full SHA
    87c2bc7 View commit details
    Browse the repository at this point in the history
  20. Reserve zero MeshPrimitive and MeshIndexType for invalid values.

    Better for checking accidents, as picking a wrong primitive / index type
    can lead to *serious* rendering issues. Similarly to a change done to
    (Compressed)PixelFormat in 2019.10.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    7fd92c1 View commit details
    Browse the repository at this point in the history
  21. New VertexFormat enum.

    This deliberately doesn't follow the PixelFormat enum naming, as RGBA
    components make no sense for most vertex data. Checking Metal and
    WebGPU, they seem to have arrived at a similar conclusion, only VkFormat
    is an outlier.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    520c22f View commit details
    Browse the repository at this point in the history
  22. Make MeshPrimitive and MeshIndexType enums only 8bit.

    Otherwise they take up too much space.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    d46061b View commit details
    Browse the repository at this point in the history
  23. Trade: a reworked MeshData class.

    With API analogous to the (relatively) new AnimationData -- with one
    buffer containing all index data and one buffer containing all vertex
    data, both meant to be uploaded as-is to the GPU.
    
    This will eventually replace MeshData2D and MeshData3D, backwards
    compatibility and wiring up to other APIs will be done in follow-up
    commits.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    ecbe571 View commit details
    Browse the repository at this point in the history
  24. Trade: implement Importer interfaces for the new MeshData.

    Deprecating of the old ones comes later.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    fb1fdf6 View commit details
    Browse the repository at this point in the history
  25. Trade: new enum for describing data ownership.

    Will be used for MeshData that don't own the memory.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    fcd38ca View commit details
    Browse the repository at this point in the history
  26. Trade: implement mutable data access in MeshData.

    Turns out the design wasn't so simple after all. AnimationData and
    ImageData classes will follow with similar changes.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    8ea86b0 View commit details
    Browse the repository at this point in the history
  27. Trade: return TrackView with const types from AnimationData.

    Follows the change done in 954798a.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    a3ab27f View commit details
    Browse the repository at this point in the history
  28. Trade: mutable access in AnimationData.

    Follows the change done in MeshData.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    0fd6219 View commit details
    Browse the repository at this point in the history
  29. Configuration menu
    Copy the full SHA
    b71e50b View commit details
    Browse the repository at this point in the history
  30. Configuration menu
    Copy the full SHA
    6ed0df2 View commit details
    Browse the repository at this point in the history
  31. Configuration menu
    Copy the full SHA
    4011e30 View commit details
    Browse the repository at this point in the history
  32. Trade: allow AnimationTrackData be created from a typed track.

    So users aren't force to specify everything on their own. It makes the
    test code a bit less painful. But just a bit.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    dd5acdd View commit details
    Browse the repository at this point in the history
  33. Trade: make it possible to construct AnimationData from track init list.

    Easier to write. Need to take extra care with default deleters.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    6ddcc0b View commit details
    Browse the repository at this point in the history
  34. Trade: make MeshIndexData constexpr.

    First step towards an ability to expose data compiled into an executable
    through MeshData without having to allocate anything.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    8cd7508 View commit details
    Browse the repository at this point in the history
  35. Trade: make MeshAttributeData constexpr.

    This makes it possible to have fully allocation-less MeshData, with
    statically defined indices and attributes. Only the final MeshData
    construction needs to be done at runtime because Array is not constexpr,
    but that isn't anything heavy anyway.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    c74b4c6 View commit details
    Browse the repository at this point in the history
  36. Trade: make AnimationTrackData constructors explicit.

    There's a ton of parameters and it's just unreadable without.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    93e6dc2 View commit details
    Browse the repository at this point in the history
  37. Configuration menu
    Copy the full SHA
    036fced View commit details
    Browse the repository at this point in the history
  38. Trade: typeless access to MeshData attributes.

    Similarly to ImageData::pixels() which return a strided array view of
    one dimension more.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    e3ee1e5 View commit details
    Browse the repository at this point in the history
  39. Trade: expose getters in MeshIndexData.

    It made testing and everything harder than strictly necessary. OTOH
    still keeping MeshData as a friend and accessing members directly since
    those are heavily interconnected anyway.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    aecec18 View commit details
    Browse the repository at this point in the history
  40. Configuration menu
    Copy the full SHA
    5f35b06 View commit details
    Browse the repository at this point in the history
  41. Trade: make it possible to construct a "padding" MeshAttributeData.

    Will be used in MeshTools algorithms. Also harden the MeshData
    constructor to reject such instances.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    4764979 View commit details
    Browse the repository at this point in the history
  42. Trade: direct access to MeshAttributeData array in MeshData.

    Again useful for MeshTools algos.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    d054226 View commit details
    Browse the repository at this point in the history
  43. Trade: typeless access to MeshData indices.

    Like with attributes, it returns a 2D strided view with the second
    dimension having the same size as the index type.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    506740f View commit details
    Browse the repository at this point in the history
  44. Configuration menu
    Copy the full SHA
    87d16bc View commit details
    Browse the repository at this point in the history
  45. Trade: relax index/attribute/vertex count restrictions in MeshData.

    Allow to make:
    
     - an indexed mesh with zero indices
     - a mesh with non-zero attribute count but zero vertices
     - a mesh with non-zero vertex count but zero attributes
    
    All of these are valid use cases as explained in the tests, and will
    also make the release*() behavior defined better.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    270e93e View commit details
    Browse the repository at this point in the history
  46. Trade: make MeshData::release*() less brutal, add releaseAttributeDat…

    …a().
    
    It only resets count of released thing to zero, not going all nuclear.
    Otherwise it wouldn't be possible to release attribute data and then
    vertex data as releasing one would wipe the other.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    a3c5c00 View commit details
    Browse the repository at this point in the history
  47. Trade: added MeshData::attributeId().

    Useful for quick localization of named attribs when dealing with
    attributeData() (for example in MeshTools).
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    b016258 View commit details
    Browse the repository at this point in the history
  48. Configuration menu
    Copy the full SHA
    ccd3d24 View commit details
    Browse the repository at this point in the history
  49. MeshTools: implement isInterleaved() for Trade::MeshData.

    Will be used to distinguish if the data need to be repacked or not in
    various tools.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    3784dea View commit details
    Browse the repository at this point in the history
  50. MeshTools: implement interleavedLayout().

    This was originally meant to be an interleave() that operates on
    MeshData, but later I realized I need the same logic in duplicate(), so
    turned it into a private function. Now I am pretty sure I'll be using
    this function in *many* importer plugins :D
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    1e85279 View commit details
    Browse the repository at this point in the history
  51. Configuration menu
    Copy the full SHA
    6c2fb3f View commit details
    Browse the repository at this point in the history
  52. Configuration menu
    Copy the full SHA
    e8692af View commit details
    Browse the repository at this point in the history
  53. MeshTools: implement compile() taking a MeshData.

    Also add new variants that allow for external buffers.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    16c3480 View commit details
    Browse the repository at this point in the history
  54. Configuration menu
    Copy the full SHA
    5481581 View commit details
    Browse the repository at this point in the history
  55. Trade: deprecate AbstractImporter interfaces for MeshDataXD.

    For backwards compatibility these will delegate to the new MeshData
    interfaces for 3D (and nothing for 2D, because so far there were no 2D
    scene importers).
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    0f4a5ad View commit details
    Browse the repository at this point in the history
  56. Configuration menu
    Copy the full SHA
    0067909 View commit details
    Browse the repository at this point in the history
  57. Primitives: port away from MeshDataXD.

    The internals don't use any std::vector anymore, only the icosphere
    needs an std::unordered_map to do duplicate removal. Additionally, the
    most simple primitives are now simply views on constant data,
    being completely zero-allocation.
    
    On a Mac this resulted in the dylib going down from 1.5 MB to 418 kB in
    Debug, and from 129 kB to 90 kB in Release. Quite nice.
    
    The tests are not ported away from MeshDataXD yet as I want to ensure
    the behavior is *exactly* as before.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    c8de337 View commit details
    Browse the repository at this point in the history
  58. Primitives: port tests and related tools away from MeshDataXD.

    Improving the tests a bit for trivial primitives to ensure the attribute
    layouts are correct, not just counts.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    a68946d View commit details
    Browse the repository at this point in the history
  59. Configuration menu
    Copy the full SHA
    fa3c949 View commit details
    Browse the repository at this point in the history
  60. Configuration menu
    Copy the full SHA
    89d6d6d View commit details
    Browse the repository at this point in the history
  61. Configuration menu
    Copy the full SHA
    c07af03 View commit details
    Browse the repository at this point in the history
  62. Configuration menu
    Copy the full SHA
    35659a6 View commit details
    Browse the repository at this point in the history
  63. Configuration menu
    Copy the full SHA
    53ef991 View commit details
    Browse the repository at this point in the history
  64. GL: port away from MeshDataXD.

    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    274fdc3 View commit details
    Browse the repository at this point in the history
  65. Add packed, half and double types to VertexFormat.

    Intentionally not enabling / documenting the double types for use with
    positions / normals / ... yet. Might come later (or never).
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    84ee4f3 View commit details
    Browse the repository at this point in the history
  66. Trade: support packed attributes in MeshData.

    This was a LONG unexpected detour... I mean, I expected it, but not so
    soon.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    ed88b35 View commit details
    Browse the repository at this point in the history
  67. Configuration menu
    Copy the full SHA
    13c071a View commit details
    Browse the repository at this point in the history
  68. Configuration menu
    Copy the full SHA
    ee06eb2 View commit details
    Browse the repository at this point in the history
  69. Configuration menu
    Copy the full SHA
    b203924 View commit details
    Browse the repository at this point in the history
  70. Configuration menu
    Copy the full SHA
    0657d60 View commit details
    Browse the repository at this point in the history
  71. Configuration menu
    Copy the full SHA
    a02e946 View commit details
    Browse the repository at this point in the history
  72. Trade: pack MeshAttributeData internals better.

    Before it was a 32-byte structure with 3 bytes free (or a 20-byte
    structure with 3 bytes free), now it's a 24-byte structure with 5 bytes
    free. Exploiting the fact that strides can't be too high for a GPU
    anyway (so 2 bytes is enough instead of 8), and vertex count is capped
    to 32bit by MeshData anyway (so no need for 8 also), saving 10 bytes on
    a 64-bit build.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    5e81d10 View commit details
    Browse the repository at this point in the history
  73. Trade: support offset-only MeshAttributeData.

    Originally this was done in order to make handling of deserialized data
    much simpler (as for those attributes also need to only contain an
    offset into some unknown data array), but seems this could be very
    useful elsewhere as well -- for example when the layout is known
    beforehand but the actual data not yet -- such as in the Line and
    Gradient primitives (going to switch them to this in the next commit).
    
    What still unfortunately has to be known in advance is the actual vertex
    count (as supplying it directly to MeshData would mean adding 6 new
    constructor overloads, and there's enough of those already). Might
    revisit later.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    47695f0 View commit details
    Browse the repository at this point in the history
  74. Primitives: use offset-only attribs for Line and Gradient.

    One less allocation for each.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    eb98f13 View commit details
    Browse the repository at this point in the history
  75. Enable embedding implementation-specific values in VertexFormat.

    Similarly to PixelFormat. Will be useful for Vulkan, unfortunately not
    so much for GL because there the format is specified by three orthogonal
    values and it's a terrible mess.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    31d3cdc View commit details
    Browse the repository at this point in the history
  76. Provide reliable mapping of VertexFormat to GL and Vulkan.

    GL was missing a check whether given format is available on a target
    (for example double types are not on ES), and for Vulkan we need something
    similar to pixel format mapping as well.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    7d44bcc View commit details
    Browse the repository at this point in the history
  77. Configuration menu
    Copy the full SHA
    a29e9dc View commit details
    Browse the repository at this point in the history
  78. Configuration menu
    Copy the full SHA
    a3bb6ba View commit details
    Browse the repository at this point in the history
  79. Configuration menu
    Copy the full SHA
    f46b522 View commit details
    Browse the repository at this point in the history
  80. Trade: support array attributes in MeshData.

    The last major bit needed for meshlet support.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    c0e3a84 View commit details
    Browse the repository at this point in the history
  81. Enlarge MeshPrimitive to four bytes, allow wrapping impl-specific val…

    …ues.
    
    And also handle them specially in GL::meshPrimitive() and
    Vk::vkPrimitiveTopology().
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    c963450 View commit details
    Browse the repository at this point in the history
  82. Add MeshPrimitive::Instances, Faces and Edges.

    To support meshes that are not so GPU-friendly. And also meshlets at a
    later point.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    d096aa6 View commit details
    Browse the repository at this point in the history
  83. Trade: support mesh level import in AbstractImporter.

    Similar to image mip level import, but this is largely left to be
    importer-specific. For example PLY defines per-face data and sometimes
    one might want to import them as-is, without them being turned into a
    per-vertex property.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    9425c23 View commit details
    Browse the repository at this point in the history
  84. MeshTools: added removeDuplicatesInPlaceInto().

    I need to put the resulting index array into a pre-existing allocation.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    8f5639e View commit details
    Browse the repository at this point in the history
  85. ObjImporter: port away from MeshDataXD.

    Not the tests yet -- those will get done in the next round.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    4269c13 View commit details
    Browse the repository at this point in the history
  86. Configuration menu
    Copy the full SHA
    f782caa View commit details
    Browse the repository at this point in the history
  87. Configuration menu
    Copy the full SHA
    ab86b4c View commit details
    Browse the repository at this point in the history
  88. MeshTools: implemented combineIndexedAttributes().

    Replaces the STL-heavy combineIndexedArrays(), but in a less extremely
    horrendous way.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    ec739c1 View commit details
    Browse the repository at this point in the history
  89. MeshTools: deprecate remaining STL-ridden APIs.

    The combineIndexArrays() and combineIndexedArrays() API is replaced with
    a more generic combineIndexedAttributes(), and thanks to that we also
    don't need STL-based duplicate() and removeDuplicates().
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    ec02341 View commit details
    Browse the repository at this point in the history
  90. MeshTools: added removeDuplicates() / removeDuplicatesInto().

    Those work without modifying the input data. The *Indexed and fuzzy
    variants are missing as I don't need those right now, but might get
    added later.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    8a6ccea View commit details
    Browse the repository at this point in the history
  91. Configuration menu
    Copy the full SHA
    0c76896 View commit details
    Browse the repository at this point in the history
  92. Configuration menu
    Copy the full SHA
    12044b8 View commit details
    Browse the repository at this point in the history
  93. Configuration menu
    Copy the full SHA
    e30d9de View commit details
    Browse the repository at this point in the history
  94. MeshTools: doc++

    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    96368b9 View commit details
    Browse the repository at this point in the history
  95. Configuration menu
    Copy the full SHA
    5a276fe View commit details
    Browse the repository at this point in the history
  96. Trade: add getters for offset and stride in MeshAttributeData.

    Less code and complexity than first creating a StridedArrayView in
    data() and then extracting offset/stride from there.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    8c4a2b1 View commit details
    Browse the repository at this point in the history
  97. Configuration menu
    Copy the full SHA
    7a9c630 View commit details
    Browse the repository at this point in the history
  98. Trade: allow specifying explicit vertex count on MeshData construction.

    Until now, except for an attribute-less index-less mesh, the vertex
    count was only implicitly taken from passed attributes, but it was
    severely limiting:
    
     - There was no way to set vertex count for an attribute-less
       indexed mesh, which didn't make sense
     - All code that made non-owning MeshData instances referencing another
       MeshData had to explicitly handle the attribute-less corner case to
       avoid vertex count getting lost
     - Offset-only attributes couldn't be used to specify static layout of
       meshes with dynamic vertex count, causing unnecessary extra
       allocations especially in the Primitives library.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    27f6cc3 View commit details
    Browse the repository at this point in the history
  99. Primitives: use compile-time attribute definitions where possible.

    Now possible in all cases, except for grid, where the combination count
    is too large to be practical, even more so with the introduction of
    tangents in the future.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    06b8275 View commit details
    Browse the repository at this point in the history
  100. Configuration menu
    Copy the full SHA
    9a6ef0a View commit details
    Browse the repository at this point in the history
  101. Configuration menu
    Copy the full SHA
    7857388 View commit details
    Browse the repository at this point in the history
  102. Configuration menu
    Copy the full SHA
    393ba7a View commit details
    Browse the repository at this point in the history
  103. MeshTools: reorder code.

    No functional change.
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    715f611 View commit details
    Browse the repository at this point in the history
  104. Configuration menu
    Copy the full SHA
    a4bf0e6 View commit details
    Browse the repository at this point in the history
  105. CMake: MeshTools now depends on Trade unconditionally.

    Isn't it great when I discover this five minutes before merging to
    master?
    mosra committed Mar 11, 2020
    Configuration menu
    Copy the full SHA
    236954a View commit details
    Browse the repository at this point in the history