CGI Studio 3.3.1
- Candera V3.3.1
- Candera/FeatStd CMake Build System Changes
- Candera Engine 3D
- Candera Engine 2D
- Candera Base
- Candera Monitor
- Candera Device
- Candera AssetLoader
- TextEngine
- Candera Behavior
- Migration Guide
- Courier V3.3.1
- FeatStd V3.3.1
- Analyzer V3.3.1
- SceneComposer V3.3.1
Candera V3.3.1
Release Date: February 2017
To keep backwards compatibility for any interface change in the public API the old interface has been kept and marked as deprecated. The deprecated interfaces will be removed in future versions. Compiler warnings will be generated when using a deprecated interface through the usage of Candera Macro CANDERA_DEPRECATED_3_3_1.
Candera/FeatStd CMake Build System Changes
New CMake variables were added:
| Name | Description | Possible values |
|---|---|---|
| CANDERA_TEXTENGINE_WORKER_THREAD_ENABLED | Uses a worker thread for asynchronous text rendering when enabled. Otherwise it uses a single threaded solution. | ON/OFF (Default: ON) |
Candera Engine 3D
Glyph Atlas TextNode Renderer
This version introduces a new text node renderer for TextNode2D which uses a glyph atlas for rendering.
Candera Engine 2D
Glyph Atlas TextBrush Cache
This version introduces a new text brush cache which uses a glyph atlas.
Reworked TextNode2D
Parts of TextNode2D have been rewritten. Main changes happened to the internal render processes. The rework was necessary for asynchronous text rendering. The performance of TextNode2D increased with this rework.
The behavior of TextNode2D slightly changed:
- It were possible to attach a TextNode2DLayouter to TextNode2D and not using the layouter. This led to undesired visual output but text were visible. Now in this case the layouter has to be used otherwise no (or old) text will be shown.
- In some corner cases (e.g. mixed bidirectional text) the truncation with ellipsis can truncate the text in a wrong manner. This will be part of the next TextEngine update.
- Fixed some incorrect layout issues.
- Some of these layout issues affect all text types which are using TextEngine (not only TextNode2D).
- A multiline text with a truncated line did not show all the lines after the truncated line anymore. This has been fixed.
Asynchronous text rendering
TextNode2D can be rendered asynchronously now. A SceneComposer flag for each TextNode2D were added. With this update text can be rendered in a worker thread or in a single threaded version. This improves the handling of the resources used to render text. Performance of text rendering might be improved on some systems (e.g. multicore system or using the vsync time to render).
Further information of how to use asynchronous text rendering can be found in the Text-Tutorial (No. 5) which received a new chapter for asynchronous text rendering.
Candera Base
Bitmap Atlas
The BitmapAtlas class packs several smaller images into the bitmap of the atlas. It supports padding between packed images so that the user can mipmap the atlas if necessary.
Glyph Atlas
The GlyphAtlas stores glyphs in bitmap atlases together with lookup information for re-use.
Candera Monitor
The monitor and analyzer supports recording performance logs in multiple threads now. It is advised to use the synchronization barrier (macros in PerfMonPublicIF.h) when dumping data. However, it is not necessary in most cases.
It is also advised to use different recorder for each thread. Recorder which do not have an over time information (e.g. ValueRecorder or EventRecorder) are excluded from this restriction. All the other recorder types may work but depends on the use case.
Candera Device
Support for Device Specific Properties in Generic OpenGL ES Device Package
Device packages based on Generic OpenGL ES Device Package can now extend the common Window properties with device specific ones, like special color formats or swap behaviors for example.
Candera AssetLoader
Asynchronous asset loading
Assets can be loaded asynchronously now. A new CMake flag CANDERA_ASSETLOADER_WORKER_THREAD_ENABLED specifies if the asynchronous asset load requests are handled on a dedicated thread or on the caller one. To load the assets asynchronously, a new interface was added - AsyncAssetProviderProxy - available from any AssetProvider implementation via the AssetProvider::AsyncProxy() method.
TextEngine
The TextEngine had two layout issues: Justified alignment were not always correctly left or right aligned. Another effect of this issue was that glyphs at the border moved outside of the defined text area. This has been fixed.
The text were not correctly aligned when word wrap is disabled and the available text area is smaller than a line of text. E.g. A centered text kept being centered, so only the middle of the text were visible. The text is now left or right aligned if the line is longer than the available size.
Candera Behavior
Layout Invalidation
A convenience function to trigger Layout Invalidation was added.
Migration Guide
Any Candera::TextRendering::FontStore derived classes need to add a call to Candera::GlyphAtlas::GetInstance().RemoveFont(Candera::TextRendering::FaceIdentifier) in their Unload function.
Following an overview about interface changes between Candera V3.3.0 and Candera V3.3.1.
Courier V3.3.1
Release Info
- Release Date: February 2017
Changes
- RenderJobStrategy Interface Change
- Support for asynchronous TextNode2D
- Enhanced support for asynchronous asset loading
RenderJobStrategy Interface Change
New protected virtual method OnPostSwapBuffer(Gdu& gdu) has been added to RenderJobStrategy class. This is called within Courier::Renderer::SwapBuffer, after swapping the buffers on the render targets.
Support for asynchronous TextNode2D
Courier supports the asynchronous feature for TextNode2D. The interfaces to correctly use custom synchronization groups are subject to be changed as some courier mechanics in conjunction with asynchronous (pre-)rendering are not fully considered yet. Therefore these interfaces in courier are marked as internal until their final version.
Enhanced support for asynchronous asset loading
AsyncLoad messages now make use of the asynchronous asset loading feature in Candera, which can load the assets asynchronously, single or multi threaded.
FeatStd V3.3.1
Hash Table
This version introduces a hash table container. A hash table is a data structure used to implement an associative array, a structure that can map keys to values. A hash table uses a hash function to compute an index into an array of buckets or slots, from which the desired value can be found.
Random number generator
This version introduces a deterministic random number generator. Random number generation is the generation of a sequence of numbers or symbols that cannot be reasonably predicted better than by a random chance.
AsyncRequests
AsyncRequests were moved from internal namespace to FeatStd.
Floor and FMod
Two functions were added: Floor returns the greatest integer less than or equal to the passed value. For an integer x and a positive integer y, FMod gives the value of the remainder when x is divided by y.
FeatStd Monitor
Changes were made on the FeatStd part of Monitor to support the Feature: thread safe performance recording. See Candera Monitoring for further details.
Analyzer V3.3.1
Scene Analyzer
The Scene Analyzer supports performance log files which contain recordings over multiple threads now.
SceneComposer V3.3.1
SceneComposer Usability Improvements
Remove Recent Solutions
It is possible to remove recent solutions from Startup screen - showed as grid or as list - by using a specific context menu with two possible options:
- Open
- Remove from here
This option is available just for the category of "Recent" solutions (Mantis 7903).
- See also:
-
- Startup Panel in SceneComposer User Manual
Solution Auto-Save
Since now on the user has the possibility to set – in Preferences > Environment – the auto-save operation for the given time intervals. In this way, it can be avoided the loss of data if unexpected events occur (Mantis 7292 & 7380).
Display Controls Option
- See also:
-
- 3D Toolbox in SceneComposer User Manual
- 2D Toolbox in SceneComposer User Manual
Layout Borders
The borders of the grid cells can be visualized in SceneComposer scene editor. The border of every cell of the layouter will be visible as a yellow line. This border is visible if the group is selected or if just one single cell is selected.
Two different secondary borders - the bounding box of the parent node, and the bounding box of the effective node - will be visible, marked with blue, if some values are set (Mantis 8367).
- See also:
-
- General Layout Properties in SceneComposer User Manual
Chained Animations
Since now on, it is possible to select and to drag into an animation group multiple animations. When the user is doing this operation, it is possible to select the option to create an animation chain (Mantis 7297).
- See also:
-
- Animation Groups in SceneComposer User Manual
Persistent Status
Collapsed/Expanded item status is persistent during SceneComposer runtime and it works at item type level. For example, the collapsing of the property group for Camera2D will be applied to all Camera2D items in the solution and all other open solutions.
An extension shall be done to persist (user settings) the collapsed status after restarting SceneComposer (Mantis 7835).
Default Content for Anchors
The control functionality was extended by providing support to add default content to anchors. When a control is instantiated in a scene, in the anchors where the "Default content" is specified a control node of that type is instantiated and added as child to the anchor node itself (Mantis 7617).
Scripting Improvements
The operation of starting scripts will validate any script that has not been validated yet (Mantis 7490).
The user can edit scripts by using an external editor. The script code will be automatically updated and validated in SceneComposer. Any error will be showed (Mantis 8079).
Any imported script is read only. Since now on it is possible from the context menu to change the imported script to editable (Mantis 8126).
Script schortcuts were improved. For example, "Validate Script" was changed to "Commit Changes", removed from the "Script" menu and added as a button in the Script Editor toolbar (Mantis 8127).
If a script has a component which cannot be validated, the script system will not start (Mantis 7937).
A new option is available in the context menu of any scene which has script components: "Enable all script components/Disable all script components" (Mantis 8024).
- See also:
-
- How to Import Resources,
- Script Execution,
- Script Editor and Script Validation and
- Script Component Properties in SceneComposer User Manual
Import Menu Items Order
- Import FBX
- Import Images
- Import Fonts
- Import Scripts
- Import Fragment Shaders
- Import Vertex Shaders
- Import Icons
- Import Raw Resources
- Import Benchmarks
- Import SCL Items
- Import From Photoshop
- Import From Solution
- Configure Automatic Imports
- Delete Unused Imports
- See also:
-
- Import of Resources in SceneComposer User Manual
No Displays in "Shareable Component Library" (SCL)
Since this version on, "shareable component library" (SCL) are not allowed to contain any display. The following two scenarios can result:
- If an already created solution does contain any display, the user will be noticed through a specific dialogue.
- If an older imported/converted solution already contains a .scl file with displays, the error will be showed in the Problems panel. In this way, the user will be noticed and will be allowed to correct this situation.
- See also:
-
- Reusable Solution Libraries in SceneComposer User Manual
Renderer Statistics
Renderer statistics were extended with available Candera statistics (Mantis 8059). The following categories were added:
- DrawCallsInvisible
- ColorBufferClears
- DepthBufferClears
- StencilBufferClears
- AverageDirtyAreaFactor
- CulledNodesUsingDirtyAreaScissor
- SamplerObjects
- See also:
-
- Display Renderer Statistics in SceneComposer User Manual
Reported Version
This is a feature needed to automatically check if the versions of SC and rest of the tools are aligned. It shows a piece of information about version both in FTCLauncher and FTCCmd when using the /version parameter (Mantis 5202).
- See also:
-
- FTC Command in SceneComposer User Manual
Changing Camera Sequence Numbers
When a previously created solution is converted, the user is asked if the sequence numbers have to be changed or not. If the user declines, the sequence numbers will not be updated. FTCCmd.exe does not provide this option. It will not change sequence numbers when converting the solutions (Mantis 7928).
- See also:
-
- Camera Sequence Editor in SceneComposer User Manual
Asynchronous Loading Interface
Added calls to DispatchNext() in SCHost in various lifetime events (Mantis 8041). This features enables widget developers to use async methods for retrieving items from the asset.
SceneComposer behavior change:
- SceneComposer will invoke AsyncProvider().DispatchNext() before rendering a frame. Note: rendering a frame means rendering on Scene Editor and on all displays.
Minor Improvements
- Available Buttons: Commit/Revert changes buttons from SCML editor panel are not enabled until a modification takes place (Mantis 7048).
- Solution Name: When saving a new template, the solution proposed name will be the name of the template solution (Mantis 7755).
- Saving Layout: The SC layout is now saved per solution and user. When a solution with an opened active displays is re-opened, the displays are docked in the same places as before the previous closing of the solution (Mantis 7293 & 7373).
- Invisible Panel: The "Appearance Editor" panel is not visible anymore by default in "Animation Design" perspective. From this perspective the user has access only to those templates from the "Solution Explorer" panel (Mantis 7947).
- Remember Path: The path selected in the "Browse for Folder" dialog opened from "Automatic Imports Configuration" will be remembered (Mantis 6880).
- Folder Path: The default folder path for a new solution wizard is remembered regardless of choosing to create a solution folder (Mantis 4380).
- Reserved Characters: Reserved characters like #, &, $ are not allowed in the "Default Value" field, from "Parameters" tab of a script configuration (in "Automation Script Configuration" dialog) (Mantis 6870).
- Clone Option: The "Clone" context menu option has been made available in "Automation Scripts Configuration" dialog (Mantis 6868).
- Animation Groups Info: Since this version on FTCCmd Info command will also display info about the animation groups (Mantis 7050).
- Improved Tooltip: The tooltip of "Number of visible recently opened solutions" was improved (Mantis 7920).
- SCHost Information: The SCHost information has not been adapted to recent changes in CMake configuration (Mantis 7958).
- Syntax Highlighting: In the Shader Editor syntax highlighting was added for GLSL 3.0.x and 3.1.x keywords (Mantis 6479).
- Fast Forward Improvements: If a value is typed and Enter key pressed, even when click anywhere else inside application, the value cannot be changed with mouse drag right/left. Only if play animation will be pressed it would be possible to do this action. If an unvalid value is typed in the field, as long as the animation plays, the "Fast forward" button remains deactivated (Mantis 5263).
- Mandatory Perspectives: None of the three basic perspectives - "Startup", "Scene Design" and "Animation design" - can be deleted without leaving at least one perspective of the same type. Consequently, the three basic perspectives previously mentioned cannot be deleted (Mantis 7974).
- Opacity Improvement: Maximum value of the opacity slider in the Color Picker was moved to the right (Mantis 7977).
- New Renderer: In addition to the already existing TextNode2D Renderers - Bitmap, Surface, Glyph, GlyphCache - a new Renderer was added. Its name is "GlyphAtlas" (Mantis 8039).
- New Text Node Property: TextNode2D has a new property: Enable Async Pre-Render. This property is used by Candera to make pre-render processings of text (Mantis 8040).
- Extended Player: Player functionality was extended to provide the possibility to visualize and edit control properties. Control properties can be visualized and edited in the same manner as widget properties (Mantis 8218).
SceneComposer Known Issues
- GhlyphAtlas text renderer is not effectively used when rendering. Instead, GlyphCache is used. However, the value is serialized and used by AssetLoader and applications (Mantis 8422).
- If a previously created solution is imported by using the "Import from Solution" option, errors will result if the ID's assigned to objects from the imported solution is the same with the objects' ID from the current solution (Mantis 8300).
- On platforms with 2D over 3D, when the content is shared among several displays, the Player encounters problems displaying the entire content of the loaded asset (Mantis 8427).