# Candera Base

#### Layout support for 2D and 3D (Canvas only)

The 2D feature to layout nodes by common dynamic layouters has been introduced into 3D now. As a starter only [Canvas](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_canvas.html) nodes are supported. This means [CanvasGroup](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_canvas_group.html), [CanvasSprite](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_canvas_sprite.html) and [CanvasText](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_canvas_text.html "CanvasText represents a text node within a 3D Canvas object.").

The supported layout types are equal to 2D:

<div class="contents" id="bkmrk-baseline-grid-stack-"><div class="contents"><div class="textblock">- Baseline
- Grid
- Stack
- DockPanel
- Overlay
- Default

</div></div></div>The layout is currently applied to the X,Y - plane. The layouter now uses [AbstractNodePointer](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_abstract_node_pointer.html "The class AbstractCameraPointer is an wrapper class to abstract 2D and 3D camera nodes.") and [CanderaObject](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_candera_object.html "Represents the base class for Candera objects related to 3D rendering. Every CanderaObject can have a...") types instead of the 2D only node types.

Restrictions on this version are given as follows:

<div class="contents" id="bkmrk-layout-clipping-in-3"><div class="contents"><div class="textblock">- Layout clipping in 3D canvas is not supported yet
- Z-Fighting: When using the overlay layouter nodes are above each other but have the same Z coordinate. Therefore, these nodes have z fighting. It is planned to automatically solve this. However, for this version, it is advised to set the Depth Bias Unit of the [Appearance](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_appearance.html "The class Appearance groups following render attributes: Material, Textures, RenderMode, and Shader. Render attributes define the distinctive visualization of a geometry like Mesh, Billboard, and PointSprite. Further, render attributes can be shared across multiple objects, which conserves memory and enables sharing of appearance characteristics. An Appearance object is mandatory for any object in order to get rendered. Per default all render attributes are initialized to null, which is a valid setting. If the Appearance is activated, all render attributes that are set become activated. If no RenderMode is defined (null), then the default RenderMode is used instead;.") - [RenderMode](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_render_mode.html "The class RenderMode is an Appearance component that encapsulates polygon-level and per-fragment comp..."). Changing the appearance of a [CanvasSprite](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_canvas_sprite.html) instead of [CanvasText](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_canvas_text.html "CanvasText represents a text node within a 3D Canvas object.") is strongly recommended. [CanvasText](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_canvas_text.html "CanvasText represents a text node within a 3D Canvas object.") requires only one draw call for all texts with equal conditions. One of them is the [Appearance](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_appearance.html "The class Appearance groups following render attributes: Material, Textures, RenderMode, and Shader. Render attributes define the distinctive visualization of a geometry like Mesh, Billboard, and PointSprite. Further, render attributes can be shared across multiple objects, which conserves memory and enables sharing of appearance characteristics. An Appearance object is mandatory for any object in order to get rendered. Per default all render attributes are initialized to null, which is a valid setting. If the Appearance is activated, all render attributes that are set become activated. If no RenderMode is defined (null), then the default RenderMode is used instead;."). Changing the render mode removes the shared appearance and produces an additional draw call.

---

</div></div></div>