This major release of BBMOD focuses on modularity of the GML library, increased animation playback performance and support for advanced rendering pipelines.
2
to 3
.--optimize-animations
(-oa
) using which you can configure the animation optimization level.--sampling-rate
(-sr
) using which you can configure the animation sampling rate (fps).General:
./BBMOD
to ./Data/BBMOD
.BBMOD_VERSION
from 2
to 3
. It is not possible to load *.bbmod
and *.bbanim
files from previous versions.BBMOD_SprDefaultMaterial
to BBMOD_SprCheckerboard
and removed its subimages except for the first one, which is the checkerboard texture.DLL:
get_optimize_animations
and set_optimize_animations
to BBMOD_DLL
using which you can configure the animation optimization level.get_sampling_rate
and set_sampling_rate
to BBMOD_DLL
using which you can configure the animation sampling rate (fps).Vertex format:
BBMOD_VertexFormat.get_byte_size
, which retrieves a size of a single vertex using the vertex format in bytes.BBMOD_VFORMAT_DEFAULT
, BBMOD_VFORMAT_DEFAULT_ANIMATED
and BBMOD_VFORMAT_DEFAULT_BATCHED
, which are the default vertex formats for static, animated and dynamically batched models respectively.Mesh:
BBMOD_EMesh
into a GMS2.3+ struct BBMOD_Mesh
.VertexFormat
to BBMOD_Mesh
. This is a BBMOD_VertexFormat
that the mesh uses.Node:
BBMOD_ENode
into a GMS2.3+ struct BBMOD_Node
.Parent
to BBMOD_Node
, which is the parent of the node or undefined
if it is the root node.IsBone
to BBMOD_Node
, which tells whether the node or any node down the chain is a part of a skeleton. This is used to increase performance of animation playback.BBMOD_Node.set_skeleton
using which you can mark a node as a part of a skeleton node chain.IsRenderable
to BBMOD_Node
, which tells whether the node or any node down the chain has a mesh. This is used to increase performance of model rendering.BBMOD_Node.set_renderable
using which you can mark a node as renderable.Shaders and materials:
BBMOD_ShDefault
, BBMOD_ShDefaultBatched
and BBMOD_ShDefaultAnimated
to BBMOD_ShPBR
, BBMOD_ShPBRBatched
and BBMOD_ShPBRAnimated
respectively.BBMOD_Shader
, which wraps regular GM shader resources.BBMOD_Material
now accepts a BBMOD_Shader
instead of a regular GM shader resource.BBMOD_PBRMaterial
which inherits from BBMOD_Material
. Moved PBR-only properties of BBMOD_Material
to BBMOD_PBRMaterial
.BBMOD_Material
's RenderPath
property to RenderPass
.bbmod_get_materials
which returns an array of all existing materials.Priority
to BBMOD_Material
. This property determines the order of materials in the array returned by bbmod_get_materials
.Repeat
to BBMOD_Material
using which you can configure texture repeat for the material.BBMOD_Material.set_priority
, using which you can change the Priority
property of a BBMOD_Material
.TextureOffset
and TextureScale
to BBMOD_Material
, using which you can control its texture coordinates within a texture page.BBMOD_Material.apply
now returns the self
(BBMOD_Material
) instead of a boolean.BBMOD_Material.copy
which copies the material's properties into another material.BBMOD_Material.set_base_opacity
using which you can change the material's base color and opacity using floats.BBMOD_Material.OnApply
property from bbmod_material_on_apply_default
to undefined
.bbmod_material_on_apply_default
. Setting shader uniforms and textures is now taken care of by the BBMOD_Shader
struct.BBMOD_SHADER_DEFAULT
, BBMOD_SHADER_DEFAULT_ANIMATED
and BBMOD_SHADER_DEFAULT_BATCHED
, which are the default shaders for static, animated and dynamically batched models respectively.BBMOD_SHADER_PBR
, BBMOD_SHADER_PBR_ANIMATED
and BBMOD_SHADER_PBR_BATCHED
, which are PBR shaders for static, animated and dynamically batched models respectively.BBMOD_MATERIAL_PBR
, BBMOD_MATERIAL_PBR_ANIMATED
and BBMOD_MATERIAL_PBR_BATCHED
, which are PBR materials for static, animated and dynamically batched models respectively.Rendering:
BBMOD_RenderCommand
.RenderCommands
to BBMOD_Material
. This property is a list of BBMOD_RenderCommand
structs that use the material.render
of BBMOD_Model
, BBMOD_DynamicBatch
and BBMOD_StaticBatch
to submit
. This method still immediately draws the model.render
to BBMOD_Model
, BBMOD_DynamicBatch
and BBMOD_StaticBatch
, which enqueues the model for rendering.render_object
of BBMOD_DynamicBatch
to submit_object
. This method still immediately draws the dynamic batch.render_object
to BBMOD_DynamicBatch
, which enqueues the dynamic batch for rendering.render([_materials])
and submit([_materials])
to BBMOD_AnimationPlayer
. These are shorthands for model.render(materials, animationPlayer.get_transform())
and model.submit(materials, animationPlayer.get_transform())
respectively.BBMOD_Material.submit_queue
using which you can submit all its render commands.BBMOD_RENDER_SHADOWS
, which is a flag used to tell that a material is rendered in a shadow pass.Animations:
BBMOD_EAnimationNode
, BBMOD_EAnimationKey
, BBMOD_EPositionKey
, BBMOD_ERotationKey
and BBMOD_EBone
. Animation data is now stored in a more optimal way.InterpolateFrames
of BBMOD_AnimationPlayer
. All frames are now precomputed.AnimationStart
of BBMOD_AnimationInstance
.supports_attachments
, supports_bone_transform
and supports_transitions
to BBMOD_Animation
using which you can check if the animation supports node attachments, bone transformations through code and transitions respectively. This is determined by the optimization level of the animation.get_node_transform_from_frame
to BBMOD_AnimationPlayer
using which you can retrieve a node's transform from the last played animation frame.OnEvent
of BBMOD_AnimationPlayer
with methods on_event
and off_event
.Animation
and AnimationLoops
to BBMOD_AnimationPlayer
which is the last played animation and whether it loops respectively.change
to BBMOD_AnimationPlayer
. The animation player now remembers the last played animation and if a different one is passed it automatically transitions into it. This also triggers a new animation event BBMOD_EV_ANIMATION_CHANGE
.BBMOD_EV_ANIMATION_LOOP
, which is an event triggered by an animation player when the animation played loops and continues from the start.add_event
to BBMOD_Animation
using which you can add a custom animation event triggered at a specific frame.Camera and renderer:
BBMOD_Camera
which implements both first-person and third-person camera.BBMOD_IRenderable
which defines an abstract interface of renderable objects. These can be rendered in the BBMOD_Renderer
struct.BBMOD_Renderer
which implements a basic render pipeline. This struct can be inherited from to define custom render pipelines.Mesh builder and model importer:
BBMOD_Vertex
.BBMOD_MeshBuilder
, using which you can create BBMOD meshes through code.BBMOD_Importer
, which is a base struct for model importers.BBMOD_OBJImporter
, which is an importer of *.obj
models.Math library:
BBMOD_Vec2
, BBMOD_Vec3
, BBMOD_Vec4
, BBMOD_Quaternion
and BBMOD_DualQuaternion
.Exceptions:
BBMOD_Error
to BBMOD_Exception
.BBMOD_NotImplementedException
, which is an exception thrown in methods that do not have an implementation (generally in methods of abstract interfaces).Third-party libraries support:
bbmod_mesh_to_colmesh
and bbmod_model_to_colmesh
using wich you can add BBMOD_Mesh
s and BBMOD_Model
s to TheSnidr's ColMesh, a popular library for 3D collisions.Copyright © 2023, BlueBurn. Built on September 11, 2023 using GMDoc.