This release is a preface to bigger new features to come that require some modifications to the library. It is being released earlier to give you more time to accommodate to the changes and to give us time to fix potential issues while we also work on the new features. Please make sure to read this changelog thoroughly before updating to this release!
To simplify the structure of the library and to allow certain planned features to be implemented, modules had to be reorganized, with a lot of the API being put into the Core module. The Core module now contains all the basics and the rest are modules that add features on top of that.
BBMOD DLL is now also a part of the Core module and its path in the included files can be controlled only through a new macro BBMOD_DLL_PATH
! This is because it could be utilized throughout other parts of the library when possible (e.g. to speed things up or enable features otherwise unsupported on certain platforms).
GameMaker supports vertex texture fetching (VTF) on most platforms, known exceptions being PS4, PS5, Xbox and Windows. We would like to utilize VTF on desktop platforms in one of the future updates, so we are adding support for VTF on Windows through the BBMOD DLL. You can now use bbmod_vtf_is_supported
to check if VTF is supported on the current platform and bbmod_texture_set_stage_vs
to pass a texture to a vertex shader.
Before it was not possible to share a single material between static, animated and dynamically batched models. Instead you had to create a separate copy of the material with a special shader. This issue has been resolved by adding shader variants. Each BBMOD_Shader
can now consist of multiple GameMaker shader resources, where each is used with a different vertex format. This means that you can now use BBMOD_MATERIAL_DEFAULT
for all three model kinds, without the _ANIMATED
or _BATCHED
suffix.
To enable us to develop multiple rendering pipelines, BBMOD_Renderer
had to be split into BBMOD_BaseRenderer
and BBMOD_DefaultRenderer
. The former is a new base struct for all renderers and the latter is a replacement for the old renderer. Aditionally, everything regarding the default materials and the default renderer was put into a single folder, so it is easier to find all resources used in the default rendering pipeline.
Reset
to BBMOD_RaycastResult
, which resets its properties to their default values.__
(two underscores) to "hide" it from autocomplete.BBMOD_Collider
, BBMOD_Node
, BBMOD_Vertex
, BBMOD_VertexFormat
, BBMOD_ParticleModule
, BBMOD_Property
and BBMOD_Shader
now inherit from BBMOD_Class
.BBMOD_MAX_BONES
, which is the maximum number of bones a single model can have. Equals to 128.set_node_rotation_post
to BBMOD_AnimationPlayer
, which sets a post-rotation of a node.BBMOD_MAX_BATCH_VEC4S
, which is the maximum number of vec4 uniforms for dynamic batch data available in the default shaders.bbmod_vtf_is_supported
, which checks if vertex texture fetching is supported on the current platform.bbmod_texture_set_stage_vs
, which passes a texture to a vertex shader.DepthOnly
to enum BBMOD_ERenderPass
, which is a render pass where opaque objects are rendered into an off-screen depth buffer.Deferred
of enum BBMOD_ERenderPass
is now deprecated! Please use the new DepthOnly
instead.GBuffer
to enum BBMOD_ERenderPass
, which is a render pass where opaque objects are rendered into a G-Buffer.add_variant
to BBMOD_Shader
, which adds a shader variant to be used with a specific vertex format.has_variant
to BBMOD_Shader
, which checks whether the shader has a variant for given vertex format.VertexFormat
of BBMOD_Shader
is now obsolete! Please use the new method has_variant
instead._shader
and _vertexFormat
of BBMOD_Shader
's constructor are now optional. If specified, then they are added to the shader with the new method add_variant
.get_variant
to BBMOD_Shader
, which retrieves a shader variant for given vertex format.Raw
of BBMOD_Shader
is now obsolete! Please use the new method get_variant
instead.get_name
of BBMOD_Shader
is now obsolete and will always return undefined
!is_compiled
of BBMOD_Shader
now checks if all its variants are compiled!set_uniform_f
, set_uniform_f2
, set_uniform_f3
, set_uniform_f4
, set_uniform_f_array
, set_uniform_i
, set_uniform_i2
, set_uniform_i3
, set_uniform_i4
, set_uniform_i_array
, set_uniform_matrix
, set_uniform_matrix_array
and set_sampler
of BBMOD_Shader
!get_uniform
and get_sampler_index
of BBMOD_Shader
are now obsolete and will always return -1
!set
of BBMOD_Shader
now expects argument _vertexFormat
, which is used to set a specific shader variant!BBMOD_RenderQueue.draw_mesh
to draw_mesh(_vertexBuffer, _vertexFormat, _primitiveType, _materialIndex, _material, _matrix)
!BBMOD_RenderQueue.draw_mesh_animated
to draw_mesh_animated(_vertexBuffer, _vertexFormat, _primitiveType, _materialIndex, _material, _matrix, _boneTransform)
!BBMOD_RenderQueue.draw_mesh_batched
to draw_mesh_batched(_vertexBuffer, _vertexFormat, _primitiveType, _materialIndex, _material, _matrix, _batchData)
!_matrix
to BBMOD_Model.render
, which is the world matrix to use when rendering the model. It defaults to matrix_get(matrix_world)
when not specified.BBMOD_SprCheckerboard
to BBMOD_SprDefaultBaseOpacity
!BBMOD_SHADER_DEPTH
, BBMOD_SHADER_DEPTH_ANIMATED
and BBMOD_SHADER_DEPTH_BATCHED
to the Core module!BBMOD_SHADER_DEFAULT_DEPTH
, which is a substitution for the old BBMOD_SHADER_DEPTH
. It contains shader variants for vertex formats BBMOD_VFORMAT_DEFAULT_ANIMATED
, BBMOD_VFORMAT_DEFAULT_BATCHED
and BBMOD_VFORMAT_DEFAULT_LIGHTMAP
.BBMOD_SHADER_DEPTH
, BBMOD_SHADER_DEPTH_ANIMATED
and BBMOD_SHADER_DEPTH_BATCHED
are now deprecated! Please use the new BBMOD_SHADER_DEFAULT_DEPTH
instead.BBMOD_ShDepth
, BBMOD_ShDepthAnimated
and BBMOD_ShDepthBatched
to BBMOD_ShDefaultDepth
, BBMOD_ShDefaultDepthAnimated
and BBMOD_ShDefaultDepthBatched
respectively!BBMOD_LightmapMaterial
and BBMOD_LightmapShader
to the Core module!BBMOD_DefaultLightmapMaterial
and BBMOD_DefaultLightmapShader
, which are substitutions for BBMOD_LightmapMaterial
and BBMOD_LightmapShader
respectively.BBMOD_LightmapMaterial
now inherits from the new BBMOD_DefaultLightmapMaterial
and is marked as deprecated! Please use BBMOD_DefaultLightmapMaterial
instead.BBMOD_LightmapShader
now inherits from the new BBMOD_DefaultLightmapShader
and is marked as deprecated! Please use BBMOD_DefaultLightmapShader
instead.BBMOD_VFORMAT_LIGHTMAP
, BBMOD_SHADER_LIGHTMAP
, BBMOD_SHADER_LIGHTMAP_DEPTH
and BBMOD_MATERIAL_LIGHTMAP
to the Core module!BBMOD_VFORMAT_DEFAULT_LIGHTMAP
, which is a vertex format of lightmapped models with two UV channels.BBMOD_VFORMAT_LIGHTMAP
is now deprecated! Please use the new BBMOD_VFORMAT_DEFAULT_LIGHTMAP
instead.BBMOD_SHADER_DEFAULT_LIGHTMAP
, which is a shader for rendering lightmapped models with two UV channels.BBMOD_SHADER_LIGHTMAP
is now deprecated! Please use the new BBMOD_SHADER_DEFAULT_LIGHTMAP
instead.BBMOD_SHADER_LIGHTMAP_DEPTH
is now deprecated! Please use the new BBMOD_SHADER_DEFAULT_DEPTH
instead.bbmod_lightmap_get
and bbmod_lightmap_set
to the Core module!BBMOD_ShLightmap
to BBMOD_ShDefaultLightmap
!BBMOD_ShLightmapDepth
to BBMOD_ShDefaultDepthLightmap
!BBMOD_VFORMAT_SPRITE
, BBMOD_SHADER_SPRITE
and BBMOD_MATERIAL_SPRITE
to the Core module!BBMOD_VFORMAT_DEFAULT_SPRITE
, which is a vertex format of 2D sprites.BBMOD_VFORMAT_SPRITE
is now deprecated! Please use the new BBMOD_VFORMAT_DEFAULT_SPRITE
instead.BBMOD_SHADER_DEFAULT_SPRITE
, which is a shader for 2D sprites.BBMOD_SHADER_SPRITE
is now deprecated! Please use the new BBMOD_SHADER_DEFAULT_SPRITE
instead.BBMOD_MATERIAL_DEFAULT_SPRITE
, which is a material for 2D sprites.BBMOD_MATERIAL_SPRITE
is now deprecated! Please use the new BBMOD_MATERIAL_DEFAULT_SPRITE
instead.BBMOD_ShSprite
to BBMOD_ShDefaultSprite
!BBMOD_Renderer
from to the Core module!BBMOD_BaseRenderer
, which is a base struct for renderers.BBMOD_DefaultRenderer
, which inherits from BBMOD_BaseRenderer
and implements the same functionality as BBMOD_Renderer
did.BBMOD_Renderer
now inherits from the new BBMOD_DefaultRenderer
and is marked as deprecated! Please use BBMOD_DefaultRenderer
instead._path
from BBMOD_DLL
's constructor. The new BBMOD_DLL_PATH
is now always used instead!Path
of BBMOD_DLL
is now obsolete!BBMOD_DLL_IS_SUPPORTED
, which evaluates to true
if BBMOD DLL is supported on the current platform and the dynamic library exists.BBMOD_DLL_PATH
, which is the path to the BBMOD dynamic library.BBMOD_SHADER_INSTANCE_ID
now contains variants for vertex formats BBMOD_VFORMAT_DEFAULT_ANIMATED
, BBMOD_VFORMAT_DEFAULT_BATCHED
and BBMOD_VFORMAT_DEFAULT_LIGHTMAP
.BBMOD_SHADER_INSTANCE_ID_ANIMATED
, BBMOD_SHADER_INSTANCE_ID_BATCHED
and BBMOD_SHADER_LIGHTMAP_INSTANCE_ID
are now deprecated! Please use BBMOD_SHADER_INSTANCE_ID
instead.BBMOD_ShLightmapInstanceID
to BBMOD_ShInstanceIDLightmap
!BBMOD_ShInstanceIDLightmap
and macro BBMOD_SHADER_LIGHTMAP_INSTANCE_ID
to the Gizmo module!BBMOD_ResourceManager
to the Core module!BBMOD_MeshBuilder
to the Core module!BBMOD_Importer
to the Core module!BBMOD_OBJImporter
!BBMOD_BaseCamera
and BBMOD_Camera
to the Core module!BBMOD_ECubeSide
and struct BBMOD_Cubemap
to the Core module!global.bbmod_render_queues
, which was obsolete!IsSkeleton
of BBMOD_Node
, which was obsolete!set_skeleton
of BBMOD_Node
, which was obsolete!Copyright © 2023, BlueBurn. Built on September 11, 2023 using GMDoc.