namespace scene\r
{\r
\r
+class IShadowVolumeSceneNode;\r
class IMesh;\r
\r
\r
/** \return Pointer to mesh which is displayed by this node. */\r
virtual IMesh* getMesh(void) = 0;\r
\r
+ /** The shadow can be rendered using the ZPass or the zfail\r
+ method. ZPass is a little bit faster because the shadow volume\r
+ creation is easier, but with this method there occur ugly\r
+ looking artifacts when the camera is inside the shadow volume.\r
+ These error do not occur with the ZFail method, but it can\r
+ have trouble with clipping to the far-plane (it usually works\r
+ well in OpenGL and fails with other drivers).\r
+ \param shadowMesh: Optional custom mesh for shadow volume.\r
+ \param id: Id of the shadow scene node. This id can be used to\r
+ identify the node later.\r
+ \param zfailmethod: If set to true, the shadow will use the\r
+ zfail method, if not, zpass is used.\r
+ \param infinity: Value used by the shadow volume algorithm to\r
+ scale the shadow volume. For zfail shadow volumes on some drivers\r
+ only suppport finite shadows, so camera zfar must be larger than\r
+ shadow back cap,which is depending on the infinity parameter).\r
+ Infinity value also scales by the scaling factors of the model.\r
+ If shadows don't show up with zfail then try reducing infinity.\r
+ If shadows are cut-off then try increasing infinity.\r
+ \return Pointer to the created shadow scene node. This pointer\r
+ should not be dropped. See IReferenceCounted::drop() for more\r
+ information. */\r
+ virtual IShadowVolumeSceneNode* addShadowVolumeSceneNode(const IMesh* shadowMesh=0,\r
+ s32 id=-1, bool zfailmethod=true, f32 infinity=1000.0f) = 0;\r
+\r
//! Sets if the scene node should not copy the materials of the mesh but use them in a read only style.\r
/** In this way it is possible to change the materials of a mesh\r
causing all mesh scene nodes referencing this mesh to change, too.\r