Closed mosra closed 4 years ago
Regarding TextureTools::atlas() there are two suggestions: https://github.com/juj/RectangleBinPack https://github.com/TeamHypersomnia/rectpack2D
And I wanted to bring you attention to additional stuff that might give you ideas later on the road: https://github.com/azhirnov/FrameGraph https://github.com/acdemiralp/fg Those two will assist more the Vulkan and OpenGL AZDO paths.
//Edit Forgot to mention also a serialization suggestion, header only https://github.com/USCiLab/cereal (of course you could ignore the xml and json part of the serialization, and I'm not sure if it's zero-copy). //Edit
Best regards
@ytain thank you! Yes, that thing from TeamHypersomnia is what I wanted to implement, as it's pretty small at its core.
Serialization (or its beginnings at least) will be done as part of #371. I really wanted to try something totally different here (with deserialization taking exactly 0 instructions), will see how it goes.
This might be or not be a stretch, but it could be interesting: through MoltenVK you might be able to add Metal as a render target, making the iOS/Mac support better since Apple is now so heavily pushing Metal (even deprecating OpenGL). Just an idea - it would be really interesting since mobiles are our primary target and Magnum seems really great :)
@Velocity- That's the plan, in fact :) Though probably won't fit into this release, the list above is quite long already.
Powered By Magnum
You should have a logo printed up of that, happy to put that in the README of the project. ^__^
With regard to framegraph stuff that I mentioned in an earlier post of mine in this thread, you can see the benefits of using a framegraph approach to make a performant 3d engine.
Case in point, there's a graph showing which GPU states are expensive when changing:
https://computergraphics.stackexchange.com/questions/37/what-is-the-cost-of-changing-state/46#46
Best regards
:tada: All done, finally. Release notes here: https://blog.magnum.graphics/announcements/2020.06/
Should have been 2019.12, but hey -- I took a (semi-)break and survived until 2020!
There's a ton of little things, so better list them so I don't forget:
version.h
/versionPlugins.h
/versionExtras.h
... everywhere -- mosra/corrade@7e0c03d71d7d6b9647a1d20f2802b30bb431329e, mosra/magnum@293f092f144fd2362e57baad162c573a4d02a9damake ImGuiIntegration work with cmake-enabled add_subdirectory'd imgui? https://github.com/rAum/magnum-integration/commit/d5e3dad27b238e8fda3b75f3ac518603c076cad3postponedlook at imgui in dynamic build (https://github.com/mosra/magnum-integration/issues/67)postponedInstall 3rd party cmake find modules along with Magnum, to magnum's own dir so they don't conflict (and then add this dir to module path so these are found)postponed,ImageData::pixels()
etc. rely on strided array view included before the header -- forward-declare arrayCast to avoid that -- cd7d080fbde57923d69eef48574ac877684deab1<=
https://github.com/mosra/magnum/blob/a2118730a38f4f77297bb84108978f01f8d875bd/src/Magnum/Resource.h#L288 -- 47e1106633d824218a2626259813686bd1fa92c5Make libPNG / libJPEG version mismatch checks in plugin code non-fatal (check with homebrew libjpeg and libjpeg-turbo to be sure)nope, keeping them fatal -- in case of libJPEG this is a decoding error which we can't skip, in case of libPNG we'd need to fake the version string, which would work against the API that's there in the first placeMove key/button/... enums to the base Application class to things likepostponed as i don't have a good idea about the namingkeyState(Key)
are possibledisable upgrading (uhhh).brew unlink python@2
(uhhh)Community Featuresa newCommunity ShowcasePowered By Magnum page, along with other projectsFinish growable arrays (arbitrary insertion / deletion)postponed, #293postponed to #423WM_DPICHANGED
event on GLFW 3.3 & Windows (#243), check also Mac with multiple differently dense monitorsglfwGetWindowContentScale()
for getting virtual DPI scaling on windows when we have GLFW 3.3+ at least (and make the original just physical (and also complain that glfw is too old when trying to use virtual on 3.2 and below)), but keep the original handling for Linux as it's also used in Sdl2App and many Linux distros still have just 3.2 -- 444b925b2a2b04ebd12e2683c40fff53397a6418WM_SIZE
event on Windows long before the event loop gets entered (repro case -- move Configuration into the constructor),possible workaround would be to suppress the events before mainLoopIteration gets calledpartially worked around by ignoring the first-ever viewport event (c17f5a0340d61909d515438c49fefec891c7387b)assert(false)
in the constructor does the same -- 8af1f6a91e71c72f07ab00d481aa4684fe601723And mosra/toolchains#11postponedKHR_mesh_quantization
support in TinyGltfImporter (so we support all data types) -- mosra/magnum-plugins@80028f6f130a41015184de7a8195b9827f66874dKHR_texture_transform
in TinyGltfImporter -- mosra/magnum-plugins@7345d789638edf39e9a7c062c27110ac2ffa75bcMeshTools::compile()
-- 80c6fef7bff966f44f509c75846616ba5c1cdf5dTangent/bitangent generation using http://www.mikktspace.com/postponedMeshTools::compile()
-- ea3bcb6d93012071192c495a2a12a2b0619ff41aobject_id
) / glTF (_OBJECT_ID
)MeshTools::owned()
,MeshTools::reference()
becauseconcatenate()
is not good for that, update all code that used it like that before -- fdb754bc27bb68ade5a4ba2b38f37319956fadc5stride % 4 != 0
in MeshOptimizer -- mosra/magnum-plugins@12c21322237e7b5a794de81b40596f7230758cfafixed border classification in meshoptimizer master could improve simplification artifacts?not reallyTexture coordinate support in the cube primitive (one with a single texture for all faces, one with a center strip and two "ears" up and down, one packing six faces)potponedExtend format support in DDS (https://github.com/mosra/magnum-plugins/pull/67)postponed as it needs the CompressedImage APIs to be aware of data sizesMake a BC6H converter plugin using something from #146not really a priority anymore, postponedMake a DDS converter that can contain the BC6H datapostponed, rather invest time into KTX2Zero-copy import for gltf so we can operate on the data in-place (#240) -- just a MVP, glb only, as I need it for the dataset fixupspostponedNeedspostponedCgltfImporter
because tinygltf can't be helped :/TextureTools::atlas()
(I have some links somewhere, don't remember where) -- with binary search that aims to fit into the smallest rectangle, plus trying a few sorting strategies, picking the one that fits best (don't need an incremental version yet, it's again just for the dataset fixups)~~ postponed, links saved to #143mesh.draw(shader)
->shader.draw(mesh)
, also the xfb and MeshView version, deprecate the original -- 32d49db4028eccde901869e480bf1c9c275ccbcaexit(0);
in Application constructor should exit immediately after constructor ends, not process events or other stuff (mainLoopIteration()
returningfalse
directly, basically), document that it's a clean way to exit (compared tostd::exit()
) and suggestreturn exit(0)
-- #429, 2149e78f824c02d9a16d2580a6528a2dcf6dfc89Make "globals shared across SOs" work for flextGL-generated function pointers in progress mosra/magnum@b580458104d5fbeaebb98ce8eff3323758c99957, postponed, apparently works only with pointers and i'm not sure of the cost of the additional indirectionMake the cone primitive properly smooth (how?!)postponedfixpostponed, https://github.com/mosra/magnum/pull/435Math::cross()
catastrophic cancellation according to https://pharr.org/matt/blog/2019/11/03/difference-of-floats.htmlupdate basis plugins for UASTC support -- mosra/magnum-plugins#86postponed, the new version crashes even on the most trivial tests, meshlets and serializationfrom #427 -- https://blog.magnum.graphics/announcements/new-geometry-pipeline/Stretch goals:
Minimalinstancing in Phong/Flat -- a1f1f66c04daaa32ee3153ac9a9c0ab8cf9dceb5, 55685ea382ac65171fcc2c7826c7cba9443708bfwhich can also take texture coordinates of a 3D mesh and visualize the UV layoutpostponedOutlier removal inpostponedDebugTools::CompareImage
(also visualize those somehow .. with a box?)Aligned allocation (postponedUtility/Memory.h
, which could be used for stuff like magic ring buffers or non-reallocating arrays in the future also)magnum-imageconverter
without doing anything else -- 92655c72384c8cb05bc6eedfd2759d9688712a8dsceneconverter
with the same -- 1c51b98d76ed4ee74c7d73a5aa929139d6893ccf