Releases: blueburncz/BBMOD
3.7.0
This release adds new Particles module, using which you can create CPU particle effects. Additionally, passing of colors of lights to shaders was changed, which enabled using alpha channels to control their intensity.
Changelog:
GML API:
Particles module:
- Added new module - Particles.
- Added new macro
BBMOD_VFORMAT_PARTICLE
, which is a vertex format of a single billboard particle. - Added new macro
BBMOD_VFORMAT_PARTICLE_BATCHED
, which is a vertex format of dynamic batch of billboard particles. - Added new macro
BBMOD_MODEL_PARTICLE
, which is a billboard particle model. - Added new macro
BBMOD_SHADER_PARTICLE_UNLIT
, which is a shader for rendering dynamic batches of unlit billboard particles. - Added new macro
BBMOD_SHADER_PARTICLE_LIT
, which is a shader for rendering dynamic batches of lit billboard particles. - Added new macro
BBMOD_SHADER_PARTICLE_DEPTH
, which is a shader for rendering dynamic batches of billboard particles into depth buffers. - Added new macro
BBMOD_MATERIAL_PARTICLE_UNLIT
, which is the default material for rendering dynamic batches of unlit billboard particles. - Added new macro
BBMOD_MATERIAL_PARTICLE_LIT
, which is the default material for rendering dynamic batches of lit billboard particles. - Added new enum
BBMOD_EParticle
, which is an enumeration of particle properties. - Added new struct
BBMOD_ParticleModule
, which is a base struct for particle modules. These are composed into particle system to define behavior of their particles. - Added new struct
BBMOD_ParticleSystem
, which is a collection of particle modules that together define behavior of particles. - Added new struct
BBMOD_ParticleEmitter
, which emits particles at a specific position in the world. The behavior of the emitted particles is defined by a particle system. - Added new struct
BBMOD_ParticleShader
, which is a shader used by particle materials. - Added new struct
BBMOD_ParticleMaterial
, which is a material that can be used for rendering particles. - Added new struct
BBMOD_EmissionModule
, which is a particle module that spawns particles at the start of a particle emitter's life. - Added new struct
BBMOD_EmissionOverTimeModule
, which is a particle module that emits particles over time. - Added new struct
BBMOD_MixEmissionModule
, which is a particle module that spawns random number of particles at the start of a particle emitter's life. - Added new struct
BBMOD_AABBEmissionModule
, which is a particle module that positions spawned particles into an AABB shape. - Added new struct
BBMOD_SphereEmissionModule
, which is a particle module that positions spawned particles into a sphere shape. - Added new struct
BBMOD_RandomRotationModule
, which is a particle module that randomly sets particles' rotation on their spawn. - Added new struct
BBMOD_MixSpeedModule
, which is a particle module that randomly sets initial magnitude of particles' velocity vector. - Added new struct
BBMOD_SetColorModule
, which is a universal particle module that sets initial value of particles' color property when they are spawned. - Added new struct
BBMOD_SetQuaternionModule
, which is a universal particle module that sets initial value of particles' quaternion property when they are spawned. - Added new struct
BBMOD_SetRealModule
, which is a universal particle module that sets initial value of particles' property when they are spawned. - Added new struct
BBMOD_SetVec2Module
, which is a universal particle module that sets initial value of two consecutive particle properties when it is spawned. - Added new struct
BBMOD_SetVec3Module
, which is a universal particle module that sets initial value of three consecutive particle properties when it is spawned. - Added new struct
BBMOD_SetVec4Module
, which is a universal particle module that sets initial value of four consecutive particle properties when it is spawned. - Added new struct
BBMOD_MixColorModule
, which is a universal particle module that randomly mixes particles' color property when they are spawned. - Added new struct
BBMOD_MixQuaternionModule
, which is a universal particle module that randomly mixes particles' quaternion property when they are spawned. - Added new struct
BBMOD_MixRealModule
, which is a universal particle module that randomly mixes initial value of particles' property between two values when they are spawned. - Added new struct
BBMOD_MixVec2Module
, which is a universal particle module that randomly mixes initial values of particles' two consecutive properties between two values when they are spawned. - Added new struct
BBMOD_MixVec3Module
, which is a universal particle module that randomly mixes initial values of particles' three consecutive properties between two values when they are spawned. - Added new struct
BBMOD_MixVec4Module
, which is a universal particle module that randomly mixes initial values of particles' four consecutive properties between two values when they are spawned. - Added new struct
BBMOD_MixColorOverTimeModule
, which is a universal particle module that mixes particles' color property between two values based on their time alive. - Added new struct
BBMOD_MixQuaternionOverTimeModule
, which is a universal particle module that mixes particles' quaternion property between two values based on their time alive. - Added new struct
BBMOD_MixRealOverTimeModule
, which is a universal particle module that mixes value of particles' property between two values based on their time alive. - Added new struct
BBMOD_MixVec2OverTimeModule
, which is a universal particle module that mixes values of particles' two consecutive properties between two values based on their time alive. - Added new struct
BBMOD_MixVec3OverTimeModule
, which is a universal particle module that mixes values of particles' three consecutive properties between two values based on their time alive. - Added new struct
BBMOD_MixVec4OverTimeModule
, which is a universal particle module that mixes values of particles' four consecutive properties between two values based on their time alive. - Added new struct
BBMOD_MixColorFromHealthModule
, which is a universal particle module that mixes particles' color property between two values based on their remaining health. - Added new struct
BBMOD_MixQuaternionFromHealthModule
, which is a universal particle module that mixes particles' quaternion property between two values based on their remaining health. - Added new struct
BBMOD_MixRealFromHealthModule
, which is a universal particle module that mixes value of particles' property between two values based on their remaining health. - Added new struct
BBMOD_MixVec2FromHealthModule
, which is a universal particle module that mixes values of particles' two consecutive properties between two values based on their remaining health. - Added new struct
BBMOD_MixVec3FromHealthModule
, which is a universal particle module that mixes values of particles' three consecutive properties between two values based on their remaining health. - Added new struct
BBMOD_MixVec4FromHealthModule
, which is a universal particle module that mixes values of particles' four consecutive properties between two values based on their remaining health. - Added new struct
BBMOD_MixColorFromSpeedModule
, which is a universal particle module that mixes particles' color property between two values based on the magnitude of their velocity vector. - Added new struct
BBMOD_MixQuaternionFromSpeedModule
, which is a universal particle module that mixes particles' quaternion property between two values based on the magnitude of their velocity vector. - Added new struct
BBMOD_MixRealFromSpeedModule
, which is a universal particle module that mixes value of particles' property between two values based on the magnitude of their velocity vector. - Added new struct
BBMOD_MixVec2FromSpeedModule
, which is a universal particle module that mixes values of particles' two consecutive properties between two values based on the magnitude of their velocity vector. - Added new struct
BBMOD_MixVec3FromSpeedModule
, which is a universal particle module that mixes values of particles' three consecutive properties between two values based on the magnitude of their velocity vector. - Added new struct
BBMOD_MixVec4FromSpeedModule
, which is a universal particle module that mixes values of particles' four consecutive properties between two values based on the magnitude of their velocity vector. - Added new struct
BBMOD_AddRealOverTimeModule
, which is a universal particle module that adds a value to particles' property over time. - Added new struct
BBMOD_AddVec2OverTimeModule
, which is a universal particle module that adds a value to two consecutive particle properties over time. - Added new struct
BBMOD_AddVec3OverTimeModule
, which is a universal particle module that adds a value to three consecutive particle properties over time. - Added new struct
BBMOD_AddVec4OverTimeModule
, which is a universal particle module that adds a value to four consecutive particle properties over time. - Added new struct
BBMOD_AddRealOnCollisionModule
, which is a universal particle module that adds a value to particles' property when they have a collision. - Added new struct
BBMOD_AddVec2OnCollisionModule
, which is a universal particle module that adds a value to two consecutive particle properties it has a collision. - Added new struct
BBMOD_AddVec3OnCollisionModule
, which is a universal particle module that adds a value to three consecutive particle properties it has a collision. - Added new struct
BBMOD_AddVec4OnCollisionModule
, which is a universal particle module that adds a value to four consecutive particle properties it has a collision. - Added new struct
BBMOD_AttractorModule
, which is a a particle module that attracts/repels particles to/from a given position. - Added new struct
BBMOD_DragModule
, which is a p...
3.6.2
This release is a hotfix of loading of BBMOD and BBANIM files with a minor version lesser than the current one is.
3.6.1
This release mainly fixes rendering of models that are animated using scene graph nodes instead of skeletal animations. Additionally, each sub-mesh of a model can now have a different vertex format, which allows you to use both scene graph and skeletal animations in a single model. Pointlist and linelist primitive type of meshes are now also supported. Re-conversion of models using new BBMOD CLI is not required, but it is advised.
Changelog:
CLI:
- Updated Assimp to v5.2.4.
- Added new option
-v
, which shows version info and exits. - Fixed export of bounding boxes for meshes.
- Added support for pointlist and linelist meshes.
- Using animation optimization level 2 now also includes world-space transforms of nodes, which allows you to use bone attachments.
GML API:
Core module:
- Added new property
VertexFormat
toBBMOD_Mesh
, which is the vertex format of the mesh. - Property
VertexFormat
ofBBMOD_Model
is now obsolete - each mesh has its own vertex format. - Property
IsSkeleton
and methodset_skeleton
ofBBMOD_Node
are now obsolete. - Added new property
PrimitiveType
toBBMOD_Mesh
,BBMOD_DynamicBatch
andBBMOD_StaticBatch
, which is the primitive type of the mesh. - Added new optional argument
_primitiveType
to methodsdraw_mesh
,draw_mesh_animated
anddraw_mesh_batched
ofBBMOD_RenderQueue
, which is the primitive type of the mesh. When not specified, it defaults topr_trianglelist
.
Mesh builder module:
- Added a new property
PrimitiveType
toBBMOD_MeshBuilder
, which is the primitive type of built meshes. - Added an optional argument
_primitiveType
toBBMOD_MeshBuilder
's constructor, which is the primitive type of built meshes. When not specified, it defaults topr_trianglelist
. - Method
add_face
ofBBMOD_MeshBuilder
now takes variable number of arguments (at least one).
3.6.0
This release adds a new rendering submodule - SSAO (screen-space ambient occlusion).
Changelog:
GML API:
Rendering module:
Renderer submodule:
- Added new property
EnableGBuffer
toBBMOD_Renderer
, which enables rendering into a G-buffer surface in the deferred pass. - Added new property
GBufferScale
toBBMOD_Renderer
, which is a resolution multiplier for the G-buffer surface. - Added new property
EnableSSAO
toBBMOD_Renderer
, which enables screen-space ambient occlusion. This requires G-buffer and the SSAO submodule! - Added new property
SSAOScale
toBBMOD_Renderer
, which is a resolution multiplier for SSAO surface. - Added new property
SSAORadius
toBBMOD_Renderer
, which is a screen-space radius of SSAO. - Added new property
SSAOPower
toBBMOD_Renderer
, which is the strength of the SSAO effect. - Added new property
SSAOAngleBias
toBBMOD_Renderer
, which is SSAO angle bias in radians. - Added new property
SSAODepthRange
toBBMOD_Renderer
, which is the maximum depth difference of SSAO samples. Samples farther way from the origin than this will not contribute to the effect.
SSAO submodule:
- Added new submodule - SSAO.
- Added new function
bbmod_ssao_draw
, which renders SSAO into a surface.
3.5.1
This release is a hotfix of the Renderer submodule, which accidentally still used Visible
property of BBMOD_Gizmo
, which was obsolete and removed in 3.5.0.
3.5.0
This release mainly adds support for image-based lights to the default shaders and support for ambient, directional light and shadows, point lights and fog to PBR shaders.
Changelog:
GML API:
General:
- Removed all API previously marked as deprecated or obsolete! Please make sure you are not using any of it before upgrading your project to this version.
Core module:
- Moved method
set_ibl
fromBBMOD_PBRShader
toBBMOD_BaseShader
. - Moved property
MaxPointLights
and methodsset_ambient_light
,set_directional_light
,set_point_lights
andset_fog
fromBBMOD_DefaultShader
toBBMOD_BaseShader
. - Moved property
ShadowmapBias
fromBBMOD_DefaultMaterial
toBBMOD_BaseMaterial
.
Camera module:
- Added
screen_point_to_vec3
toBBMOD_Camera
, using which you can convert a position on the screen into a world-space direction.
Gizmo module:
- Fixed dragging gizmo when renderer isn't the same size as the window.
Importer module:
- Added new property
ConvertYToZUp
toBBMOD_OBJImporter
, using which you can switch Y and Z axes of imported models. - Added new property
InvertWinding
toBBMOD_OBJImporter
, using which you can invert vertex winding order of imported models.
Rendering module:
Renderer submodule:
- Fixed unselecting instances when clicking outside of the renderer.
Terrain module:
- Fixed passing property
TextureRepeat
to shaders when usingBBMOD_Terrain.submit
.
3.4.3
This release further improves the Gizmo module by adding a default implementation of instance editing. There are now also three separate gizmo models for moving, rotating and scaling objects. All of these operations can be done in both global and local space (space relative to the last selected instance). This should allow for much easier development of custom level editors for projects using BBMOD.
Changelog:
GML API:
Gizmo module:
- Added new optional argument
_size
toBBMOD_Gizmo
's constructor, which is the size of the gizmo. - Added new enum
BBMOD_EEditType
, which is an enumeration of edit types (move, rotate, scale). - Added new property
EditType
toBBMOD_Gizmo
, which is the current edit type. - Added new property
KeyNextEditType
toBBMOD_Gizmo
, which is the virtual key used to cycle between edit types. - Added new property
Models
toBBMOD_Gizmo
, which is an array of gizmo models for each edit type. - Property
Model
ofBBMOD_Gizmo
is now obsolete. - Added new enum
BBMOD_EEditSpace
, which is an enumeration of edit spaces (global, local). - Added new property
EditSpace
toBBMOD_Gizmo
, which is the current edit space. - Added new property
KeyNextEditSpace
toBBMOD_Gizmo
, which is the virtual key used to cycle between edit spaces. - Added new property
Rotation
toBBMOD_Gizmo
, which is the gizmo's rotation. - Added new property
ButtonDrag
toBBMOD_Gizmo
, which is the mouse button used to control the gizmo. - Added new properties
KeyEditFaster
andKeyEditSlower
toBBMOD_Gizmo
, which are virtual keys used to edit selected instances faster/slower. - Added new properties
InstanceExists
,SetInstancePositionX
,GetInstancePositionX
,SetInstancePositionY
,GetInstancePositionY
,SetInstancePositionZ
,GetInstancePositionZ
,SetInstanceRotationX
,GetInstanceRotationX
,SetInstanceRotationY
,GetInstanceRotationY
,SetInstanceRotationZ
,GetInstanceRotationZ
,SetInstanceScaleX
,GetInstanceScaleX
,SetInstanceScaleY
,GetInstanceScaleY
,SetInstanceScaleZ
andGetInstanceScaleZ
toBBMOD_Gizmo
. These are used to check if an instance exists and to retrieve/change its position, rotation and scale. You can override these in case they work with different variables than you use in your project. - Added new methods
get_instance_position_vec3
,set_instance_position_vec3
,get_instance_rotation_vec3
,set_instance_rotation_vec3
,get_instance_scale_vec3
andset_instance_scale_vec3
toBBMOD_Gizmo
, which are used to retrieve/change an instance's position, rotation and scale usingBBMOD_Vec3
. - Added new method
update_position
toBBMOD_Gizmo
, which updates gizmo's position based on its selected instances. - Added new method
update
toBBMOD_Gizmo
, which updates the gizmo (handles instance editing etc.). - Property
Visible
ofBBMOD_Gizmo
is now obsolete.
Rendering module:
Renderer submodule:
- Added new property
EditMode
toBBMOD_Renderer
, which enables itsGizmo
and selecting instances. - Added new property
ButtonSelect
toBBMOD_Renderer
, which is the mouse button used to select instances. - Added new property
KeyMultiSelect
toBBMOD_Renderer
, which is the virtual keys used for adding/removing instances to/from multiple selection. - Method
select_gizmo
ofBBMOD_Renderer
is now obsolete.
3.4.2
This release further fixes issues with the new Gizmo module and adds possibility to control the renderer's position and size on the screen, which comes useful for example for level editors with dockable windows etc.
Changelog:
GML API:
Core module:
- Function
bbmod_render_pass_set
now callsbbmod_material_reset
.
Gizmo module:
- Fixed mouse-picking of gizmo, where the scale tool was selected instead of rotate and vice versa.
Rendering module:
Renderer submodule:
- Added new properties
X
,Y
,Width
,Height
toBBMOD_Renderer
, using which you can control the area on the screen where the game is drawn in thepresent
method. - Added new methods
set_position
,set_size
andset_rectangle
toBBMOD_Renderer
, using which you can change multiple of the previously mentioned properties at once.
3.4.1
This is a hotfix release that fixes conversion of animated models, where the new versioning system was not implemented correctly.
3.4.0
This release of BBMOD mainly brings features useful for level editors. There is a new Gizmo module and the renderer now supports mouse-picking of instances and gizmos, as well as highlight of selected instances. Models and animation files now also have a minor version - this allows us to include additional data into the files, without requiring you to reconvert all your assets. Additionally, the camera now supports 360° vertical rotation and roll from side to side. All shader code was cleaned up utilizing the latest features of Xpanda.
Changelog:
GML API:
General:
- Further fixes of variable and argument types in docs.
- Removed all API previously marked as deprecated or obsolete!
Core module:
- Added new macros
BBMOD_VERSION_MAJOR
andBBMOD_VERSION_MINOR
. - Macro
BBMOD_VERSION
is now obsolete. - Added new properties
VersionMajor
andVersionMinor
to structsBBMOD_Model
andBBMOD_Animation
. - Property
Version
of structsBBMOD_Model
andBBMOD_Animation
is now obsolete. - Added new property
Model
toBBMOD_Mesh
. - Added new optional
_model
parameter toBBMOD_Mesh
's constructor. - Added new properties
BboxMin
andBboxMax
toBBMOD_Mesh
, which are the minimum and maximum coordinates of the mesh's bounding box. This is supported ony for model version 3.1! - Added new function
bbmod_set_instance_id
. - Added optional argument
_instances
to methodsubmit
ofBBMOD_RenderQueue
, using which you can submit only meshes with given instance IDs. - Added new property
ShadowmapBias
toBBMOD_DefaultMaterial
, using which you can control a range over which a material smoothly transitions into a full shadow. This is useful for example for volumetric objects. - Added new property
BaseOpacityMultiplier
toBBMOD_BaseMaterial
, which is a color multiplier ofBaseOpacity
. - Fixed method
Mul
ofBBMOD_Matrix
. - Method
destroy
ofBBMOD_Class
now returnsundefined
.
Camera module:
- Added new property
Roll
toBBMOD_Camera
, using which you can control camera's rotation from side to side. - Added new properties
DirectionUpMin
andDirectionUpMax
toBBMOD_Camera
, using which you can control the minimum and maximum values ofDirection
. These are set to -89 and 89 respectively, same as was the hard limit before. To remove the limit, use set these toundefined
. - Property
Up
ofBBMOD_Camera
is now obsolete, please use theget_up
method instead to retrieve a camera's up vector.
Gizmo module:
- Added new module - Gizmo.
- Added new struct
BBMOD_Gizmo
. - Added new macros
BBMOD_SHADER_INSTANCE_ID
andBBMOD_SHADER_INSTANCE_ID_ANIMATED
, which are shaders used when rendering instance IDs. - Added new enum
BBMOD_EEditAxis
, which is an enumeration of edit axes. - Added new enum
BBMOD_EEditType
, which is an enumeration of edit types.
Rendering module:
Renderer submodule:
- Added an optional argument
_clearQueues
toBBMOD_Renderer.render
, using which you can disable clearing render queues at the end of the method. - Added new property
RenderInstanceIDs
toBBMOD_Renderer
. When set totrue
, then the renderer renders instance IDs into an off-screen surface. - Added new method
get_instance_id
toBBMOD_Renderer
, using which you can pick an instance ID at given position on the screen. - Added new property
InstanceHighlightColor
, which is the outline color of selected instances. - Added new property
Gizmo
toBBMOD_Renderer
, using which you can add a gizmo to a renderer. This enables its automatic rendering and highlight of its selected instances. - Added new method
select_gizmo
toBBMOD_Renderer
, using which you can pick a gizmo at given position on the screen.