Skip to content

Releases: blueburncz/BBMOD

3.7.0

19 Jun 18:21
Compare
Choose a tag to compare

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...
Read more

3.6.2

17 Jun 18:25
Compare
Choose a tag to compare

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

17 Jun 17:06
Compare
Choose a tag to compare

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 to BBMOD_Mesh, which is the vertex format of the mesh.
  • Property VertexFormat of BBMOD_Model is now obsolete - each mesh has its own vertex format.
  • Property IsSkeleton and method set_skeleton of BBMOD_Node are now obsolete.
  • Added new property PrimitiveType to BBMOD_Mesh, BBMOD_DynamicBatch and BBMOD_StaticBatch, which is the primitive type of the mesh.
  • Added new optional argument _primitiveType to methods draw_mesh, draw_mesh_animated and draw_mesh_batched of BBMOD_RenderQueue, which is the primitive type of the mesh. When not specified, it defaults to pr_trianglelist.

Mesh builder module:

  • Added a new property PrimitiveType to BBMOD_MeshBuilder, which is the primitive type of built meshes.
  • Added an optional argument _primitiveType to BBMOD_MeshBuilder's constructor, which is the primitive type of built meshes. When not specified, it defaults to pr_trianglelist.
  • Method add_face of BBMOD_MeshBuilder now takes variable number of arguments (at least one).

3.6.0

09 Jun 15:18
Compare
Choose a tag to compare

This release adds a new rendering submodule - SSAO (screen-space ambient occlusion).

Changelog:

GML API:

Rendering module:

Renderer submodule:

  • Added new property EnableGBuffer to BBMOD_Renderer, which enables rendering into a G-buffer surface in the deferred pass.
  • Added new property GBufferScale to BBMOD_Renderer, which is a resolution multiplier for the G-buffer surface.
  • Added new property EnableSSAO to BBMOD_Renderer, which enables screen-space ambient occlusion. This requires G-buffer and the SSAO submodule!
  • Added new property SSAOScale to BBMOD_Renderer, which is a resolution multiplier for SSAO surface.
  • Added new property SSAORadius to BBMOD_Renderer, which is a screen-space radius of SSAO.
  • Added new property SSAOPower to BBMOD_Renderer, which is the strength of the SSAO effect.
  • Added new property SSAOAngleBias to BBMOD_Renderer, which is SSAO angle bias in radians.
  • Added new property SSAODepthRange to BBMOD_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

04 Jun 09:03
Compare
Choose a tag to compare

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

03 Jun 15:12
Compare
Choose a tag to compare

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 from BBMOD_PBRShader to BBMOD_BaseShader.
  • Moved property MaxPointLights and methods set_ambient_light, set_directional_light, set_point_lights and set_fog from BBMOD_DefaultShader to BBMOD_BaseShader.
  • Moved property ShadowmapBias from BBMOD_DefaultMaterial to BBMOD_BaseMaterial.

Camera module:

  • Added screen_point_to_vec3 to BBMOD_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 to BBMOD_OBJImporter, using which you can switch Y and Z axes of imported models.
  • Added new property InvertWinding to BBMOD_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 using BBMOD_Terrain.submit.

3.4.3

24 May 15:41
Compare
Choose a tag to compare

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 to BBMOD_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 to BBMOD_Gizmo, which is the current edit type.
  • Added new property KeyNextEditType to BBMOD_Gizmo, which is the virtual key used to cycle between edit types.
  • Added new property Models to BBMOD_Gizmo, which is an array of gizmo models for each edit type.
  • Property Model of BBMOD_Gizmo is now obsolete.
  • Added new enum BBMOD_EEditSpace, which is an enumeration of edit spaces (global, local).
  • Added new property EditSpace to BBMOD_Gizmo, which is the current edit space.
  • Added new property KeyNextEditSpace to BBMOD_Gizmo, which is the virtual key used to cycle between edit spaces.
  • Added new property Rotation to BBMOD_Gizmo, which is the gizmo's rotation.
  • Added new property ButtonDrag to BBMOD_Gizmo, which is the mouse button used to control the gizmo.
  • Added new properties KeyEditFaster and KeyEditSlower to BBMOD_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 and GetInstanceScaleZ to BBMOD_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 and set_instance_scale_vec3 to BBMOD_Gizmo, which are used to retrieve/change an instance's position, rotation and scale using BBMOD_Vec3.
  • Added new method update_position to BBMOD_Gizmo, which updates gizmo's position based on its selected instances.
  • Added new method update to BBMOD_Gizmo, which updates the gizmo (handles instance editing etc.).
  • Property Visible of BBMOD_Gizmo is now obsolete.

Rendering module:

Renderer submodule:

  • Added new property EditMode to BBMOD_Renderer, which enables its Gizmo and selecting instances.
  • Added new property ButtonSelect to BBMOD_Renderer, which is the mouse button used to select instances.
  • Added new property KeyMultiSelect to BBMOD_Renderer, which is the virtual keys used for adding/removing instances to/from multiple selection.
  • Method select_gizmo of BBMOD_Renderer is now obsolete.

3.4.2

18 May 15:14
Compare
Choose a tag to compare

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 calls bbmod_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 to BBMOD_Renderer, using which you can control the area on the screen where the game is drawn in the present method.
  • Added new methods set_position, set_size and set_rectangle to BBMOD_Renderer, using which you can change multiple of the previously mentioned properties at once.

3.4.1

17 May 08:57
Compare
Choose a tag to compare

This is a hotfix release that fixes conversion of animated models, where the new versioning system was not implemented correctly.

3.4.0

16 May 17:32
Compare
Choose a tag to compare

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 and BBMOD_VERSION_MINOR.
  • Macro BBMOD_VERSION is now obsolete.
  • Added new properties VersionMajor and VersionMinor to structs BBMOD_Model and BBMOD_Animation.
  • Property Version of structs BBMOD_Model and BBMOD_Animation is now obsolete.
  • Added new property Model to BBMOD_Mesh.
  • Added new optional _model parameter to BBMOD_Mesh's constructor.
  • Added new properties BboxMin and BboxMax to BBMOD_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 method submit of BBMOD_RenderQueue, using which you can submit only meshes with given instance IDs.
  • Added new property ShadowmapBias to BBMOD_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 to BBMOD_BaseMaterial, which is a color multiplier of BaseOpacity.
  • Fixed method Mul of BBMOD_Matrix.
  • Method destroy of BBMOD_Class now returns undefined.

Camera module:

  • Added new property Roll to BBMOD_Camera, using which you can control camera's rotation from side to side.
  • Added new properties DirectionUpMin and DirectionUpMax to BBMOD_Camera, using which you can control the minimum and maximum values of Direction. These are set to -89 and 89 respectively, same as was the hard limit before. To remove the limit, use set these to undefined.
  • Property Up of BBMOD_Camera is now obsolete, please use the get_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 and BBMOD_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 to BBMOD_Renderer.render, using which you can disable clearing render queues at the end of the method.
  • Added new property RenderInstanceIDs to BBMOD_Renderer. When set to true, then the renderer renders instance IDs into an off-screen surface.
  • Added new method get_instance_id to BBMOD_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 to BBMOD_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 to BBMOD_Renderer, using which you can pick a gizmo at given position on the screen.