3.1.4
This release brings an upgrade to the default shaders, which now support the specular color-smoothness workflow, as well as dynamic shadows from the directional light. Some refactoring of materials and shaders inheritance was required to enable this. If you only used the default materials (BBMOD_MATERIAL_DEFAULT*
), then this change should not affect your project at all. If you have created your own materials, please read the following changelog thoroughly to be able to update your code.
Changelog:
GML API:
Core module:
- Renamed
BBMOD_Material
toBBMOD_DefaultMaterial
. - Method
BBMOD_BaseMaterial.set_base_opacity
now takesBBMOD_Color
as an argument. The variant with separate arguments for color and opacity is kept for compatibility purposes, but it should not be used anymore, as it will be removed in a future release! - Added new property
BBMOD_DefaultMaterial.NormalSmoothness
, which is a texture with tangent-space normal vector in the RGB channels and smoothness in the A channel. - Added new method
BBMOD_DefaultMaterial.set_normal_smoothness
, using which you can set the normal vector and smoothness to a uniform value for the entire material. - Added new property
BBMOD_DefaultMaterial.SpecularColor
, which is a texture with specular color in the RGB channels. - Added new method
BBMOD_DefaultMaterial.set_specular_color
, using which you can set the specular color to a uniform value for the entire material. - Renamed
BBMOD_Shader
toBBMOD_DefaultShader
. - Added method
BBMOD_DefaultShader.set_normal_smoothness
, using which you can set thebbmod_NormalSmoothness
texture sampler. - Added method
BBMOD_DefaultShader.set_specular_color
, using which you can set thebbmod_SpecularColor
texture sampler. - Added method
BBMOD_DefaultShader.set_shadowmap
, which is used to set uniformsbbmod_ShadowmapEnable
,bbmod_Shadowmap
,bbmod_ShadowmapMatrix
,bbmod_ShadowmapArea
andbbmod_ShadowmapNormalOffset
required for shadow mapping. - Added new struct
BBMOD_Shader
, which is now the base class for wrappers of raw GameMaker shader resources. - Struct
BBMOD_BaseShader
is now base class for shaders with BBMOD-specific code. General-purpose code was moved toBBMOD_Shader
. - Added new functions
bbmod_camera_get_zfar
andbbmod_camera_set_zfar
, using which you can configure the distance to the far clipping plane passed to shaders. - Added new method
BBMOD_BaseShader.set_zfar
, which is used to set uniformbbmod_ZFar
. - Added new property
Enabled
toBBMOD_Light
, using which you can enable/disable lights without having to call appropriate set/add/remove functions. - Added new member
BBMOD_ERenderPass.Id
, which is a render pass during which can instance IDs be rendered into an off-screen surface. - Fixed
BBMOD_Animation.create_transition
, which did not round transition duration, causing errors in animation playback. - Fixed method
BBMOD_Color.Mix
, which used inexistent variable name.
Rendering module:
- Added new submodule - Depth buffer - which contains shaders for rendering scene depth.
Depth buffer submodule:
- Added new macros
BBMOD_SHADER_DEPTH
,BBMOD_SHADER_DEPTH_ANIMATED
andBBMOD_SHADER_DEPTH_BATCHED
, which are shaders used when rendering scene depth.
Renderer submodule:
- Added new property
BBMOD_Renderer.EnableShadows
, using which you can enable rendering of dynamic shadows. Only materials with a shader defined forBBMOD_ERenderPass.Shadows
render pass can cast shadows! - Added new property
BBMOD_Renderer.ShadowmapArea
, which is an area around the camera captured by the shadowmap. Only models within this area will cast shadows. - Added new property
BBMOD_Renderer.ShadowmapResolution
, which is the resolution of the shadowmap. Must be power of 2. - Added new property
BBMOD_Renderer.ShadowmapNormalOffset
, which is used to offset vertices by their normal vector when sampling the shadowmap. Configure this value to remove artifacts.