Changelog
Version 1.0.2 [wip]
Filmmaker v0.4.3
LuxCoreRender
- Added volumetric lighting options
- Added subdivision options for materials
- Added option for enabling PhotonGI cache
Lua
- Added CompositeComponent:GetEntities, :GetRootGroup, :AddChildGroup, :GetChildGroups
Version 1.0.1 [2021-06-22]
Filmmaker v0.4.2
- Improve retargeting performance
- Fix various retargeting issues
- General retargeting improvements
- Update default material hair settings
Engine
- Added updated Lua documentation and ZeroBrane configuration files
- Updated "lua_help" documentation database
- Added "TF2" and "HL1" demo gamemodes
- Fixed random crashes on some hardware
- Fixed issue where game could freeze permanently during shutdown
- Fixed Lua JIT-Compiler not being enabled
- Fixed importing glTF models saving material files in wrong location
- Fixed exporting maps not working in some cases when the map name has a "." in the name
- Fixed crash on startup with certain launch parameters
- Fixed automatic asset reloading on asset file change not working
- Fixed issue where Steam locations wouldn't get mounted properly on new Steam installations
- Added additional crash dump debug information
- Transitioned AI-nav file-format to UDM system
- Transitioned Lua documentation file-format to UDM system
Lua
- Added Skeleton:IsRootBone string parameter overload
- Added Skeleton:GetBoneHierarchy
- Added phys.Transform.IDENTITY, :GetAngles, :SetAngles, :GetForward, :GetRight, :GetUp, .x, .y, .z, .pitch, .yaw, .roll, phys.ScaledTransform.IDENTITY
- Added CompositeComponent:ClearEntities
- Add EVENT_UPDATE_BONE_POSES and EVENT_ON_BONE_POSES_FINALIZED animated component events
- Added table.copy
- Added engine.library_exists
- Added ents.PlayerComponent:SetFlashlightEnabled, :ToggleFlashlight, :IsFlashlightEnabled
- General LuaDoc improvements
Version 0.9.15 [2021-05-30]
Filmmaker v0.4.1
- Added console commands: pfm_max_fps, pfm_asset_icon_size
- Added bone visualization to retarget editor
- Retarget rigs can now be auto-generated from existing rigs if a match can be found
- Various retargeting improvements
- Fixed "hair" settings in material editor not working
- Fixed PFM not showing up in new game menu
- Fixed material editor and explorer not working properly
Engine
- Added console commands: udm_validate, asset_clear_unused, asset_clear_unused_textures, asset_clear_unused_models, asset_clear_unused_materials, cache_version_target, loc_reload
- Added launch option: -audio_api <audioApi>
- Added game mount priority options
- Physics engine can now be toggled between PhysX and Bullet
- Bullet is now the default physics engine
- Audio engine is now implemented as a module (can be changed in options)
- Assets are now automatically cleared from memory when not in use
- Transition particle system format to UDM
- Fixed entities appearing invisible in some cases
- Fixed various character animation issues
- Fixed character eyes not working correctly if entity is scaled
- Fixed issue where models with a "." in the name could not get imported properly
- Fixed maps not being rendered if map was compiled without BSP
- Fixed crash when generating reflection probes
- Fixed crash when loading map with invalid world model
- Fixed various crash instances
- Fixed various shader/rendering issues
Lua
- Added debug.beep and debug.print
- Added phys.CollisionObject:SetAlwaysAwake, :IsAlwaysAwake
- Added math.map_value_to_fraction and math.map_value_to_range
- Added locale.set_text
- Added composite and animated2 entity components
- Added util.DirectoryChangeListener class
- Added animation.Channel, .Slice, .Animation2, .Pose, .Player classes
- Added ents.Entity:SetUuid
- Added ents.RenderComponent:GetRenderModeProperty
- Added ents.EyeComponent:GetEyePose
- Added udm.PropertyWrapper:GetChildCount, :HasValue and :ToAscii
- Added ents.AnimatedComponent:GetLayeredAnimations, :ApplyLayeredAnimations
- Added game.Model.Animation:GetBoneId
- Added ents.IteratorFilterModel
- Added asset.delete, .determine_type_from_extension, .get_legacy_extension, .get_binary_udm_extension, .get_ascii_udm_extension, .determine_format_from_data, .determine_format_from_filename, .matches, .relative_path_to_absolute_path, .absolute_path_to_relative_path, .get_udm_format_extension, .get_asset_root_directory, .exists, .find_file, .is_loaded
- Added file.find_absolute_path
- Added new overload for file.remove_file_extension with parameter to specify which extensions to remove
- Added udm.AssetData:SetData
- Added gui.find_focused_window, gui.get_primary_window, gui.find_window_under_cursor, gui.get_base_elements, gui.add_base_element
- Added gui.Element:GetRootElement, :GetRootWindow
- Added shader.BasePbr base class
- Added prosper.create_window, prosper.WindowCreateInfo and prosper.Window classes
- Fixed ents.Entity:SetEnabled Lua binding not behaving correctly in certain cases
- Scripts loaded with lua_exec and lua_exec_cl now auto reload when changed (Unless"nocache" argument is set)
- util.register_class now defines a default constructor and tostring method
- util.register_class now returns class object (or nil) instead of boolean
Version 0.9.14 [21-04-16]
Filmmaker
- Added animation and flex retargeting system
- Transform widget can now be toggled between world/local/view space
- Added basic posing and animating capabilities
- Improved hair rendering quality with LuxCoreRender
- Added hair configuration options to material editor
- Added live raytracing preview
Engine
- Added "util_export_asset" option to export assets to Source Engine model/material/texture format with optional fake pbr conversion
- Transitioned asset file formats to UDM system
- Added console commands: "udm_convert", "save", "crash", "debug_render_memory_budget" and "debug_render_memory_stats"
- Exporting model with glTF exporter now includes additional UV sets (such as lightmap UVs)
- Fixed rare random deadlock issue
- Added entity UUIDs to uniquely identify entities
- Added additional crash dump debug information
Lua
- Added asset.get_supported_extensions, asset.export_texture_as_vtf, asset.TYPE_MAP
- Added ents.GetUuid, ents.AttachableComponent:GetBone
- Added Quaternion:Distance
- Added class ents.IteratorFilterUuid
- Added udm library
- Added game.get_material
- Added util.BSPTree.Node:GetIndex
- Added game.Material:Reset
- Added game.Model.Animation.Load, game.Model.FlexAnimation.Load
- Added game.Model.Mesh.Sub:Copy
- Added game.Model.Animation:GetBoneId
- Added game.Model.Eyeball:GetUpperLidFlexIndices, :GetUpperLidFlexAngles, :GetLowerLidFlexIndices, :GetLowerLidFlexAngles, :GetUpperLidFlexIndex and :GetLowerLidFlexIndex
- Added game.Model.FCOPY_BIT_FLEX_ANIMATIONS flag
- Added ents.ModelComponent:GetBodyGroups, :SetBodyGroups
- Added ents.AnimatedComponent:GetBaseAnimationFlags, :SetBaseAnimationFlags, :GetLayeredAnimationFlags, :SetLayeredAnimationFlags, ents.AnimatedComponent:SetAnimatedRootPoseTransformEnabled, :IsAnimatedRootPoseTransformEnabled, :AddRootPoseBone, :SetRootPoseBoneId, :GetRootPoseBoneId and ents.AnimatedComponent.FPLAYANIM_LOOP
- Added ents.LightComponent:SetMorphTargetsInShadowsEnabled, :AreMorphTargetsInShadowsEnabled, .BakeSettings.globalLightIntensityFactor and .import_lightmap_atlas
- Added ents.ReflectionProbeComponent:GetIBLMaterialFilePath, :CaptureIBLReflectionsFromScene and :RequiresRebuild
- Added prosper.ImageCreateInfo:FLAG_ALLOCATE_DISCRETE_MEMORY_BIT, FLAG_DONT_ALLOCATE_MEMORY_BIT, FLAG_SRGB_BIT, FLAG_NORMAL_MAP_BIT
- Added prosper.Image:IsSrgb, :IsNormalMap, :SetSrgb, :SetNormalMap and :Convert
- Added prosper.Mesh:ClearBuffers
- Added ents.LightMapComponent:SetLightmapAtlas
- Added ents.RenderComponent:ClearBuffers
- Removed game.Model.Eyeball:GetUpperFlexDesc, :GetLowerFlexDesc, :GetUpperTarget, :GetLowerTarget, .lowerLidFlexDesc and .upperLidFlexDesc
Version 0.9.13 [2021-03-14]
Filmmaker
- Fully integrated LuxCoreRender
- Added support for transparent backgrounds/skies when rendering with LuxCoreRender
- Added new render tool commands (LuxCoreRender only):
- preview: Creates a preview image of what's been rendered so far and opens it in the default image program
- pause: Pauses the current render
- resume: Resumes the current render
- stop: Stops the render and uses what's been rendered so far to generate the final image
- suspend: Creates a .rsm-file, which can be used to continue the render at a later date
- export: Exports the entire scene in a LuxCoreRender format (including models and textures), which can be used to render it with the standalone LuxCoreRender program
- Fixed issue where importing textures via drag-and-drop would not generate mipmaps
Engine
- Updated build instructions
- Morph targets now affect shadows
- Increased bone limit from 512 to 1024
- Added console commands "strip_weapons" and "cl_render_frustum_culling_enabled"
- Reduced number of entities with unnecessary tick/logic events to improve performance
- Characters now blink if no eyeballs are defined in the model, but blink flex controllers exist
- Added UDM data format for unifying asset file formats
- Fixed issue where viewmodel entities would use incorrect field of view
- Fixed viewmodel not appearing in some cases if viewmodel was changed after weapon was deployed
- Changed entity component net event system so net events no longer have to be registered on the server before they are registered on the client
- Merged cengine with client library and engine with shared
Lua
- Removed gamemode system and replaced it with gamemode entity components
- Allows changing gamemodes on the fly, as well as running multiple different gamemodes at the same time
- Added "player" and "gamemode" entity component types (and sub-directories)
- All entity components can now have individual tick/logic events instead of relying on the logic component
- Added udm library for loading/saving/working with udm assets
- Added ents.ModelComponent:GetBodyGroups and :SetBodyGroups
- Added math.Quaternion:Distance
- Added ents.PhysicsComponent:EnableCollisions, :DisableCollisions, :SetCollisionsEnabled, :SetSimulationEnabled and :IsSimulationEnabled
- Added ents.CharacterComponent:SetMoveController and :GetMoveController
- Added util.DataStream:WriteVertex, :ReadVertex
- Added Vector:GetYaw and :GetPitch
- Added util.generate_uuid_v4
- Added ents.register_component_net_event
- Added ents.AttachableComponent.FATTACHMENT_MODE_FORCE_TRANSLATION_IN_PLACE, FATTACHMENT_MODE_FORCE_ROTATION_IN_PLACE and FATTACHMENT_MODE_FORCE_IN_PLACE
Version 0.9.12 [2021-02-08]
Filmmaker
- Added support for rendering with LuxCoreRender
- Added fur rendering options with LuxCoreRender
Engine
- Massive general performance improvements
- Added automatic rendering instancing system
- Added flex animation system
- Added new bloom/glow implementation
- Added lightmap baking with Cycles
- Added console commands debug_render_octree_dynamic_find, debug_render_stats, render_vsync_enabled, render_draw_static, render_draw_dynamic, render_translucent, cl_render_shadow_lod_bias, render_queue_worker_thread_count, debug_textures, sky_override, render_queue_entities_per_worker_job, render_queue_worker_jobs_per_batch, render_instancing_threshold and render_instancing_enabled
- Fixed issue where camera would move upwards continuously in fullscreen windowed resolution mode
- Fixed first LOD being skipped when importing Source Engine models
- Fixed model LODs not working
- Fixed various crash bugs
- Fixed bone scaling not working correctly in some cases
Lua
- Added ents.RenderComponent:GetLocalRenderBounds, ents.RenderComponent:GetLocalRenderSphereBounds, ents.RenderComponent:GetAbsoluteRenderBounds, ents.RenderComponent:GetAbsoluteRenderSphereBounds, ents.RenderComponent:SetLocalRenderBounds, ents.RenderComponent:ShouldCastShadows, ents.RenderComponent:ShouldDraw, ents.RenderComponent:ShouldDrawShadow, ents.RenderComponent.EVENT_ON_RENDER_MODE_CHANGED and ents.RenderComponent.EVENT_UPDATE_INSTANTIABILITY
- Added util.DataBlock:GetVector2
- Added game.Material.detail_blend_mode_to_enum and game.Material.DetailBlendMode enums
- Added ents.SceneComponent:GetRenderQueue, ents.SceneComponent:BuildRenderQueue and ents.SceneComponent.CreateInfo
- Added math.Vector:ToScreenUv
- Added game.set_default_game_render_enabled, game.is_default_game_render_enabled, game.render_scenes, game.set_debug_render_filter and game.update_render_buffers
- Added game.RENDER_FLAG_TRANSLUCENT_BIT
- Added util.ImageBuffer:SwapChannels
- Added prosper.get_api_identifier, prosper.get_api_abbreviation, prosper.wait_for_current_swapchain_command_buffer_completion, prosper.create_primary_command_buffer and prosper.create_secondary_command_buffer
- Added prosper.CommandBuffer:Flush
- Added game.DrawSceneInfo.FLAG_FLIP_VERTICALLY_BIT, game.DrawSceneInfo.FLAG_DISABLE_RENDER_BIT and game.DrawSceneInfo.flags
- Added classes game.RenderQueue, game.DepthStageRenderProcessor, game.LightingStageRenderProcessor, shader.GameWorld, game.Model.FlexAnimation and game.Model.FlexAnimation.Frame
- Added ents.ModelComponent:SetMaxDrawDistance, ents.ModelComponent:GetMaxDrawDistance and ents.ModelComponent.EVENT_ON_RENDER_MESHES_UPDATED
- Added ents.AnimatedComponent:AreSkeletonUpdateCallbacksEnabled, ents.AnimatedComponent:SetSkeletonUpdateCallbacksEnabled, ents.AnimatedComponent.EVENT_ON_SKELETON_UPDATED, ents.AnimatedComponent.EVENT_ON_BONE_MATRICES_UPDATED and ents.AnimatedComponent.EVENT_ON_BONE_BUFFER_INITIALIZED
- Added util.BSPTree:FindLeafNodesInAABB
- Added ents.LightmapComponent.bake_lightmaps, ents.LightmapComponent:SetExposure, ents.LightmapComponent:GetExposure, ents.LightmapComponent:GetExposureProperty and ents.LightmapComponent.BakeSettings
- Added ents.FlexComponent:PlayFlexAnimation, ents.FlexComponent:StopFlexAnimation, ents.FlexComponent:GetFlexAnimationCycle, ents.FlexComponent:SetFlexAnimationCycle and ents.FlexComponent:SetFlexAnimationPlaybackRate
- Added game.Model:GetFlexAnimations, game.Model:GetFlexAnimationNames, game.Model:GetFlexAnimationCount, game.Model:AddFlexAnimation, game.Model:LookupFlexAnimation, game.Model:GetFlexAnimation, game.Model:GetFlexAnimationName, game.Model:ClearFlexAnimations, game.Model:RemoveFlexAnimation, game.Model.AddFlexControllerId, game.Model.SetFlexControllerValue, game.Model.LookupLocalFlexControllerIndex, game.Model:GetLOD and game.Model.Mesh:RemoveSubMesh
- Added game.RasterizationRenderer:ReloadPresentationRenderTarget
- Added file.to_relative_path
- Added geometry.calc_point_on_triangle and geometry.calc_triangle_area
- util.save_image now has an option for saving cubemap textures
- Removed ents.SceneComponent:PrepareRender, ents.TransformComponent:GetPosProperty, ents.TransformComponent:GetRotationProperty, ents.TransformComponent:GetScaleProperty, game.draw_scene, ents.RenderComponent:GetRenderBounds, ents.RenderComponent:SetRenderBounds, ents.RenderComponent:GetRenderSphereBounds, ents.RenderComponent:GetRenderModeProperty, ents.RenderComponent:SetDepthBias, ents.RenderComponent:GetDepthBias, game.DrawSceneInfo.flipVertically and ents.RenderComponent.RENDERMODE_AUTO
- Changed parameters of ents.SceneComponent:Render and ents.RenderComponent:UpdateRenderBuffers
Version 0.9.11 [2020-11-11]
Filmmaker
- Cycles render settings are now saved with the project
- Changed frame render order when rendering animations with external render tool for easier quality control
- Added support for detail maps when rendering with Cycles
- Fixed emission textures having no effect when rendering with Cycles
- Fixed IOR value being set improperly when opening material in material editor
- Fixed material editor not updating properly when switching to a different material
- Fixed HDR output format not working properly when rendering with Cycles
- Changed default gamma correction value when rendering with Cycles to 2.2 (was 2.4 before)
Engine
- Added support for $detail, $detailscale, $detailblendfactor, $detailblendmode and $detailtint VMT parameters
- Added CS: GO to default game mount list
- Fixed issue where entities with morph target animations would get visually corrupted if they were made invisible and then visible again
- Fixed issue where ingame cursor position would mismatch actual cursor position in fullscreen windowed resolution mode
- Fixed issue where camera would move upwards continuously in fullscreen windowed resolution mode
Lua
- Replaced class game.Scene with ents.SceneComponent
- Added ents.SceneComponent.OcclusionCullingMethod enums
- Added game.Material.DetailBlendMode enums
- Added game.Material.detail_blend_mode_to_enum
- Added ents.SceneComponent:SetOcclusionCullingMethod
- Added game.Model:GetBodyGroupMesh
- Added game.Material:SetShader
- Added ents.Entity:GetBodyGroup and :SetBodyGroup overloads for body group IDs
- Added ents.BaseEntityComponent:Save, ents.BaseEntityComponent:Load and ents.BaseEntityComponent:Copy
- Added ents.Entity:RemoveFromAllScenes and ents.Entity:AddChild
- Added debug.breakpoint (Only available if
-luaext
was specified in the launch options) - Added math.Mat4:ApplyProjectionDepthBiasOffset
- Added ents.RenderComponent:SetReceiveShadows and ents.RenderComponent:IsReceivingShadows
- Added ents.EyeComponent:ClearViewTarget
- Added util.DataBlock:GetVector2
- Renamed game.create_scene to ents.create_scene
- util.remove now has a second argument for removing objects safely (if available)
- toboolean and toint now accept numbers and booleans as arguments
- Changed parameter order of ents.create_prop
Version 0.9.10
Filmmaker
- Added Cycles option for setting the number of frames to the end of a clip or session
- Render jobs now take up a lot less disk space for animations (static geometry is now stored shared instead of every frame)
- Slightly improved overall rendering speed
- Fixed rendering taking up your entire CPU resources when rendering with your GPU
- Fixed an issue where rendering several times consecutively could slow your PC down to a crawl
- Fixed VR renders being flipped horizontally
- Fixed a denoising issue which caused less than optimal denoising quality
- Fixed issue where the tiles in the final image would have mismatching sample counts and some tiles would be lower quality as a result
- Fixed render preview not being interactable when rendering VR images
- Fixed potential crash when doing a preview render with the Vulkan renderer being used
Engine
- Minor occlusion culling performance optimizations
- Greatly improved reflection probe rendering speed
- Fixed issue where entities would get rendered with error materials if their skin would exceed the max skin count of their model
- Fixed bone scaling not working correctly
- Fixed massive performance hit for light sources that cast shadows in the past, but had shadow casting disabled
- Fixed BSP occlusion culling not working for imported Source Engine maps
- Fixed meshes not being rendered if entity skin exceeds maximum skin count
- Improved lightmap implementation
- Various minor bug fixes and improvements
- Improved loading times when starting a game
Lua
- Added class util.Version
- Added exec
- Added ents.create_prop
- Added ents.AnimatedComponent:SetBindPose and ents.AnimatedComponent:GetBindPose
- Added ents.LightMapComponent:UpdateLightmapUvBuffers, ents.LightMapComponent:ReloadLightmapData and ents.LightMapComponent:SetLightmapAtlas
- Added ents.LightMapReceiverComponent:UpdateLightmapUvData
- Added gui.Element:InjectMouseClick and gui.Element:InjectKeyPress
- Added ents.Entity:IsDisabled and ents.Entity:IsTurnedOff
- Added util.Path:CreateFilePath and util.Path:CreatePath
- Added ents.MapComponent:GetMapIndex
- Added ents.AnimatedComponent:PlayAnimation overloads for playing animations by id
- Added util.DataBlock:ToString
- Added game.Model.Frame:Copy, game.Model.Skeleton.Bone:IsAncestorOf and game.Model.Skeleton.Bone:IsDescendantOf
- Added math.calc_average_rotation
- Added file.strip_illegal_filename_characters
- Added game.Model.Mesh:GetReferenceId
- Added game.Model.Mesh.Sub:FlipTriangleWindingOrder, :SetVertexCount, :SetIndexCount, :AddUVSet, :GetUVSetNames, :SetVertexTangent and :HasUVSet
- Added string.hash
- Added new overload for game.Model.Mesh.Sub:GetUVs, :SetVertexUV, :GetVertexUV with UV set parameter
- Changed argument format for util.pack_zip_archive
- Renamed ents.AnimatedComponent:GetBindPose to ents.AnimatedComponent:GetBoneBindPose
- util.remove now accepts a table as argument
- file.write now automatically creates the file path if it doesn't exist
- File write operations now accept paths that include "addons/<addonName>/" as prefix