Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
274759c
MeshTools: clean up and clarify removeDuplicates().
mosra Dec 30, 2019
ea7259b
MeshTools: add STL-free removeDuplicatesInPlace() & an indexed varian…
mosra Jan 4, 2020
1c74a87
Primitives: use a more efficient duplicate removal approach in Icosph…
mosra Jan 9, 2020
a1924f5
MeshTools: subdivideInPlace() accepts strided indices of any type.
mosra Jan 4, 2020
677b24a
MeshTools: doc++
mosra Feb 26, 2020
847e3c8
MeshTools: group similar functions together.
mosra Jan 5, 2020
2f15f95
MeshTools: this is also new since last release.
mosra Jan 8, 2020
29f0fdb
MeshTools: explicit generateSmoothNormals() overloads for each index …
mosra Jan 8, 2020
735c59e
MeshTools: added a duplicateInto() variant taking a 2D strided array …
mosra Jan 8, 2020
24d01e2
MeshTools: update an assertion text, add a test for it.
mosra Jan 8, 2020
db502c1
MeshTools: this test didn't test the NaNs at all.
mosra Jan 8, 2020
1684cca
MeshTools: simplify test code a bit.
mosra Jan 8, 2020
aeedf12
MeshTools: generateSmoothNormals() taking also type-erased indices.
mosra Jan 13, 2020
78a2943
MeshTools: duplicateInto() taking also type-erased indices.
mosra Jan 13, 2020
77d7931
MeshTools: added a STL-less subdivide().
mosra Jan 19, 2020
b589f15
MeshTools: deSTLify flipNormals(), flipFaceWinding() and tipsify().
mosra Jan 19, 2020
75eefdb
MeshTools: adapt flipFaceWinding(), flipNormals() and tipsify() tests.
mosra Jan 19, 2020
937689e
MeshTools: deSTLify compressIndices().
mosra Jan 22, 2020
1974da2
MeshTools: added a type-erased compressIndices().
mosra Jan 19, 2020
bae5eec
MeshTools: compressIndices() now takes also an offset.
mosra Jan 22, 2020
87c2bc7
MeshTools: implement removeDuplicates() for discrete data as well.
mosra Jan 21, 2020
7fd92c1
Reserve zero MeshPrimitive and MeshIndexType for invalid values.
mosra Nov 5, 2019
520c22f
New VertexFormat enum.
mosra Nov 4, 2019
d46061b
Make MeshPrimitive and MeshIndexType enums only 8bit.
mosra Nov 10, 2019
ecbe571
Trade: a reworked MeshData class.
mosra Nov 4, 2019
fb1fdf6
Trade: implement Importer interfaces for the new MeshData.
mosra Feb 20, 2020
fcd38ca
Trade: new enum for describing data ownership.
mosra Nov 10, 2019
8ea86b0
Trade: implement mutable data access in MeshData.
mosra Nov 11, 2019
a3ab27f
Trade: return TrackView with const types from AnimationData.
mosra Nov 11, 2019
0fd6219
Trade: mutable access in AnimationData.
mosra Nov 11, 2019
b71e50b
Trade: make AnimationData::release() consistent with MeshData.
mosra Nov 12, 2019
6ed0df2
Trade: mutable access in ImageData consistent with Animation/MeshData.
mosra Nov 13, 2019
4011e30
Trade: allow non-owning aray deleters passed through Importer APIs.
mosra Nov 13, 2019
dd5acdd
Trade: allow AnimationTrackData be created from a typed track.
mosra Nov 19, 2019
6ddcc0b
Trade: make it possible to construct AnimationData from track init list.
mosra Nov 19, 2019
8cd7508
Trade: make MeshIndexData constexpr.
mosra Feb 19, 2020
c74b4c6
Trade: make MeshAttributeData constexpr.
mosra Feb 19, 2020
93e6dc2
Trade: make AnimationTrackData constructors explicit.
mosra Nov 21, 2019
036fced
Trade: whitelist (exported) growable array deleters in imported data.
mosra Dec 6, 2019
e3ee1e5
Trade: typeless access to MeshData attributes.
mosra Feb 19, 2020
aecec18
Trade: expose getters in MeshIndexData.
mosra Jan 8, 2020
5f35b06
Trade: expose getters in MeshAttributeData.
mosra Feb 20, 2020
4764979
Trade: make it possible to construct a "padding" MeshAttributeData.
mosra Jan 12, 2020
d054226
Trade: direct access to MeshAttributeData array in MeshData.
mosra Jan 12, 2020
506740f
Trade: typeless access to MeshData indices.
mosra Feb 19, 2020
87d16bc
Trade: add a convenience MeshData::indexOffset() getter.
mosra Feb 20, 2020
270e93e
Trade: relax index/attribute/vertex count restrictions in MeshData.
mosra Feb 19, 2020
a3c5c00
Trade: make MeshData::release*() less brutal, add releaseAttributeDat…
mosra Feb 19, 2020
b016258
Trade: added MeshData::attributeId().
mosra Jan 17, 2020
ccd3d24
Trade: add (deprecated) implicit conversion of MeshData to MeshDataXD.
mosra Nov 19, 2019
3784dea
MeshTools: implement isInterleaved() for Trade::MeshData.
mosra Jan 15, 2020
1e85279
MeshTools: implement interleavedLayout().
mosra Jan 16, 2020
6c2fb3f
MeshTools: implement interleave() taking a MeshData.
mosra Jan 17, 2020
e8692af
MeshTools: implement duplicate() taking a MeshData.
mosra Jan 17, 2020
16c3480
MeshTools: implement compile() taking a MeshData.
mosra Nov 21, 2019
5481581
MeshTools: implement compressIndices() taking a MeshData.
mosra Jan 22, 2020
0f4a5ad
Trade: deprecate AbstractImporter interfaces for MeshDataXD.
mosra Nov 20, 2019
0067909
Trade, MeshTools: deprecate MeshDataXD and everything that uses it.
mosra Jan 18, 2020
c8de337
Primitives: port away from MeshDataXD.
mosra Dec 2, 2019
a68946d
Primitives: port tests and related tools away from MeshDataXD.
mosra Jan 18, 2020
fa3c949
MeshTools: improve the subdivide benchmark with in-place subdiv.
mosra Jan 4, 2020
89d6d6d
Shaders: port tests away from MeshDataXD.
mosra Jan 18, 2020
c07af03
MeshTools: port tests and benchmarks away from MeshData3D.
mosra Jan 18, 2020
35659a6
DebugTools: port away from MeshDataXD.
mosra Jan 18, 2020
53ef991
SceneGraph: port away from MeshDataXD.
mosra Jan 18, 2020
274fdc3
GL: port away from MeshDataXD.
mosra Jan 19, 2020
84ee4f3
Add packed, half and double types to VertexFormat.
mosra Feb 19, 2020
ed88b35
Trade: support packed attributes in MeshData.
mosra Feb 20, 2020
13c071a
GL: allow to construct DynamicAttribute from VertexFormat.
mosra Feb 2, 2020
ee06eb2
MeshTools: support the 40 new attribute formats by deleting some code.
mosra Feb 20, 2020
b203924
GCC 4.8, happy to see you're still around, causing problems.
mosra Nov 21, 2019
0657d60
Primitives: MSVC 2015 is this what makes you throw up?
mosra Feb 15, 2020
a02e946
Trade: allow retrieving importer data directly by name.
mosra Feb 26, 2020
5e81d10
Trade: pack MeshAttributeData internals better.
mosra Feb 16, 2020
47695f0
Trade: support offset-only MeshAttributeData.
mosra Feb 20, 2020
eb98f13
Primitives: use offset-only attribs for Line and Gradient.
mosra Feb 17, 2020
31d3cdc
Enable embedding implementation-specific values in VertexFormat.
mosra Feb 19, 2020
7d44bcc
Provide reliable mapping of VertexFormat to GL and Vulkan.
mosra Feb 22, 2020
a29e9dc
Trade: handle implementation-specific vertex formats in MeshData.
mosra Feb 21, 2020
a3bb6ba
MeshTools: explicitly handle unavailable attribute types in compile().
mosra Feb 18, 2020
f46b522
doc: dev guides for adding new mesh attributes name / type.
mosra Jan 17, 2020
c0e3a84
Trade: support array attributes in MeshData.
mosra Feb 21, 2020
c963450
Enlarge MeshPrimitive to four bytes, allow wrapping impl-specific val…
mosra Feb 26, 2020
d096aa6
Add MeshPrimitive::Instances, Faces and Edges.
mosra Feb 26, 2020
9425c23
Trade: support mesh level import in AbstractImporter.
mosra Feb 26, 2020
8f5639e
MeshTools: added removeDuplicatesInPlaceInto().
mosra Feb 27, 2020
4269c13
ObjImporter: port away from MeshDataXD.
mosra Jan 22, 2020
f782caa
ObjImporter: port the test away from MeshData3D.
mosra Jan 23, 2020
ab86b4c
AnySceneImporter: adapt to AbstractImporter changes.
mosra Nov 21, 2019
ec739c1
MeshTools: implemented combineIndexedAttributes().
mosra Feb 28, 2020
ec02341
MeshTools: deprecate remaining STL-ridden APIs.
mosra Mar 2, 2020
8a6ccea
MeshTools: added removeDuplicates() / removeDuplicatesInto().
mosra Mar 2, 2020
0c76896
Trade: various MSVC workarounds.
mosra Mar 2, 2020
12044b8
MeshTools: add type-erased flipNormals() and flipFaceWinding().
mosra Mar 3, 2020
e30d9de
MeshTools: ensure a corner case in interleave() is tested as well.
mosra Mar 3, 2020
96368b9
MeshTools: doc++
mosra Mar 3, 2020
5a276fe
Trade: high-level docs for the MeshData class.
mosra Mar 3, 2020
8c4a2b1
Trade: add getters for offset and stride in MeshAttributeData.
mosra Mar 4, 2020
7a9c630
MeshTools: add interleavedLayout() that can reuse the attribute array.
mosra Mar 4, 2020
27f6cc3
Trade: allow specifying explicit vertex count on MeshData construction.
mosra Mar 7, 2020
06b8275
Primitives: use compile-time attribute definitions where possible.
mosra Mar 7, 2020
9a6ef0a
MeshTools: new interleavedData() utility.
mosra Mar 2, 2020
7857388
MeshTools: implemented combineFaceAttributes().
mosra Mar 2, 2020
393ba7a
MeshTools: implemented concatenate() and concatenateInto().
mosra Mar 7, 2020
715f611
MeshTools: reorder code.
mosra Mar 10, 2020
a4bf0e6
MeshTools: option to disable unknown attribute warnings in compile().
mosra Mar 10, 2020
236954a
CMake: MeshTools now depends on Trade unconditionally.
mosra Mar 11, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions doc/changelog-old.dox
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ for a high-level overview.
- @cpp Buffer::invalidateData() @ce, @cpp Buffer::invalidateSubData() @ce and
@cpp Renderer::resetNotificationStrategy() @ce functions are enabled on
OpenGL ES as a no-op
- Added @ref std::vector overload of @ref MeshTools::combineIndexArrays()
- Added @ref std::vector overload of @cpp MeshTools::combineIndexArrays() @ce
for greater runtime-usage flexibility
- @ref Platform::Sdl2Application now defaults to non-resizable window, you
can change the behavior using @ref Platform::Sdl2Application::Configuration::setWindowFlags()
Expand Down Expand Up @@ -391,9 +391,9 @@ for a high-level overview.
which filled @cpp Mesh @ce and @cpp Buffer @ce directly are deprecated as
they had undesired side-effects in some cases, use the data-returning
versions instead and then configure mesh and buffer manually
- @ref MeshTools::combineIndexedArrays() taking @ref std::tuple is
- @cpp MeshTools::combineIndexedArrays() @ce taking @ref std::tuple is
deprecated, use version taking @ref std::pair instead
- @ref MeshTools::removeDuplicates() taking also list of indices is
- @cpp MeshTools::removeDuplicates() @ce taking also list of indices is
deprecated, use the function in conjunction with @ref MeshTools::duplicate().
See function documentation for more information.
- Parameter-less @cpp Mesh::draw() @ce and @cpp MeshView::draw() @ce are
Expand Down Expand Up @@ -510,8 +510,8 @@ No dependency changes in this release.
- New @ref Shaders::Generic class with common definitions, so you can
configure mesh for the generic shader and render it with any other
compatible shader
- Convenience @cpp hasNormals() @ce, @cpp hasTextureCoords2D() @ce functions to
@ref Trade::MeshData2D and @ref Trade::MeshData3D
- Convenience @cpp hasNormals() @ce, @cpp hasTextureCoords2D() @ce functions
in @cpp Trade::MeshData2D @ce and @cpp Trade::MeshData3D @ce
- OpenGL ES 3.0 build now shares list of vendor extensions with OpenGL ES 2.0
build (i.e. only those extensions that aren't part of ES 3.0 are present in
@cpp Extensions @ce)
Expand Down
162 changes: 144 additions & 18 deletions doc/changelog.dox

