Skip to content

Conversation

@aidanthomas26
Copy link

Added simple import and export material information with usage commands available.

ajkomolafe and others added 30 commits October 9, 2025 22:15
read material name and set as shader name in 3dm-g
create_material and assign
read all materials and assign after
… multi-line content - improve the parsing to handle it.
Want to test out the ssdeep fuzzy hashing algorithm to group similar .g files.
Of the available implementations, SsdeepNET has an MIT license but was
implemented in C#.  Tried out Github Copilot to see if it could produce a C++
version of the SsdeepNET code.  A basic test with the gdiff regression test
examples seems to produce reasonable results, so go ahead and stash the header.

Next up will be to figure out a good way to analyze a lot of files to identify
and report groupings.
starseeker and others added 30 commits November 25, 2025 12:06
With bext, we have the upstream project from which these algorithm
implementations were orignially derived. Simplify our own code by directly
using the upstream and removing the translations - upstream is actively
maintained, so in addition to code simplification we will benefit from any
bug fixes and improvements they make.
Global registry objects (using STL containers) in libged and libdm were defined
as static variables at file scope. This risks "static initialization order
fiasco" - static constructors from other translation units (TUs) may access the
registries before they are initialized, causing crashes or undefined behavior,
especially in static builds with plugins.

The solution is to convert global registry objects to function-local static
"Meyers singletons". All registry accesses now use singleton getter functions,
ensuring construction is ordered and thread-safe by C++11 guarantees.

With this approach function-local statics are initialized on first use,
guaranteeing that any plugin constructor or TU macro accessing the registry
always gets a fully constructed object, regardless of cross-TU initialization
order. This makes static and dynamic plugin registration robust across all
platforms and build/link scenarios.
read through all materials not just assigned ones
supported legacy mats
remove thirdgen not documented
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants