# SceneComposer V3.0.0

# Candera Related Features

#### Array Editor

Array properties are now supported for dynamic items (widget, effect, render target and layouter). Special editors are available in properties panel for changing the value.

**See also:**

<div class="contents" id="bkmrk-candera%3A%3Aarrayproper"><div class="contents"><div class="textblock">- [Candera::ArrayProperty](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_array_property.html "ArrayProperty for generic meta info array properties.")

---

</div></div></div>#### Candera Driven Validation

A new feature was added which enables [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") engine to validate the content from SceneComposer. For each dynamic property of widgets, effects, render targets or layouters, [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") engine can generate a problem message (error or warning). This message is displayed in the problems panel and also as a tooltip in the properties panel for the item on which the property is set.

If an item has properties with Error problems, the asset is not generated for it.

**See also:**

<div class="contents" id="bkmrk-candera%3A%3Adynamicprop"><div class="contents"><div class="textblock">- [Candera::DynamicProperties::ValidateValue](http://dev.doc.cgistudio.at/APILINK/struct_candera_1_1_dynamic_properties_1_1_validate_value.html)

---

</div></div></div>#### Camera Groups

The purpose of this work package is to support the creation of camera groups and to offer extended support for display visualization by enabling/disabling camera groups. In [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]"), a CameraGroups is a class containing a list of Camera2D and Camera3D objects.

The camera groups were added and they allow the user to group together cameras from the entire solution. The camera groups are displays in a tab or the render targets explorer panel.

Widgets can be associated to camera groups (widget property of type CameraGroup\* is supported). However, the widget should not modify the state of the camera group (shall not add or remove cameras)

**See also:**

<div class="contents" id="bkmrk-camera-group-in-scen"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Camera Group](https://doc316en.candera.eu/link/133#bkmrk-camera-group%C2%A0)</span> in SceneComposer User Manual
- [Candera::CameraGroup](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_camera_group.html)

---

</div></div></div>#### Composite Animations

The Composite Animation was Removed. An animation can now contain animated properties for composites and scenes (they can also be mixed).

**See also:**

<div class="contents" id="bkmrk-add-animated-propert"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Add Animated Property](https://doc316en.candera.eu/link/17#bkmrk-page-title)</span> in SceneComposer User Manual

---

</div></div></div>#### Clear Mode

A new item of type "Clear Mode" can be created in SceneComposer and referenced from any render target.

**See also:**

<div class="contents" id="bkmrk-clear-mode-item-in-s"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Clear Mode Item](https://doc316en.candera.eu/link/2#bkmrk-clear-mode-item)</span> in SceneComposer User Manual
- [Candera::ClearMode](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_clear_mode.html "Describes how a viewport is cleared. The color buffer may be cleared using a given color...")

---

</div></div></div>#### Items AssetId

All items in a solution have a type and a name which identifies them in their parent container and a full name which uniquely identifies them in the entire solution (for example a mesh in a scene could have the full name /Global/Scenes/MyScene/Group:RootNode/Mesh:MyMesh).

Similar to the full name which identifies the items in the solution, for [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") there is a CanderaPath which uniquely identifies an item in an asset file (for example the mesh mentioned above will be referenced in [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") using the path /Scene:Global::Scenes::MyScene/Group:RootNode/Mesh:MyMesh). Such a string will have to be stored in the asset library for animations or widgets which reference scene nodes. Also it will be processed every time the scene is loaded.

<p class="callout info">Candera does not have the concept of solution folders, so in order to distinguish between items with the same name but located in different solution folders the CanderaName property of the items contain also the name of the folders (for example the scene /Global/Scenes/MyScene will have the CanderaName Global::Scenes::MyScene).</p>

To improve the performance we introduced another way to identify items using numerical Ids instead of strings.

<div class="contents" id="bkmrk-symbolic-names.-this"><div class="contents"><div class="textblock">- **Symbolic Names.** This type of names can be assigned to items to make their Id accessible from applications. A C++ header with all the symbolic names from the solution can be generated via File-&gt;Export Symbolic Names.

</div></div></div>**See also:**

