Releases: bmwcarit/ramses-composer
Releases · bmwcarit/ramses-composer
v1.1.0
[1.1.0] Lua Interfaces, various UI improvements
- File version number has changed. Files saved with RaCo 1.1.0 cannot be opened by previous versions.
- Check the suggested migration procedure below for the LuaInterfaces introduced in RamsesComposer 1.1.0 to avoid unnecessary issues.
Added
- Added LuaInterface objects
- LuaInterfaces are created from an interface script similar to the Lua scripts but only containing an interface function and only defining input but not output properties. Interfaces can't use modules either. See the LogicEngine documentation for further details.
- The input properties of LuaInterfaces can be both starting end ending points of links.
- Interfaces do not have a run function and no Lua code is evaluated each frame.
- LuaInterfaces replace the LuaScripts as interfaces for Prefabs. LuaScripts inside PrefabInstances are now completely readonly, i.e. their input property can't be changed or have links ending on them anymore.
- Migration of Prefab/PrefabInstance interface LuaScripts to LuaInterfaces is performed automatically when loading an old project: new LuaInterface objects are generated for each interface LuaScript and the interface scripts files are generated in an
interfaces/
subdirectory of the project directory. Furthermore the links ending on the interface LuaScripts are rerouted through the newly created LuaInterfaces leading to the same behaviour as before. - LuaInterfaces are also allowed outside Prefabs/PrefabInstances.
- WARNING The migration code will generate and write the interface scripts each time it is run. If a file is loaded repeatedly without saving it the interface files will be overwritten each time. To avoid running the migration code repeatedly make sure to save the scenes after loading. A python migration script included in the release automates this process, see below.
- Suggested migration procedure
- Open main scene, make sure there are no errors, in particular no errors relating to scripts (including missing modules). Make sure all scenes have been migrated to RaCo 1.0.x.
- If you do not ensure that the scripts have no errors, the LuaInterface objects generated for the scripts will not work as expected!
- Use the Python migration script on the main scene, e. g. `\bin\RelWithDebInfo\RaCoHeadless.exe -r \python\migrate_recursive.py -l 3 -p .rca
- Make sure to include the "-l 3" otherwise the console will be full with irrelevant info/debug/trace messages.
- The script will perform the migration by loading and saving the main scene and all external scenes used by it.
- The automatic migration might fail if multiple main scenes in the same directory are migrated like this since there might be conflicting versions of the new interface files being generated and written to the same file. This should not happen if there is only a single project file per directory.
- Open the scene in RaCo again and verify the scene.
- The generated interface files are now safe to be edited and will not be overwritten on subsequent loads of the project.
- Make sure the C++ coders loading and using the scene change their code to search for LuaInterface objects instead of LuaScript objects, if the object they try to find is part of a prefab instance.
- (optional optimization) Strip all simple OUT=IN assignments from the scripts serving as prefab interfaces and link those properties directly to the LuaInterface objects. This can decrease the CPU load of your scene on the target significantly due to the link optimization (see below).
- Open main scene, make sure there are no errors, in particular no errors relating to scripts (including missing modules). Make sure all scenes have been migrated to RaCo 1.0.x.
- Added link optimization when exporting: links chains that have only LuaInterfaces in the middle of the chain will be replaced by single link from the chain start to the chain end property.
- Added Ramses log output to RaCo log output.
- Ramses trace-level log output has to be explicitly activated in the RaCo Editor with the command argument "-t".
- Added custom Texture mipmap support, similar to CubeMap's mipmap support.
- Added tooltips for RaCo properties showing the RaCo-internal property name.
- Added more information to Texture and CubeMap information boxes.
- Allow configuration of standard modules used for lua scripts and modules via a new stdModules property in LuaScript and LuaScriptModule types.
- Added context menu item in the Treeview and Project Browser to open the external project(s) of the selected objects in a separate RamsesComposer instance.
- Added keybord shortcuts for the toolbar menus of the main window.
- Added "u_Resolution" as builtin shader uniform in addition to "u_resolution".
Changes
- Update from ramses-logic 1.0.2 to 1.1.0
- Update from ramses 27.0.119 to 27.0.121
- Disallowed referencing objects inside Prefabs from objects outside of the same Prefab.
- Disallowed moving top-level objects onto top-level places inside the same objects tree view.
- Extended Texture & Cubemap information to show color channel flow from origin file to shader channels.
- Texture format down-conversion message has been downgraded from warning to information level.
- Texture format up-conversion warning message has been declared as deprecated as it will be upgraded to an error soon.
- Texture format conversion message from palette to any 8-bit format has been downgraded from warning to information level.
- Add python script path as first element of
sys.argv
during script execution with RaCoHeadless. - Renamed some Node/MeshNode/PerspectiveCamera/OrthographicCamera/PrefabInstance, Timer and LuaScript/LuaInterface properties so they are closer to their ramses-logic counterparts.
- Attention: This affects Python scripts that directly accesses properties by name.
- Added
projectPath
function to Python API to query the path of the current project.
Fixes
- Fixed crash when switching scenes after an Export Dialog that shows scene errors has been closed.
- Fixed repeated Ramses DisplayDispatcher "no renderer events" message appearing in log.
- Fixed texture not being loaded when using RG8 mode on grayscale pictures.
- Raise python exception if Python API
load
is called with an empty string as filename argument. - Fixed crash when saving files with relative paths using Python API.
- Add missing TextureFormat enum to Python API.
- Fixed greyscale PNGs not looking correct when texture format RG8 is selected.
- Fixed goto button not working when the referenced object is not selectable in the scene graphs of the current layout.
- Fixed logging of error messages for projects loaded in the RaCoHeadless application to include errors generated by the Ramses/RamsesLogic engine interface code.
- Fixed link removal in Python API to fail when attempting to remove links ending on read-only objects, e.g. external reference objects or PrefabInstance contents.
- Removed spurious "discard invalid link" warning with empty start and/or endpoints when pasting as external reference.
- Fixed crash when moving Nodes to root level in scenegraph.
v1.0.1
[1.0.1] Fix export differences between RaCoHeadless and Ramses Composer GUI
Fixes
- Ensure correct export in RaCoHeadless application by flushing the ramses scene before export.
- Remove warning for "time_ms" Lua input parameter.
v1.0.0
[1.0.0] ramses-logic 1.x, Python API, timer, new animations
- File version number has changed. Files saved with RaCo 1.0.0 cannot be opened by previous versions.
- rca files saved with this version will be much smaller than files saved with previous versions.
- Export file format has changed. Scenes exported with RaCo 1.0.0 / ramses-logic 1.0.2 cannot be opened by ramses-logic versions 0.x.
- Breaking Change: ramses-logic 1.0.2 uses a different lua syntax for the type definitions and the interface() and run() function definitions.
- See the ramses-logic CHANGELOG.md for details.
- A migration script provided by ramses-logic that converts the lua syntax is included as migrate_to_v1.0.py in the root folder of the RaCo package.
- The migration script needs to be run twice - once for adding the IN,OUT parameter to the interface()/run() functions, and once to update the name of the types.
- Example for running the migration script in your root project folder on Windows (adjust paths as required):
cd MyProjectFolder
python \RaCoInstallationFolder\migrate_to_v1.0.py inout .
python \RaCoInstallationFolder\migrate_to_v1.0.py types .
- You might need to install the click Python module using
pip install click
to run the migration script.
Added
- Added Python API and the ability to run python scripts using the RaCoHeadless application.
- Added "-r" commandline option to RaCoHeadless application to run python scripts.
- For a description of the Python API see the PythonAPI.md file.
- Added new Resource type Timer as an interface to the ramses-logic timer.
- Added support for more PNG image formats and Ramses texture formats.
- Previously imported .pngs for Textures may need to be reconverted as the texture format detection has become more stringent.
- Only supported PNG color types: R, RG, RGB, RGBA
- Palette PNGs are loaded and converted for legacy reasons but will always cause a conversion warning.
- 8-bit PNGs can only be used 8-bit for Ramses texture formats and vice versa with 16-bit PNGs.
Changes
- Update from ramses-logic 0.15.0 to 1.0.2
- Update from ramses 27.0.116 to 27.0.119
- Nested arrays in LuaScripts are now supported. See the ramses-logic Changelog for details.
- Ramses-logic objects created in RaCo scenes will share the same ramses-logic user ID as the respective RaCo object.
- Animation objects have been simplified and now only have a 'progress' input property.
- The Error View in the dock now also shows errors by external references, and is now consistent with the "Composer Errors" tab in the export dialog.
- Redundant data has been removed from the rca file - if you are using many prefab instances or external references, expect your files to shrink significantly.
Fixes
- Always perform a logic engine update when loading a file to avoid inconsistent states when exporting with the headless application.
- Export with headless version will not write exported files anymore when the project can't be loaded.
- The RaCoHeadless application will now return a non-zero exit code if loading a project fails, the export fails or a python script throws an exception.
- Fixed RaCoHeadless crash when a scene extrefed by a loaded scene cannot be found.
Known Issues
- It is currently not reliably possible to use venv/virtualenv with the RaCoHeadless Python API.
v0.14.0
[0.14.0]
- Export file format has changed. Scenes exported with RaCo 0.14.0 / ramses-logic 0.15.0 cannot be opened by previous ramses-logic versions.
- Breaking change: Due to the update to ramses-logic 0.15.0 it is no longer possible to use variables without the "local" keyword or have global functions outside the "init" function. See the ramses-logic CHANGELOG.md for details.
Known Issues
- RaCoHeadless will crash when trying to load a scene using external references from scenes which cannot be found.
- The crash will be preceded by an error message like this "External reference update failed: Can't load external project '...' with path '....rca'"
- If the same scene is opened in the Ramses Composer, the same error message will be displayed in a message box.
- When this occurs, the best way forward is to restore the file in the stated location.
Added
- When dragging a property slider, you can now hold Shift to increase the magnitude of steps, and for float properties, you can also hold Alt to decrease the magnitude of steps.
- Added goto button for link start/end properties.
- Added tooltip for objects that are part of a PrefabInstance in the Reference drop-down selection.
- Added tooltip for the link button & link editor that shows the full scenegraph path of link property root objects.
Changes
- Update from ramses-logic 0.14.2 to 0.15.0
- Update from ramses 27.0.115 to 27.0.116
- Added metadata to the exported .rlogic files. The metadata currently included is the generator application, the RamsesComposer version information, and the RamsesComposer file version number.
- The log view now displays a tooltip with the full multi-line message if the mouse is hovered over a message.
- Sort all objects and links in the project file to ensure a stable order when saving repeatedly.
- Change the displayed name of the member properties of the camera viewport and frustum containers to match the internal property name to make it easier to create matching struct definitions in lua.
Fixes
- Clicking the goto button of an Ext Ref object while having a Project Browser will now always lead to the actually referenced Ext Ref object instead of (sometimes) the object in the Project Browser.
v0.13.1
[0.13.1]
- **File version number has changed. Files saved with RaCo 0.13.1 cannot be opened by RaCo versions 0.12.x or earlier. **
Known Issues
- RaCoHeadless will crash when trying to load a scene using external references from scenes which cannot be found.
- The crash will be preceded by an error message like this "External reference update failed: Can't load external project '...' with path '....rca'"
- If the same scene is opened in the Ramses Composer, the same error message will be displayed in a message box.
- When this occurs, the best way forward is to restore the file in the stated location.
Fixes
- Don't reset preview background color to black if the preview is resized or moved.
- Collapsed vector view for floats does round the displayed number again.
- Capturing the ramses-logic output revealed a ramses-logic error message during load caused by attempting to initialize scripts using modules which have not been loaded yet.
- The "Export" button could be disabled without explanation if external references caused entries in the error view.
- Material uniform textures which are unset now show an error message, since exporting them with ramses does not work.
- Fix losing input properties of interface LuaScripts in nested PrefabInstances with externally referenced Prefabs during load. This fix breaks the propagation of the values of new LuaScript interface properties in the Prefab update performed as part of external reference update during load.
- Fixed Ramses Composer not being able to launch under certain multiple display arrangements on Linux.
- Fixed internal side-effect handling of LuaScript module property updates.
- Under some circumstances RaCo attempted to delete Lua Modules in ramses-logic before the referencing Lua Scripts when the scene was closed, causing an error to be logged.
Changes
- The "Export" button in the export dialog is no longer disabled if there are errors in the scene. Instead its label is changed to "Export (with errors)".
- The error view in the export dialog now shows all errors, including the ones caused by external references.
v0.13.0
[0.13.0] Compressed project files, cubemap extensions, log view
- File version number has changed. Files saved with RaCo 0.13.0 cannot be opened by previous versions.
- Version was superseded by 0.13.1 while still being a preliminary release.
Added
- Added custom CubeMap mipmap support.
- Added optional automatic zipping of project files.
- With automatic zipping enabled, projects will be saved as ZIP archives that still use the .rca file extension and contain the project JSON file.
- This option can be enabled/disabled in the Project Settings (disabled by default).
- Added command line argument "--outlogfile" to headless Ramses Composer for changing the log file path.
- New log view allows observing Ramses Composer log output within the application.
- The ramses logic datatype INT64 is now supported.
- Added object duplication feature via context menu or shortcut.
Changes
- Removed upper limit for glTF mesh TEXCOORD and COLOR attributes.
- Export dialog now displays Ramses Composer scene errors if any are present.
- Ramses Logic log output now appears in Ramses Composer log files.
- Ramses Composer now begins a new log file every time the application is launched.
- The "Field of View" property in the perspective camera has been renamed to "Vert. Field of View".
Fixes
- Fixed dropping of links from external reference to project local objects when loading a project.
- Fixed crash when dragging around "Scene Id" property value.
- Fixed problem with saving preferences if the entered directory does not exist.
- Improved support for High DPI screens.
- Fixed losing the property values of PrefabInstance interface scripts when pasting PrefabInstances.
v0.12.0 Bug Fixes and Usability Improvements
[0.12.0] Bug Fixes and Usability Improvements
- File version number has changed. Files saved with RaCo 0.12.0 cannot be opened by previous versions.
Added
- Whenever a private Material is created, it will now always be created with the same Options as the shared Material.
- New collapsable list entry "External References" serves to group all external references together in the resources and prefab views.
- Added command line argument "--loglevel" to headless Ramses Composer for adjusting log verbosity.
- Added color picker for vector properties in the property browser.
- In the scene graph, prefab, project browser and property browser views, shift click on the arrow symbols will now recursively expand or collapse items.
- A new filtering options menu for the ramses preview widget now allows changing from nearest neighbor sampling to linear sampling.
- Added a ramses-logic-viewer build to RaCo binary folder.
- It is now possible to do simple calculations (like "1920/1080" as aspect ratio) directly in the number inputs of the property browser.
- Currently allowed operations: addition (+), substraction (-), multiplication (*), division (/), integer division (//), modulo (%), exponentiation (^) and changing precedence using parentheses.
- Results are calculated immediately and the mathematical expression is not stored.
Changes
- Update from ramses-logic 0.13.0 to ramses-logic 0.14.2
- Update from ramses 27.0.114 to 27.0.115
- The default resource directories can now be set in the per-project in the project settings instead of the Ramses Composer preferences.
- The button to open the underlying file for LuaScripts and other objects is now enabled in cases where the object itself cannot be edited (due to being an ExtRef or part of a PrefabInstance).
- Log file size is now limited to 10 MB, with new log files being created once this is exceeded. A maximum of 250 MB of log files can be created before old files get deleted.
- Opening the link editor no longer has the search field pre-filled with the name of the current link, if one exists.
- More details for LuaScriptModule errors in LuaScripts - invalid LuaScriptModule assignments are now also shown as individual errors.
- Removed "Debug">"Add dummy scene" menu element.
- Config and log files moved from program folder to user folder (e.g. %APPDATA%/RamsesComposer on Windows).
- Log file for headless Ramses Composer is now named "RaCoHeadless.log".
- The values of new lua input properties for LuaScripts which are direct children of PrefabInstances are now propagated from the corresponding Prefab LuaScript during external reference updates making it possible to set default values in the external project.
- Optimize simultaneous deletion of many links in scenes with many objects.
- Object IDs of the PrefabInstance children objects are now deterministically determined from the corresponding Prefab child and the PrefabInstance itself.
Fixes
- The application now handles scenarios where saving configfiles is not possible more gracefully.
- Fixed problems loading projects from paths that contain non-latin characters.
- For empty LuaScript files the correct error message is now shown.
- Fixed Ramses API errors appearing in the log window during new project creation.
- Properties "Flip Vertically" and "Generate Mipmaps" in a texture are now updating the Ramses texture immediately.
- The ramses preview toolbar can no longer be hidden with right click, since this was an unintended feature.
- Removed non-functional "?"-Button from all dialog windows.
- Fixed MeshNodes in PrefabInstances having a different private Material uniform order than their Prefab counterparts after changing Material reference.
- Fixed RaCoHeadless not exporting links.
v0.11.1
[0.11.1] Interim Release - The Tangent Fix
Added
- Added real-time update of file read-only status in the application title bar.
Fixes
- Fixed tangents and bitangents being thrown away after glTF import.
- Assets in glTF files that do not specify meshes but are otherwise valid can be imported now.
- A Mesh that loads a meshless glTF file will still show an error.
- A baked Mesh that loads a glTF file with no nodes referencing meshes will show an error.
- Fixed Mesh not being properly displayed after getting baked, unbaked, then baked again.
- Fixed missing update of broken link errors by undo/redo in some cases.
v0.11.0
[0.11.0] Lua Modules
- File version number has changed. Files saved with RaCo 0.11.0 cannot be opened by previous versions.
- Export file format has changed. Scenes exported with RaCo 0.11.0 / ramses-logic 0.13.0 cannot be opened by previous ramses-logic versions.
Added
- Added multi-selection for deleting, copying, cutting and pasting in Scene Graph, Resources, Prefabs and Project Browser.
- Added Lua module support.
- The new user type LuaScriptModule is a resource that loads modules from specified Lua files.
- LuaScripts have a new output entry "Modules" - for each module defined in the Lua script file, this entry will contain a reference drop-down where LuaScriptModules can be selected
- Nested modules are currently not supported.
- Added support for generating mipmaps for a textures.
- The texture object has a new option "Generate Mipmaps" which by default is off. If enabled, Ramses will auto-generate mipmaps for the texture.
Changes
- Update from ramses-logic 0.12.0 to ramses-logic 0.13.0
- Major performance improvement for large scenes with lots of links alongside few bugfixes
- Update from ramses 27.0.113 to 27.0.114
Fixes
- Undo / Redo is now properly working for collapsed vector editors in the property browser.
- Fixed visual issue with number inputs in property editor not leaving highlighted state after pressing enter.
- Fixed undo/redo to prevent creation of valid links starting on non-existing properties.
- Fixed drop down boxes with "" reference in property browser causing a crash when being deactivated.
Known Issues
- The INT64 type introduced in ramses-logic 0.13.0 is not supported yet.
- The property "timeRange" in Animations introduced in ramses-logic 0.13.0 is not supported yet.
- The new "TimerNode" introduced in ramses-logic 0.13.0 cannot be created in RaCo yet.
v0.10.0
[0.10.0] Animations
- File version number has changed. Files saved with RaCo 0.10.0 cannot be opened by previous versions.
Added
- Added animation support.
- Currently only animations defined in glTF files are able to be imported.
- The first new user type AnimationChannel is a low-level data accessor for animation data, akin to the Mesh type.
- The second new user type Animation is a scene graph object that groups AnimationChannels and contains the channels' linkable outputs.
- Importing assets via the "Import glTF Assets" option will automatically create links from enabled Animations to the respective enabled Nodes.
- Added quaternion rotation for Nodes.
- Quaternion rotation is activated by linking a vec4f output to the Rotation property of a Node. The rotation property will then show the converted Euler angles as calculated by ramses-logic.
- Texture and CubeMap resources now have boxes in the property browser describing their size and channel format.
- Added option to set alpha component of display background clear color in project settings.
Changes
- The property browser now supports localized thousand and decimal seperators for number input (i.e. comma as decimal seperator on German language systems).
- Project files which are not writable are now marked as read-only in the application title.
- Number sliders in the property browser now lock the cursor in place while dragging.
- LuaScript, Material and MeshNode objects now have some of their properties collapsed by default in the property browser.
- Improved performance of undo/redo of link creation/deletion.
Fixes
- Improved keyboard navigation in property browser using Tab, Shift-Tab, Esc and Enter.
- If a file cannot be saved (e. g. because it is read-only), the save no longer silently fails but instead displays an appropriate error message.
- An error is now shown for MeshNodes where the material requires an attribute that the mesh data does not provide.
- Fix crash when performing undo after changing lua script file.