CGI Studio 3.4.0
- Candera V3.4.0
- Candera/FeatStd CMake Build System Changes
- Candera Engine 3D
- Candera Engine 2D
- Candera Base
- Candera Scripting
- Candera System
- Candera Device
- Candera Transitions
- Candera Globalization
- TextEngine
- Candera Widgets
- Candera Monitor
- Candera V3.4.0.1
- Courier V3.4.0
- FeatStd V3.4.0
- Analyzer V3.4.0
- SceneComposer V3.4.0
Candera V3.4.0
Release Date: May 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_4_0.
Candera/FeatStd CMake Build System Changes
Added flags:
| Name | Description | Possible values |
| MONITOR_FRAME_DEBUGGER_ENABLED | Enables basic frame debugger (frame timeline capture, single step mode, no OpenGL specific features). | ON/OFF |
| MONITOR_FRAME_DEBUGGER_OPENGL_CAPTURE_ENABLED | Enables OpenGL specific Frame Debugger features. | ON/OFF |
Candera Engine 3D
Uniformbuffers for Light and Material
Candera Light and Material parameters are now passed as uniform buffers to shaders whenever possible. The Candera reference shader include files have been updated so that any existing shader using Candera's Light and/or Material automatically benefits from this new feature without any change necessary. The Renderer::Statistics has been enhanced by the number of instantiated uniform buffer objects and the number of uniform buffer objects that were updated.
Renderer Statistics Overlay
This feature enables the user to draw renderer statistics data into a render target for diagnostic purposes. A common case would be to draw it every frame after rendering all objects so that it constitutes an overlay presenting relevant rendering data to the user in realtime. The color of the overlay's text and values can be configured separately, as well es the properties of the appearance used to draw the overlay. Added the ability to draw only parts of a VertexBuffer to RenderDevice.
- See also:
- RendererStatisticsOverlay.
New 3D Animation Property Setters
New animation property setters have been implemented for the Viewport (Camera::GetViewport) and ScissorRectangle (Camera::GetScissorRectangle) properties of a Camera object from a 3D Scene. The corresponding classes for these are Animation::CameraViewportPropertySetter and Animation::CameraScissorRectanglePropertySetter.
A new animation property setter has been implemented also for the vertex rectangle property of renderable canvas objects. The corresponding class for this is Animation::CanvasVertexRectanglePropertySetter.
Transform Feedback
Candera 3.4.0 supports transform feedback on OpenGL ES3.0 platforms. This feature enables the user to utilize the vertex processing unit of the GPU to perform calculations and reuse the results. This can be used for debugging vertex transformations, speed up particle systems, or reuse skinned mesh data for physics calculations.
Pixel Buffer Objects
Candera 3.4.0 supports pixel buffer objects on OpenGL ES3.0 platforms. This feature can be used transfer data to and from video memory asynchronously. The Renderer::Statistics has been enhanced by the number of instantiated pixel buffer objects.
- See also:
- Renderer::UploadPixelBuffer.
Submesh
This version introduces the ability to draw a subset of a vertex buffer.
- See also:
- VertexBuffer::SetElementStart and VertexBuffer::SetElementCount.
RenderMode Rasterizer Discard
The RenderMode now offers an option to discard rasterization. This means that vertex shaders are processed while fragment shaders are not. This is useful in conjunction with transform feedback. This feature is OpenGL ES3.0 only.
- See also:
- RenderMode::SetRasterizerDiscardEnabled.
Hashes for RenderOrderBin Comparison
During runtime, the RenderOrderBins have been compared via String compare, which is very time consuming, especially if long names are used that differ only in the last letters. To reduce CPU time, hashes are used now (instead of IDs in order to not break the existing interface).
- See also:
- Node::GetRenderOrderBinAssignmentHash.
Candera Engine 2D
Custom Effect Set
It is now possible to configure the list of Effects needed from an external source. For information on how to integrate this feature please refer to Custom Effect Set.
New 2D Animation Property Setters
New animation property setters have been implemented for the Viewport (Camera2D::GetViewport) and ScissorRectangle (Camera2D::GetScissorRectangle) properties of a Camera2D object. The corresponding classes for these are Animation::Camera2DViewportPropertySetter and Animation::Camera2DScissorRectanglePropertySetter.
New animation property setters have been implemented also for BoundingRectangle and ClippingRectangle properties of a Node2D object. The corresponding classes for these are Animation::Node2DBoundingRectanglePropertySetter and Animation::Node2DClippingRectanglePropertySetter.
A new animation property setter has been implemented also for the Layout Margin property of 2D nodes. The corresponding class for this is Animation::LayoutMarginsPropertySetter.
New Math2D Functions
Math2D::TransformScreenToWorld accepts a camera object and a position in screen space. It returns the corresponding position in the world space.
Math2D::TransformScreenToObject accepts a camera object, a position in screen space and an object. It returns the corresponding position in the provided object's space.
Option to inherit the Layout Direction or to use the Culture
Previously the AutomaticDirection resulted in an inherited layout direction.
As a consequence the layout stayed fix at either left-to-right or right-to-left once a specific layout direction has been choosen on a node for the complete sub tree.
Hence, two additional options for the layout direction have been introduced:
- InheritDirection: take the parent layout direction.
- CultureDirection: take the culture specific layout direction.
Now it is possible to change the setting again to the culture specific layout direction. For backward compatibility the AutomaticDirection will be by default interpreted as InheritDirection.
- See also:
- 2D Layout.
GridLayouter effective Row/Column Data
Effective grid row/column data access interface has been added to GridLayouter.
Candera Base
Dynamic Properties: Code Size Reduction
New macros have been introduced to reduce the code size by moving dynamic property code to implementation files. The new macros are used already in Layouter classes.
- See also:
- CdaDynamicPropertiesDeclaration and CdaDynamicPropertiesDefinition.
Candera Scripting
Lua Update
Lua has been updated to version 5.3.4.
Candera System
Screenshot-Tool
Candera has a tool to create screenshots now. It is currently only available when 3D is enabled and OpenGL (ES) 3.0 is in use. The screenshot tool has an event listener which will be fired as soon as the screenshot is done. For more advanced usages on how to override the behavior, please have a look in the API.
- See also:
- Diagnostics::ScreenshotTool.
SizeType Datatype
FeatStd::SizeType can now be used as widget property type for 32 and 64 bit targets.
Candera Device
RenderTarget events
RenderTarget now supports attaching listeners for catching events before and after SwapBuffers is called.
RenderDevice::ActivateShader deprecated
RenderDevice::ActivateShader has been deprecated. Renderer::ActivateShader shall be used instead.
TextBrush Line Spacing in Pixels/Factor of Height
A flag has been added to TextBrush for line spacing. When this is set to true, line spacing will be in pixels. When this is set to false, line spacing will be a factor by which TextRendering::Metrics::lineHeight from TextRendering::Style::GetMetrics() is multiplied.
- See also:
- TextBrush::PixelwiseLineSpacing.
Candera Transitions
New Default Transition Type
The transition framework now supports triggering of animations that can be defined via Transitions::Hint parameters.
Reverse Transition
It is now possible to trigger reverse transitions. In case reversible fragments are identified, the already running transition fragments will go reverse, from their current state to their original one. An optional flag has been added to the Transitions::Rule to specify whether it shall be allowed to reverse a transition or not. Default value is false. A Transitions::OnReverseTransitionFragment corresponding event notifier has been added.
Candera Globalization
CultureChangeListener Callbacks
New methods have been added to Globalization::CultureChangeListener which are called before and after the culture has been changed.
TextEngine
Language Dependent Fonts
Extended the TextRendering::Style to support language dependent fonts. A style can change the font to a culture dependent font when the culture has been changed. Further information can be found in the Changelog entry of SceneComposer and the TextRendering::Style documentation.
Alignment Behavior
The TextEngine provides a flag with TextRendering::LayoutingOptions::IsOrientationRealignmentEnabled to switch between different solutions in case of a text which is too long for the maximum width. This flag decides which part of the text will be clipped in cases of centered or right-aligned texts. The flag provides two choices:
- Show the text which is normally placed within the visual bounding box.
- Show the beginning of the text within the visual bounding box providing the ability to read the beginning of the text.
The TextNode2D handles this by using the first solution when text trimming is disabled and the second one when it is enabled.
Minor Changes
Further optimized the visual output of justified text. And fixed some alignment issues.
Candera Widgets
More Property Types for Animations
It is now possible to animate widget properties of Rectangle and Margin types. Also, properties of Vector4 type for widgets are now supported and can be animated. Access to the properties by specifying an index has been added.
Widget MetaInfo Improvements
- The Widget Macros no longer move everything after the macros into the public scope of a class (bug before the changes in Candera).
- The internal CdaMetaInfo struct generated by the macros has been renamed to CMI (due to reduction in code size).
- New method for Widgets: WidgetBase::GetMetaInfo (in macro CdaWidgetDefEnd).
- Restructuring of the MetaInfo Macro implementation to reduce the code size dramatically.
Candera Monitor
Frame Debugger
Extended Monitor with the ability to capture frames and events.
Captured data includes frame timeline with important events (rendered nodes, camera, OpenGL calls) and color/depth/stencil buffer for selected nodes.
Candera V3.4.0.1
Release Info
- Release Date: June 22, 2017
- For details please refer to the release document
Courier V3.4.0
Courier V3.4.0
Release Info
- Release Date: May 2017
Changes
Changes part of Patch Releases
3.4.0-1 New Animation Property Setters support
Support for the new animation property setters from Candera have been added also in Courier. Thus, following property setters are also handled in Courier:
- Candera::Animation::CameraViewportPropertySetter and Candera::Animation::CameraScissorRectanglePropertySetter;
- Candera::Animation::CanvasVertexRectanglePropertySetter;
- Candera::Animation::Camera2DViewportPropertySetter and Candera::Animation::Camera2DScissorRectanglePropertySetter;
- Candera::Animation::Node2DBoundingRectanglePropertySetter and Candera::Animation::Node2DClippingRectanglePropertySetter;
- Candera::Animation::LayoutMarginsPropertySetter.
3.4.0-2 New DelayedUnload Message
A new Courier message has been introduced, Courier::DelayedUnloadMsg, for delayed unload requests.
Courier::ViewHandler stores the request in a vector for further processing in the Render method.
Whenever a delayed unload request counter reaches zero, a Courier::LoadReqMsg is posted to unload the view in the next loop iteration.
If the creation or post of the Courier::LoadReqMsg fails (e.g. due to too many concurrent Courier::LoadReqMsg) then the next iteration will retry the unload. By using the Courier::LoadReqMsg for the unload itself, a Courier::LoadResMsg will be returned.
3.4.0-3 Support for Animation Transitions
Internal class Courier::CanderaTransitionHandler has been enhanced by new methods. This will further by used the the Transitions Framework for running Candera Animations.
New Getter/Setter methods added to set a Candera::Animation::AnimationTimeDispatcher for Candera Transitions.
Courier V3.4.0.1
Release Info
- Release Date: June 22, 2017
- For details please refer to the release document
FeatStd V3.4.0
Release Date: May 2017
FeatStd Util
SizeType Traits
FeatStd::SizeType can now be used as widget property type for 64 bit target builds as well.
StringBufferAppender 64Bit Support
FeatStd::StringBufferAppender has been extended in order to fully support x86 and x64 targets.
FeatStd Monitor
Extensions for Frame Debugger and Memory Pool
Extended FeatStd Monitor to support frame debugger. Refactored parts of Memory Pool Monitor.
FeatStd V3.4.0.1
Release Info
- Release Date: June 22, 2017
- For details please refer to the release document
Analyzer V3.4.0
Release Date: May 2017
Frame Debugger
Added “Frame Debugger” which can be used to capture frames and events. Captured data includes frame timeline with important events (rendered nodes, camera, OpenGL calls) and color/depth/stencil buffer for selected nodes.
SceneComposer V3.4.0
SceneComposer Usability Improvements
Easy Mode Generator
A configuration file will allow the user to set values that will overwrite the default value from the ApplicationConfig file when SceneComposer starts. This file can be generated by using the "SceneComposerConfigurator.exe".
In this way, it can be set which object properties are to be presented in SceneComposer's property grid, "Preferences", and all existing dynamic properties (Polarion CGI1-15841, CGI-15842 & CGI-16101).
The configuration applies to all static object properties. The user can rule for dynamic properties like widgets, behaviours, controls. The configuration of widgets, behaviours and controls cannot be extracted/generated automatically.
The configuration values which can be set are:
- Initial value;
- Restrict visibility (True/False);
- ForeceReadOnly (True/False).
- See also:
-
- Easy Mode Generator in SceneComposer User Manual
Language Dependent Fonts
Until now, the fonts could be configured based exclusively on unicode ranges. Since this version on, it will be possible to configure the fonts on the basis of language. So, the configuration is extended in such a way that the font selection can be also conditioned by language ISO codes (the standardized nomenclature used to classify languages).
The text style entries are grouped by culture (multiple). Every text style has - similar to "Entries" - a "Culture" list and every culture from this list has its own "Entries" list. In this way all the text style entries are grouped - as mentioned above - by culture (Polarion CGI1-15719).
- See also:
-
- Text Style in SceneComposer User Manual
SceneComposer Icon in Windows Taskbar
Like any other application, SceneComposer has the ability to be pinned/unpinned to Windows taskbar (Mantis 5950).
- See also:
-
- Starting SceneComposer in SceneComposer User Manual
Autosave Improvements
- See also:
-
- Enable Save Snapshot in SceneComposer User Manual
Transitions
The previously added feature of scene transition editor was completely re-done (Polarion CGI1-15898, CGI1-15858, CGI1-15885, CGI1-16195 etc.). Since now on two different panels are available to set and use transitions:
- "Rules Editor": it allows the definition of transitions on a per scene basis and test these transitions directly in SceneComposer's display preview. The designer can use the editor to set the transitions to ("Destination") or from a scene ("Source") just by selecting or by dragging and dropping effects onto the scene list.
- "Transition Execution": supposing that the scenes are prepared to be used in a transition, the user has to choose which kind of transition will be assigned to the "Activate" and "Deactivate" state of the scene. The former concept indicates what will happen when the transition will be working from a scene to that scene or when will be working on a scene alone, and the latter indicates what will happen when the transition will be working from that scene to another one or when will be working on a scene alone. This operation can be done in a secondary panel named "Transition Execution".
In addition to cut, fade, slide and scale transitions - or combinations of these - a new build-in transition type was added: Animation. By using it is possible to trigger animations or group animations within transitions.
- See also:
-
- Transitions in SceneComposer User Manual
Control Node Animations
SceneComposer 3.3.1 displays local animations (Control node animations) and plays them, but does not offer any possibility of including them in Animation Groups (Polarion CGI1-15885). Since this version on, the "Local animations" are renamed "Control animations". The command by add animations into an animation group has been split in two distinct and self-explanatory commands (available in the context menu):
- "Add this Animation to Animation Group(s)" and
- "Add Animations to this Animation Group".
- After a control animation is added, it behaves as any animation node. It inherits Delay and Startup properties (startup is available only in certain circumstances).
- AnimationGroup panel has been changed. Instead of displaying the name of nodes (Which is very irrelevant to the user) it now displays the full name of the animations and short version of the control animations.
- Categories for a normal animation (inside an animation group) are reorganized: a) Delay and Startup are moved to a separate category called "Animation", which is displayed after "General"; b) A new readonly property is available, "Animation" which displays the name of the node animation
- See also:
-
- Animation Groups in SceneComposer User Manual
Animation Property Setter
A new animation property was implemented for:
- Camera2D ViewPort (values: Left, Top, Width, Height)
- Camera2D ScissorRectangle (values: Left, Top, Width, Height)
- Camera3D ViewPort (values: Left, Top, Width, Height)
- Camera3D ScissorRectangle (values: Left, Top, Width, Height)
- CanvasRenderable Rectangle (values: Left, Top, Width, Height)
- Node2D Layout Margin (values: Left, Top, Right, Bottom)
- Node2D Bounding Rectangle (values: Left, Top, Width, Height)
When selecting from the context menu "Add Animated Property" on any of the mentioned items, the new property - ViewPort, ScissorRectangle, and SetVertexRactangle - will appear on the drop down box. After selecting it and pressing "OK", an entry will be added in the Animation Values (Animation Design mode) and two key frames will be automatically created (Polarion: CGI1-15990, CGI1-15991 & CGI1-15992).
- See also:
-
- Create an Animation on a Specific Node in SceneComposer User Manual
Renaming Clones and Nodes
When cloning (or pasting a node) the name of the new node will automatically check if there is already a number at the end of the name. If there is a number this should be increased automatically.
For instance, if an existing "Node_1" (or "Node1") is cloned the name of the clone will be "Node_2" (or "Node2") and not "Node_1_1" (or "Node1_1").
The duplication of the item names is incremented based on the numeric suffix with our without an "_" separator (Mantis 7603).
- See also:
-
- Clone, Delete, Rename Scene Nodes in SceneComposer User Manual
Behavior Indicator
An overlay icon was added for nodes containing one or more behavior elements. In this way it is easier to find those nodes which use behaviours (Mantis 8007).
Shifting Animations Keyframes
A checkbox - "Snap when shifting animation keyframes" - was added to allow the setting of the snap shifting animation keyframes to increment of 5. The checkbox is available in "Preferences" panel, section "Animations" (Mantis 7410).
- See also:
-
- Animation Options in SceneComposer User Manual
Export Dependency List
- See also:
-
- Usage and Dependencies in SceneComposer User Manual
Live Data Preview - Courier Extension
SceneComposer was extended to allow an advanced usage of Courier plugin (Polarion CGI1-15850, CGI1-15849). More detailed, it offers different functions and improvements:
- SDK functions to dynamically change widget and control properties;
- SDK helper function to provide databinding properties based on the custom metainfo specification;
- SDK functions to enable/disable live data integration.
The user, when working with Courier, can define the data items and link them to widget/control properties via data binding.
- Note:
- In ScenceComposer the data binding properties are parametrized as default values.
Uniform Buffer Object Support
OpenGL ES3.0 introduces Uniform Buffer Objects (UBOs). To adress this issue in SceneComposer two changes have been done (Polarion CGI1-15481):
- Parse the shader to recognize uniform block layouts to correctly determine array size used for instancing;
- Determine if built-in Material, Light, and Camera uniforms are used in blocks and set the bitfield flag in the Shader object accordingly.
Minor Improvements
- Saved Settings: Since now on, some specific settings are saved on a restart of SceneComposer - scale, translate, rotate, preview camera, editor camera scope, enable active rendering, enable updating for all widgets in all scenes (Mantis 8355).
- Widget Update Stored: The settings for live rendering and Widget Update are also stored accross SceneComposer lifetieme (Mantis 8313).
- Change to Editable: The option "Change to Editable" from the context menu is available even though the user selects more scripts (Mantis 8392).
- Item Definition: When a new render target is created, a preselected "Render Target Template" is already set for each platform (Mantis 7245).
- Colored Problems: Three distinct colors have been defined for problems: red for "Error", yellow for "Warning" and white for "Information". Red color will take precedence over the yellow and white (Mantis 7614).
- Asset ID: To improve the usability of SC, the Asset Id can be switched between Hex and Decimal representation based on a configuration flag in the Properties' panel (File > Preferences > Properties Panel) (Mantis 8599).
- Error Friendly Displayed: When the restore operation failed, the error is user friendly displayed (Mantis 8543).
- Render Statistics: New render statistics have been added under the "2D" section: "Blits", "Blits Culled", and "Clears" (Mantis 8333).