<div class="contents" id="bkmrk-items-assetid-in-sce"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Items AssetId](https://doc316en.candera.eu/link/36#bkmrk-page-title)</span> in SceneComposer User Manual

---

</div></div></div>#### EGL Context Sharing

A Context Resource Pool (CRP) is used to share resources among different Context Providers. It allows grouping of render targets and associated device objects (Shaders, Texture Images, Vertex Buffers, etc.) in a common pool.

Each platform has some rules and restrictions related to CRPs, for example on some platform multiple displays can share the same CRP, while on some other platform a CRP is required for each Window Surface. SceneComposer displays the relationship between CRPs, Displays, Window Surfaces and Frame Buffer Objects in the Render Target Explorer panel (main view and an additional CRP view). Depending on the platform, the texture render targets (frame buffer objects) may have an Owner property of type render target reference or CRP.

If the type of the Owner property is render target reference, the owner must be a display render target (window surface).

If the type of the Owner property is CRP (integer value in SceneComposer), the possible values will be obtained from the available displays.

If the Owner property is available for a render target but it is not set by the user, the render target will be considered orphan.

**See also:**

<div class="contents" id="bkmrk-context-resource-poo"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Context Resource Pool](https://doc316en.candera.eu/link/133#bkmrk-context-resource-poo)</span> in SceneComposer User Manual
- Candera::ContextResourcePool

---

</div></div></div>#### BitmapFormat and BitmapType

These properties were made obsolete and their value were merged into PixelFormat which contains only the valid combinations of the former properties.

---

# SceneComposer Usability Improvements

#### Reusable Solution Library

The main goal of a shareable component library (SCL) solution is to make all the resources from a particular SCS solution available to be used in other solutions. SceneComposer provides the possibility to reuse any part from a solution that is exported as a SCL.

**See also:**

<div class="contents" id="bkmrk-reusable-solution-li-0"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Reusable Solution Library](https://doc316en.candera.eu/link/47#bkmrk-page-title)</span> in SceneComposer User Manual

---

</div></div></div>#### Appearance Wrapper

In some circumstances it could be necessary to expose for the user just those properties which should be modified to get a desired setting of an object. The Appearance Wrapper feature allows to expose only some properties of an appearance attached to a node or the properties pertaining to its containments (material, render node, shader, uniform setter, texture).

**See also:**

<div class="contents" id="bkmrk-appearance-wrapper-i"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Appearance Wrapper](https://doc316en.candera.eu/link/132#bkmrk-node-attachment-temp)</span> in SceneComposer User Manual

---

</div></div></div>#### Shader Details

Shader requirements are now available in SceneComposer. This includes the number of lights, materials and textures. They are displayed in a new tab "Details" in the Property Grid, when a shader program is selected. The tab also contains the available attributes and uniforms.

**See also:**

<div class="contents" id="bkmrk-shader-editor-in-sce"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Shader Editor](https://doc316en.candera.eu/link/146#bkmrk-shader-editor%C2%A0)</span> in SceneComposer User Manual

---

</div></div></div>#### Problem Viewer Extensions

Due to the huge quantity of informations which can be displayed on the Problems browser, it is possible to suppress warnings or messages solely related to imported content.

To get focused on problems related to SceneComposer solution configuration, many changes were made related to problem management:

<div class="contents" id="bkmrk-the-problems-configu"><div class="contents"><div class="textblock">- The problems configuration panel is available from the problem browser via "Configure problems" button.
- Now it is possible to ignore Warning/Info problems for an item or for all descendants of a folder (these are user suppression flags stored in user data file outside of the solution).
- Now it is possible to ignore a specific Warning/Info problem for entire solution (these are global suppression flags stored in the solution).
- The items which have Error problems can not be rendered and it is also not possible to generate an asset library for them.

</div></div></div>**See also:**

<div class="contents" id="bkmrk-problems-browser-in-"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Problems Browser](https://doc316en.candera.eu/link/30#bkmrk-page-title)</span> in SceneComposer User Manual

---

</div></div></div>#### Bitmap Usage Validation

Custom formats available for each bitmap converter will have an additional property to specify for which engine are they supported (Candera2D, Candera3D, Mixed). This information is displayed in the properties panel of the BitmapProfile used by the Bitmap (see property CanderaModelType). During validation of the solution, if CanderaModelType of the bitmap profile used by the bitmap does not match the texture, effect, widget, a warning will be displayed (Mantis 4461).

**See also:**

<div class="contents" id="bkmrk-bitmap-profile-in-sc"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Bitmap Profile](https://doc316en.candera.eu/link/56#bkmrk-page-title)</span> in SceneComposer User Manual

---

</div></div></div>#### Activate Referenced Items

The possibility to activate items referenced through paths has been added. The Activate button will load the item in the property grid and in others panels linked to the type of the item (Mantis 4621).

**See also:**

<div class="contents" id="bkmrk-activation-of-items-"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Activation of Items Referenced](https://doc316en.candera.eu/link/129#bkmrk-activation-of-items-)</span> in SceneComposer User Manual

---

</div></div></div>#### Uniform Auto Activation

Uniform setters contain some flags used to enable the activation of various auto uniforms (camera position, lights, material, texture, etc.) which are defined in shader programs.

A new property was added to uniform setters:

<div class="contents" id="bkmrk-enable-auto-activati"><div class="contents"><div class="textblock">- **Enable Auto Activation.** This property becomes available just if the "Enable uniform setter auto activation" flag (Solution Options&gt;General Configuration panel) is properly set. After this operation, a check box with the same name will become available in the Properties panel. This property specifies if the auto activation of the flags should be enabled based on the global values stored in the solution properties or locally in this item (Mantis 4657).

</div></div></div>**See also:**

<div class="contents" id="bkmrk-generic-shaderparams"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Generic ShaderParamSetter](https://doc316en.candera.eu/link/146#bkmrk-generic-shaderparams)</span> in SceneComposer User Manual
- [Candera::GenericShaderParamSetter](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_generic_shader_param_setter.html "GenericShaderParamSetter bundles uniform shader parameters that are calculated by Candera...")

---

</div></div></div>#### Multi Materials Import from FBX

This feature enables the user to import FBX objects that have multiple materials (Multi/Sub object) associated to the geometry (For example different polygons are associated different materials). As [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") does not support multi-material objects, an object that has a multi-material is split into separate objects in which the polygons share the same material. Therefore, such an object will be imported as a group containing the sub-meshes that sum up to the FBX object.

**See also:**

<div class="contents" id="bkmrk-import-fbx-files-in-"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[How to Import Resources](https://doc316en.candera.eu/books/import-of-resources/page/how-to-import-resources)</span> in SceneComposer User Manual

---

</div></div></div>#### Auto-hide in Selected Panels

Auto-hide is offered in selected panels, similar to VisualStudio. Also available are the following options: Float, Dock as Tabbed Document, Hide and Close.

**See also:**

<div class="contents" id="bkmrk-scenecomposer-gui-in"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[SceneComposer GUI](https://doc316en.candera.eu/link/9#bkmrk-page-title)</span> in SceneComposer User Manual

---

</div></div></div>#### Perspective Support

It is now possible to save a new perspective layout, which will be based on the current perspective. Also the possibility to delete, to export and to import a perspective was added.

**See also:**

<div class="contents" id="bkmrk-scenecomposer-gui-in-0"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[SceneComposer GUI](https://doc316en.candera.eu/link/9#bkmrk-page-title)</span> in SceneComposer User Manual

---

</div></div></div>#### Scene Templates

Scene templates are now supported in SceneComposer. A scene created by the user can be made template by checking its IsTemplate property. The dialogue used to create new scenes was modified to allow the user to select an existing template or import.

**See also:**

<div class="contents" id="bkmrk-scene-templates-in-s"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Scene Templates](https://doc316en.candera.eu/link/41#bkmrk-page-title)</span> in SceneComposer User Manual

---

</div></div></div>#### Import Fonts Button

A new "Import Fonts" button was added in the Text Style Palette section from the Solution Options ("File" &gt; "Solution Options"). If there are no fonts already imported, the user can import any available fonts by using the "Import Fonts" button which is placed on the upper-right corner of the Text Style Palette section.

**See also:**

<div class="contents" id="bkmrk-text-style-in-scenec"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Text Style](https://doc316en.candera.eu/link/54#bkmrk-page-title)</span> in SceneComposer User Manual

---

</div></div></div>#### Support for Display and Device Meta-Info

Display is now a dynamic item and has dynamic properties (like widget, render target, effect and layouter properties). Device Package is a new dynamic item which is displayed as the root element in the Render Target Explorer panel.

**See also:**

<div class="contents" id="bkmrk-add-a-new-display-in"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Add a new Display](https://doc316en.candera.eu/link/1#bkmrk-page-title)</span> in SceneComposer User Manual

---

</div></div></div>#### Render Target Preview

Preview functionality for render targets has been extended: when deactivating/activating a render target - by unchecking/checking the checkbox - in order to disable/enable the preview of it, the render target gets also unloaded/uploaded. Therefore, one can make use of several WindowSurfaceRenderTarget objects having the same layer by activating only one of them - the others will not be uploaded (Mantis 3935).

**See also:**

<div class="contents" id="bkmrk-add-render-target-in"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Add Render Target](https://doc316en.candera.eu/link/2#bkmrk-page-title)</span> in SceneComposer User Manual

---

</div></div></div>#### Import KTX Image Format

A new image format - "Khronos Texture" (.ktx) - can be imported and used in SceneComposer.

**See also:**

<div class="contents" id="bkmrk-import-.ktx-image-fo"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Import .KTX Image Format](https://doc316en.candera.eu/link/1101#bkmrk-import-file-formats)</span> in SceneComposer User Manual

---

</div></div></div>#### Global Cameras Rendering Order

The global cameras rendering order changed. The rendering sequence for 2D and 3D cameras is:

<div class="contents" id="bkmrk-1%29-2d-cameras-2%29-3d-"><div class="contents"><div class="textblock">- 1) 2D cameras
- 2) 3D cameras

</div></div></div>**See also:**

<div class="contents" id="bkmrk-rendering-order-in-s"><div class="contents"><div class="textblock">- <span style="color: rgb(230, 126, 35);">[Rendering Order](https://doc316en.candera.eu/link/6#bkmrk-page-title)</span> in SceneComposer User Manual

---

</div></div></div>#### Minor Improvements

<div class="contents" id="bkmrk-animation-editing-mo"><div class="textblock">- **Animation Editing Modes.** In Animation Timeline Editor and Animation Curve Editor, the buttons representing the keyframe edit modes were replaced with one ComboBox containing all the options.

- **Comments on Composite Properties.** Now it is possible to set a description for the composite properties. This description will be shown as tooltip in the properties panel for the associated property of the the composite node.

- **Ghosting.** This functionality pertains to the "keyboard support" feature which is still under development. Ghosting was implemented for the panels with a tree structure. A placeholder will indicate the possible position of a node (on the same level as another, as child of another node or as property for a node).

- **Usages Panel.** If a reference has usages in the solution, when trying to remove it, a panel containing these usages will be displayed.

- **Added TextStyle.** New TextStyle support was added in Theme.

- **Default Solution.** Folders for the new item types like ClearMode, TextStyle and BitmapProfile were added. Also some folders were moved or removed.

- **Optional SVNModule.** Due to performance reasons, the SVNModule is now optional in SceneComposer. If the assembly FTC.SourceControl.SVN.dll does not exist in the same folder as SceneComposer executable no SVN functionality will be available. Additionally it is possible to disable the SVNModule via a checkbox in the Preferences-&gt;SourceControl panel (Mantis 4362).

- **Texture Generation.** No longer available for vertex buffer editing (Mantis 4204).

</div></div>---

# SceneComposer Known Issues

<div class="contents" id="bkmrk-scl-feature-is-not-w"><div class="textblock">- SCL feature is not working properly on WinXp due to the long path of the temporary directory ```
    (c:\Documents And Settings\...). 
    ```

- There is no automatic conversion for SCLs. Any SCL solution needs to be converted manually and re-exported.

- Uniform auto activation is not working yet for appearances which have no explicit uniform setter but are using one from the solution config.

- Texts configured by using Master Language in SCL solutions, are not loaded in the solution where the SCL is referenced (the Ids are displayed instead of the text).

- Mipmapping might not work correctly in some situations.

- Photoshop import: position and bounding box of text layers are not imported correctly (texts are shifted).

- Photoshop import: in some situations, text layers are imported as bitmaps and may cause crashes.

</div></div>---

# Import from Photoshop

#### Photoshop Import/Export

From [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") 2.10 to 3.0, TextBrush was changed in that:

<div class="contents" id="bkmrk-alignment-property-w"><div class="contents"><div class="textblock">- Alignment property was removed and TextBrush in 3.0 behaves just like Alignment was "ConstantHeightAlignment"
- LayoutingArea property was introduced

</div></div></div>SceneComposer accomodates these changing by:

<div class="contents" id="bkmrk-post-processing-solu"><div class="contents"><div class="textblock">- Post-processing solutions when converting 2.10 solutions or importing Photoshop solutions (.scsxe). Because in 2.10 text effects were imported using Alignment=ConstantHeightAlignment, during the post-processing, render nodes will be repositioned. During conversion, same processing occurs, so positions might be changed in order for the text to appear to the same position in the view.
- Setting LayoutingArea at Photoshop-export time. LayoutingArea value is set to BoundingRectangle value.

</div></div></div>#### Import Names Validation

This change was done due to misalignments between SceneComposer's name validation rules and name validation rules implemented in importers and PhotoshopExporter. The PhotoshopExporter script's name validation rules were very restrictive, replacing commonly used characters (even spaces) with underscore. The attempt was to get PhotoshopExporter's naming validation as close as possible to SceneComposer's ones.

<div class="contents" id="bkmrk-see-also%3A-import-nam"><div class="contents"><div class="textblock"><dl class="see"><dd></dd></dl></div></div></div>#### Photoshop Known Issues

<div class="contents" id="bkmrk-some-texts-might-app"><div class="textblock">- Some texts might appear slightly offseted after converting older solutions or importing from Photoshop due to [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") computations. Especially visible in text areas with center justification (text appears shifted to right).
- Position and bounding box of text layers are not imported correctly (texts are shifted).
- In some situations, text layers are imported as bitmaps and may cause crashes.

</div></div>---