# Candera V3.0.3

Release Date: March 20, 2015  
  
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\_0\_3.

# Candera Engine 3D

#### Planar Shadow Alignment

It is now possible to align the class [PlanarShadow](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_planar_shadow.html "PlanarShadow implements a simple technique to simulate shadow casting. Basically a PlanarShadow node ...") to a [Node](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_node.html "The class Node is an abstract base class for all scene graph nodes. Each Node defines a local coordin...") specified as the alignment [Node](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_node.html "The class Node is an abstract base class for all scene graph nodes. Each Node defines a local coordin..."). The receiving [Plane](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_plane.html "The class plane has an infinite extension and is defined by a direction vector (x,y,z) that is the normal to the plane and the distance (d) to the origin of the Cartesian coordinate system. The plane equation is as follows: ax + by + cz + d = 0. Distance from a point to a plane when x,y,z is normalized is calculated as follows: D = |ax + by + cz + d|.") orientation (direction and distance) is then interpreted as being in object space of the specified [Node](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_node.html "The class Node is an abstract base class for all scene graph nodes. Each Node defines a local coordin..."), making it possible to transform the receiving plane with the given alignment [Node](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_node.html "The class Node is an abstract base class for all scene graph nodes. Each Node defines a local coordin..."). Until now the [Plane](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_plane.html "The class plane has an infinite extension and is defined by a direction vector (x,y,z) that is the normal to the plane and the distance (d) to the origin of the Cartesian coordinate system. The plane equation is as follows: ax + by + cz + d = 0. Distance from a point to a plane when x,y,z is normalized is calculated as follows: D = |ax + by + cz + d|.") was oriented in world space always.

If the alignment [Node](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_node.html "The class Node is an abstract base class for all scene graph nodes. Each Node defines a local coordin...") is set to null then the [Plane](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_plane.html "The class plane has an infinite extension and is defined by a direction vector (x,y,z) that is the normal to the plane and the distance (d) to the origin of the Cartesian coordinate system. The plane equation is as follows: ax + by + cz + d = 0. Distance from a point to a plane when x,y,z is normalized is calculated as follows: D = |ax + by + cz + d|.") orientation is interpreted as being in world space.

<div class="contents" id="bkmrk-"><div class="contents"><div class="textblock">---

</div></div></div>#### Query Interface

The class [Query](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_query.html "The class Query enables an interrogation of the Render Device for certain states, for instance whethe...") and the corresponding RenderDevice interfaces allow to process individual, asynchronous GPU-related queries as provided by OpenGL ES 3.0 API or higher. Queries can be used to determine whether and how many pixels have been rendered in user-defined bounds, which can be used e.g. for techniques like occlusion culling and lens flares.

---

# Candera Device

#### OpenGL ES 1.1 Render Device

A Render Device implementation for OpenGL ES 1.1 has been added for future usage by platforms supporting only this OpenGL ES version.

<div class="contents" id="bkmrk-"><div class="contents"><div class="textblock">---

</div></div></div>#### Uniform Location Caching

Introduced Uniform Caching for Auto uniforms to increase performance. Calls to GetUniformLocation now pass semantic instead of names as parameter, which speeds up comparison within cache.

<div class="contents" id="bkmrk--0"><div class="contents"><div class="textblock">---

</div></div></div>#### EGL Context Caching

EGL context caching has been introduced to avoid multiple calls of eglMakeCurrent with same context.

---