Large diffs are not rendered by default.

57 changes: 56 additions & 1 deletion doc/developers.dox
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ in inverse --- but usually @ref developers-deprecation "deprecate first".
- run [doxygen.py](http://mcss.mosra.cz/doxygen/) on `Doxyfile-mcss`
and verify there are no new warnings
- eyeball the relevant docs and fix suspicious things
10. Push to a temporary branch (e.g., `next`)
10. Push to a temporary branch (e.g., `next`)
11. Iterate until the CIs are green
12. Merge to `master`
13. If possible, trigger builds of dependent projects (where they are still
Expand Down Expand Up @@ -488,6 +488,61 @@ in inverse --- but usually @ref developers-deprecation "deprecate first".
8. If possible, trigger builds of dependent projects and verify they are still
green (or wait for the scheduled builds)

@section developers-adding-attribute Checklist for adding a new mesh attribute

1. Extend @ref Trade::MeshAttribute with the new entry
2. Add a corresponding reserved type to @ref Shaders::Generic, if not there
already
- Also update `src/Magnum/Shaders/generic.glsl` with the reserved ID
3. Update the type assertion in the @ref Trade::MeshAttributeData constructor
to account for the new type
4. Add a pair of convenience getters to @ref Trade::MeshData similar to e.g.
@ref Trade::MeshData::normalsInto() / @ref Trade::MeshData::normalsAsArray()
with a type that's the same as the one used in the @ref Shaders::Generic
definition, test that it does the right thing for every supported type
5. Update @ref Trade::operator<<(Debug&, MeshAttribute) for the new entry
6. Update @ref MeshTools::compile() to recognize the new attribute. If there
is already a builtin shader capable of using this attribute, add new test
to `MeshToolsCompileGLTest`.
7. Push to a temporary branch (e.g., `next`)
8. Iterate until the CIs are green
9. Merge to `master`

@section developers-adding-vertex-format Checklist for adding a new vertex format

1. Extend @ref VertexFormat with the new entry, if it's not there already,
document mapping to GL, Vulkan, D3D and Metal (if exists)
2. Update docs of @ref Trade::MeshAttribute to mention where the format can be
newly used
3. Appropriately relax the assertion in the @ref Trade::MeshAttributeData
constructor
3. Extend `Trade::Implementation::vertexFormatFor()`, add a mapping between
this entry and a C++ type, optionally also
`isVertexFormatCompatibleWithAttribute()` if there's more than one entry
corresponding to a particular C++ type. If the mapping is unconventional,
be sure to mention it in the
@ref Trade::MeshAttributeData::MeshAttributeData(MeshAttribute, const Containers::StridedArrayView1D<T>&)
constructor docs.
4. Update corresponding `Trade::MeshData::*Into()` convenience getters to
ensure they can handle this type
5. Update `src/Magnum/Implementation/vertexFormatMapping.hpp` and
`src/Magnum/Vk/Implementation/vertexFormatMapping.hpp` with the new entry
6. Update @ref vertexFormatSize(), @ref vertexFormatComponentFormat(),
@ref vertexFormatComponentCount() and @ref isVertexFormatNormalized() to
handle this format
7. Update the @ref GL::hasVertexFormat() utility and
@ref GL::DynamicAttribute::DynamicAttribute(Kind, UnsignedInt, VertexFormat)
constructor to provide mapping of the new type to GL; add a test for the
new type, if it's special in some way, otherwise the all-catching loop will
check it
8. Update @ref MeshTools::compile() to recognize the new type (if anything
extra needs to be done, usually doesn't as everything is handled by
@ref GL::DynamicAttribute already); add corresponding new test(s) to
`MeshToolsCompileGLTest`.
9. Push to a temporary branch (e.g., `next`)
10. Iterate until the CIs are green
11. Merge to `master`

@section developers-gl-extensions Checklist for adding / removing GL versions and extensions

1. Install [flextGL](https://github.com/mosra/flextgl)
Expand Down
Loading