New features in this version (v0.4.0):
- Initial itch.io release! Yay!
- New mascot and demo!
- Added new export scripts for Blender 2.8
- Added better armature-mesh linking to the 2.8 export script, so now they don't need to have parent-child relationships, just the modifier.
- Added a new, basic collision system featuring raycasting and ellipse collisions. This will be documented later, when I build a fun demo.
- Extended the material system so now materials can manage GPU states individually and be ignored during certain render passes (the macro "MMK_auto_handle_gpu_resets" in MMK_models can be set to 0 to disable this). This allows materials to control whether or now they write to the zbuffer, for example. Note that global GPU states are still maintained, only those set will change.
- Fixed bugs with the material system not always being called when there is no shader change, causing visual defects in some cases
- Defined some undefined behaviour regarding passing bones to a shader
- Fixed a crash with "MMK_bone_get_transform" (forgot to comment out an unused argument)
- Added and improved armature mesh setting options, so now order can be better defined, as well as the option to check what meshes are enabled
- Added "MMK_armature_add_meshes" and "MMK_armature_set_meshes", which accept both individual meshes and mesh arrays, to streamline adding many meshes to an armature. Note that meshes are appended and set in order.
- Fixed default armature textures and materials not always being used as a fallback in cases where they should have
- Added the option to pass custom UVs to armature textures, in case you need custom ones. This can also be useful if you change a texture frequently, as it removes automatic uv_clipspace calculations.
- Made negative or < frame_1 animation setting use the first frame, which fixed an issue I believe was related to a floating point error preventing me from setting frame 0 of my test characters idle animation.
- Added some "advanced" output-matrix fetching functions, but I implemented them for reasons that don't work because I forgot, but they may be useful down the line.
- Default shaders now use blendweights and blendindices for GLSL ES as well, due to changes in how GameMaker passes inputs to attributes. I believe now names matter less, but the order of attributes is incredibly important
- Native/GML code parity maintained.
- Probably more changes/fixes, but I forgot to list them on Trello
- Functions to enable the use of "Pose Caching" - MMK_armature_set/get_matrix_output_array()
- MMK_animation_get_framecount(anim, adjust_for_gamespeed)
- Fixed another axis-angle issue (when not using native)
- When using native mode, a check is done GML-side to determine if an armature update is needed now. This was already done within the extension, but the call overhead was still apparantly eating up speed in YYC. Has little impact generally, but yields a very nice performance boost (I got a ~20% boost in the test project) for YYC when an armature hasn't changed pose and/or when using pose caching. (No real impact on VM at all though)
- A few fixes and additions relating to armature transforms.
- Fixe an export crash for when tangent export is active but the current mesh has no active UV map (zero values are added instead for now)
- Added an export option to automatically export armatures linked with the current selection. Enabled by default.
- Optimised a bunch of native code, fixed a different axis-angle issue within the DLL
My next personal goals for the project are:
- Understand how to use Blendshapes/Morph targets in Blender, and export and implement them into the Kit in some way
- Allow the export of multiple UV maps per model (Which shouldn't be too difficult). Maybe color maps too, but that's less important
- Make a basic 3D platformer demo project with the collision system
- Fix bugs?
Have fun!