Browse Source

doc: dev guides for adding new mesh attributes name / type.

pull/371/head
Vladimír Vondruš 6 years ago
parent
commit
f46b522ec5
  1. 57
      doc/developers.dox

57
doc/developers.dox

@ -407,7 +407,7 @@ in inverse --- but usually @ref developers-deprecation "deprecate first".
- run [doxygen.py](http://mcss.mosra.cz/doxygen/) on `Doxyfile-mcss` - run [doxygen.py](http://mcss.mosra.cz/doxygen/) on `Doxyfile-mcss`
and verify there are no new warnings and verify there are no new warnings
- eyeball the relevant docs and fix suspicious things - 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 11. Iterate until the CIs are green
12. Merge to `master` 12. Merge to `master`
13. If possible, trigger builds of dependent projects (where they are still 13. If possible, trigger builds of dependent projects (where they are still
@ -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 8. If possible, trigger builds of dependent projects and verify they are still
green (or wait for the scheduled builds) 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 @section developers-gl-extensions Checklist for adding / removing GL versions and extensions
1. Install [flextGL](https://github.com/mosra/flextgl) 1. Install [flextGL](https://github.com/mosra/flextgl)

Loading…
Cancel
Save