Changelog
WhatVersion is1.0.2 Pragma?[wip]

Filmmaker 



v0.4.3
Pragma is a free, open source custom game engine written in C++. Here is an overview over some of its core features:LuxCoreRender
SupportAdded 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
andmodel/material/texture Sourceformat 2with assets,optional suchfake as:pbr maps,conversion
models,Transitioned materials,asset textures,file sound-scriptformats filesto UDM system
Added console commands: "udm_convert", "save", "crash", "debug_render_memory_budget" and
particle systems"debug_render_memory_stats"
ExtensiveExporting moddingmodel 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
LuaLuxCoreRender
Added new render tool commands (
withLuxCoreRender Live-coding,only):
debugging-support- 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
ZeroBranestandalone IDELuxCoreRender program
Fixed issue where importing textures via drag-and-drop would not generate mipmaps
Engine
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
customrendering shaders,with custom entities/weapons/NPCs/vehicles, etc)LuxCoreRender
SupportAdded forfur PBRrendering (physicallyoptions basedwith rendering)LuxCoreRender
Engine
- Massive general performance improvements
SupportAdded forautomatic therendering Cycles-rendererinstancing (the same as used by Blender)
Multiplayer-support, including dedicated servers
Steam Workshop support
VR support
Support for the Bullet and PhysX physics engines
Support for OpenGL and Vulkan
AI-system based on behavior trees
Entity-component-system
SteamAdded Audioflex 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
spatialdetail audiomaps when rendering with Cycles
etc.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
Pragma
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
currentlynow 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
anthe earlyfinal beta,image would have mismatching sample counts and some
featurestiles maywould be lower quality as a result
Fixed render preview not
bebeing fullyinteractable functionalwhen atrendering theVR momentimages
orFixed arepotential unfinished/experimental.crash
when Pragmadoing alsoa shipspreview render with the PragmaVulkan Filmmakerrenderer 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 exec
Added ents.create_prop
Added ents.AnimatedComponent:SetBindPose and ents.AnimatedComponent:GetBindPose
Added ents.LightMapComponent:UpdateLightmapUvBuffers,
anents.LightMapComponent:ReloadLightmapData openand sourceents.LightMapComponent:SetLightmapAtlas
alternativeAdded 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
theents.AnimatedComponent:GetBoneBindPose
Sourceutil.remove Filmmaker.now Youaccepts cana usetable as argument
file.write now automatically creates the
Bookfile Navigationpath onif theit leftdoesn't toexist
navigateFile towrite theoperations nextnow page,accept whichpaths hasthat detailsinclude on how to download and install Pragma.
Click the 
button at the top right for other topics (such"addons/<addonName>/" as theprefix
API documentation for developers).