# 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.

---