Qt Quick 3D: Week 42
https://marketplace.qt.io/products/qt-quick-multieffect is only compatible with Qt 5.15.
It should be possible to create a Qt 6 version with a number of fairly straightforward changes, while keeping the entire QML API as-is, changing only the underlying details.
- Have a simple, static path for cases when only a single effect is applied.
- "static" refers to the way we typically implement shader effects in Qt 6: have the static shader code in a separate file, run it through qsb either offline or at build time (if using CMake), and bundle and reference the .qsb files at run time.
- When effects are stacked, we need dynamic shader code generation. (there can be potential solutions to avoid this, just like Qt Quick 3D tries to offer a solution of pregenerating shaders for materials of a given scene, but that is out of scope for this task)
- This involves pulling in the qtshadertools module as a dependency. May want to investigate if/how that dependency could be made optional, allowing users on embedded platforms disable it (which would imply disabling support for effect stacking in such builds)
- The "module" on Marketplace is not a Qt module at all, rather just some code one can place into one's own applications. This is not quite ideal, so convert it into a standalone, proper Qt module.
- Other similar components on the Marketplace, such as the TreeView, are proper Qt modules already, although with support for qmake only.
- As we are focusing on Qt 6 here, the module should include both CMake and qmake project files.
- Revisit what examples and tests are included.
- It can be helpful to have some simple visual autotests, to provide basic protection against regressions. (which is also expected from a professional product)
- We should get a more thorough overview of how the effect implementations compare to Qt Graphical Effects.
- For example, if one applies a drop shadow via MultiEffect, how does the shader code under the hood compare to GraphicalEffects' shadow implementations (of which in Qt 5 there are two)?
- Testing on some typical embedded devices won't hurt.