aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a02915.html
diff options
context:
space:
mode:
authorneodarz <neodarz@neodarz.net>2018-08-11 20:21:34 +0200
committerneodarz <neodarz@neodarz.net>2018-08-11 20:21:34 +0200
commit0ea5fc66924303d1bf73ba283a383e2aadee02f2 (patch)
tree2568e71a7ccc44ec23b8bb3f0ff97fb6bf2ed709 /docs/doxygen/nel/a02915.html
downloadnevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.tar.xz
nevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.zip
Initial commit
Diffstat (limited to 'docs/doxygen/nel/a02915.html')
-rw-r--r--docs/doxygen/nel/a02915.html1366
1 files changed, 1366 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02915.html b/docs/doxygen/nel/a02915.html
new file mode 100644
index 00000000..420a467f
--- /dev/null
+++ b/docs/doxygen/nel/a02915.html
@@ -0,0 +1,1366 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>NeL: NL3D::CMeshVPPerPixelLight class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.6 -->
+<div class="qindex"> <form class="search" action="search.php" method="get">
+<a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a> | <span class="search"><u>S</u>earch&nbsp;for&nbsp;<input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
+<h1>NL3D::CMeshVPPerPixelLight Class Reference</h1><code>#include &lt;<a class="el" href="a06023.html">meshvp_per_pixel_light.h</a>&gt;</code>
+<p>
+<p>Inheritance diagram for NL3D::CMeshVPPerPixelLight:
+<p><center><img src="a02915.png" usemap="#NL3D::CMeshVPPerPixelLight_map" border="0" alt=""></center>
+<map name="NL3D::CMeshVPPerPixelLight_map">
+<area href="a02916.html" alt="NL3D::IMeshVertexProgram" shape="rect" coords="95,112,276,136">
+<area href="a02867.html" alt="NLMISC::IStreamable" shape="rect" coords="0,56,181,80">
+<area href="a02209.html" alt="NLMISC::CRefCount" shape="rect" coords="191,56,372,80">
+<area href="a02540.html" alt="NLMISC::IClassable" shape="rect" coords="0,0,181,24">
+</map>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This vertex program is used to perform perpixel lighting with meshs. Its ouputs are :<p>
+Coord Tex 0 : duplicate the tex Coord 0 set from the v.b. Coord Tex 1 : The light vector in tangent space. Coord Tex 2 : The half-angle vector in tangent space.<p>
+This is designed to work with material that got a 'PerPixelLighting' shader. Note that no bump is used with this shader.<p>
+It requires that the input mesh has its tangent space first column vector encoded in the 2nd texture coordinate. Other stages are not supported for now.<p>
+Note that this can be mixed with gouraud rendered light (the gouraud diffuse and specular component are still computed)<p>
+<dl compact><dt><b>Author:</b></dt><dd>Nicolas Vizerie <p>
+Nevrax France </dd></dl>
+<dl compact><dt><b>Date:</b></dt><dd>2002 </dd></dl>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06023.html#l00058">58</a> of file <a class="el" href="a06023.html">meshvp_per_pixel_light.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLighta0">CMeshVPPerPixelLight</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02540.html#NL3D_1_1ITrackKeyFramer_3_01CKeyVector_01_4a6">getClassName</a> ()=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02916.html#NL3D_1_1IMeshVertexPrograma3">getMaxVertexMove</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a04558.html#a14">sint</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypea8">getRefCount</a> () const </td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">IMeshVertexProgram implementation</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightz545_0">begin</a> (<a class="el" href="a02434.html">IDriver</a> *drv, <a class="el" href="a03348.html">CScene</a> *scene, <a class="el" href="a02873.html">CMeshBaseInstance</a> *mbi, const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;invertedModelMat, const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;viewerPos)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightz545_1">end</a> (<a class="el" href="a02434.html">IDriver</a> *drv)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightz545_2">initInstance</a> (<a class="el" href="a02873.html">CMeshBaseInstance</a> *mbi)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightz545_3">needTangentSpace</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightz545_4">NLMISC_DECLARE_CLASS</a> (<a class="el" href="a02915.html">CMeshVPPerPixelLight</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightz545_5">serial</a> (<a class="el" href="a02270.html">NLMISC::IStream</a> &amp;f) throw (NLMISC::EStream)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightz545_6">setupForMaterial</a> (const <a class="el" href="a02839.html">CMaterial</a> &amp;mat, <a class="el" href="a02434.html">IDriver</a> *drv, <a class="el" href="a03348.html">CScene</a> *scene, <a class="el" href="a03694.html">IVertexBufferHard</a> *vb)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightz545_7">setupForMaterial</a> (const <a class="el" href="a02839.html">CMaterial</a> &amp;mat, <a class="el" href="a02434.html">IDriver</a> *drv, <a class="el" href="a03348.html">CScene</a> *scene, <a class="el" href="a03692.html">CVertexBuffer</a> *vb)</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">MBR support.</div></td></tr>
+<tr><td colspan="2"><div class="groupText">Actually, it's targeted to work optimally with WindTree. Requirement are:<ul>
+<li>No special Validity test per instance (hence isMBRVpOk() takes only the driver).</li><li>begin(), end(), setupForMaterial() is replaced with the following interface.</li><li>there is no setupMBRMaterial(), because the caller has just to call per material (and must do it): renderTrav-&gt;changeVPLightSetupMaterial(mat, false);</li><li>beginMBRMesh MUST activate the VertexProgram, because called before VB activation</li><li>beginMBRInstance still can change of VertexProgram, but cannot disable VP!! </li></ul>
+<br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02916.html#NL3D_1_1IMeshVertexProgramz543_0">beginMBRInstance</a> (<a class="el" href="a02434.html">IDriver</a> *drv, <a class="el" href="a03348.html">CScene</a> *scene, <a class="el" href="a02873.html">CMeshBaseInstance</a> *mbi, const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;invertedModelMat)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02916.html#NL3D_1_1IMeshVertexProgramz543_1">beginMBRMesh</a> (<a class="el" href="a02434.html">IDriver</a> *drv, <a class="el" href="a03348.html">CScene</a> *scene)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02916.html#NL3D_1_1IMeshVertexProgramz543_2">endMBRMesh</a> (<a class="el" href="a02434.html">IDriver</a> *drv)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02916.html#NL3D_1_1IMeshVertexProgramz543_3">isMBRVpOk</a> (<a class="el" href="a02434.html">IDriver</a> *drv) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02916.html#NL3D_1_1IMeshVertexProgramz543_4">supportMeshBlockRendering</a> () const </td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">MBR support.</div></td></tr>
+<tr><td colspan="2"><div class="groupText">Actually, it's targeted to work optimally with WindTree. Requirement are:<ul>
+<li>No special Validity test per instance (hence isMBRVpOk() takes only the driver).</li><li>begin(), end(), setupForMaterial() is replaced with the following interface.</li><li>there is no setupMBRMaterial(), because the caller has just to call per material (and must do it): renderTrav-&gt;changeVPLightSetupMaterial(mat, false);</li><li>beginMBRMesh MUST activate the VertexProgram, because called before VB activation</li><li>beginMBRInstance still can change of VertexProgram, but cannot disable VP!! </li></ul>
+<br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02916.html#NL3D_1_1IMeshVertexProgramz543_0">beginMBRInstance</a> (<a class="el" href="a02434.html">IDriver</a> *drv, <a class="el" href="a03348.html">CScene</a> *scene, <a class="el" href="a02873.html">CMeshBaseInstance</a> *mbi, const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;invertedModelMat)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02916.html#NL3D_1_1IMeshVertexProgramz543_1">beginMBRMesh</a> (<a class="el" href="a02434.html">IDriver</a> *drv, <a class="el" href="a03348.html">CScene</a> *scene)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02916.html#NL3D_1_1IMeshVertexProgramz543_2">endMBRMesh</a> (<a class="el" href="a02434.html">IDriver</a> *drv)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02916.html#NL3D_1_1IMeshVertexProgramz543_3">isMBRVpOk</a> (<a class="el" href="a02434.html">IDriver</a> *drv) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02916.html#NL3D_1_1IMeshVertexProgramz543_4">supportMeshBlockRendering</a> () const </td></tr>
+
+<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypeo0">crefs</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>CPtrInfo *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypeo1">pinfo</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLighto2">SpecularLighting</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">true if want Specular Lighting. <a href="#NL3D_1_1CMeshVPPerPixelLighto2"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>CPtrInfo&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypes0">NullPtrInfo</a></td></tr>
+
+<tr><td colspan=2><br><h2>Private Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom>{ <a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLighty0NL3D_1_1CMeshVPPerPixelLighty1">NumVp</a> = 8
+ }</td></tr>
+
+<tr><td colspan=2><br><h2>Private Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightd0">enable</a> (bool enabled, <a class="el" href="a02434.html">IDriver</a> *drv)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightd1">setupForMaterial</a> (const <a class="el" href="a02839.html">CMaterial</a> &amp;mat, <a class="el" href="a02434.html">IDriver</a> *drv, <a class="el" href="a03348.html">CScene</a> *scene)</td></tr>
+
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightr0">_Enabled</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightr1">_IsPointLight</a></td></tr>
+
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::auto_ptr&lt; <a class="el" href="a03702.html">CVertexProgram</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightv0">_VertexProgram</a> [NumVp]</td></tr>
+
+<tr><td colspan=2><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypen0">CPtrInfo</a></td></tr>
+
+</table>
+<hr><h2>Member Enumeration Documentation</h2>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLighty0" doxytag="NL3D::CMeshVPPerPixelLight::@22" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> anonymous enum<code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Enumeration values: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CMeshVPPerPixelLighty0NL3D_1_1CMeshVPPerPixelLighty1" doxytag="NumVp" ></a>NumVp</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a06023.html#l00099">99</a> of file <a class="el" href="a06023.html">meshvp_per_pixel_light.h</a>.
+<p>
+<div class="fragment"><pre>00099 { <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLighty0NL3D_1_1CMeshVPPerPixelLighty1">NumVp</a> = 8};
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLighta0" doxytag="NL3D::CMeshVPPerPixelLight::CMeshVPPerPixelLight" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> NL3D::CMeshVPPerPixelLight::CMeshVPPerPixelLight </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06023.html#l00064">64</a> of file <a class="el" href="a06023.html">meshvp_per_pixel_light.h</a>.
+<p>
+References <a class="el" href="a06023.html#l00096">_Enabled</a>, and <a class="el" href="a06023.html#l00062">SpecularLighting</a>.
+<p>
+<div class="fragment"><pre>00064 : <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLighto2">SpecularLighting</a>(<span class="keyword">true</span>), <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightr0">_Enabled</a>(<span class="keyword">false</span>) {}
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightz545_0" doxytag="NL3D::CMeshVPPerPixelLight::begin" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::CMeshVPPerPixelLight::begin </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>drv</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03348.html">CScene</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>scene</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02873.html">CMeshBaseInstance</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mbi</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>invertedModelMat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>viewerPos</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Setup for gouraud lighting
+<p>
+<dl compact><dt><b><a class="el" href="todo.html#_todo000018">Todo:</a></b></dt><dd>disabling of specular lighting with this shader</dd></dl>
+
+<p>
+Implements <a class="el" href="a02916.html#NL3D_1_1IMeshVertexPrograma0">NL3D::IMeshVertexProgram</a>.
+<p>
+Definition at line <a class="el" href="a06022.html#l00433">433</a> of file <a class="el" href="a06022.html">meshvp_per_pixel_light.cpp</a>.
+<p>
+References <a class="el" href="a06023.html#l00097">_IsPointLight</a>, <a class="el" href="a06329.html#l00557">NL3D::CRenderTrav::beginVPLightSetup()</a>, <a class="el" href="a06022.html#l00517">enable()</a>, <a class="el" href="a05892.html#l00264">NL3D::CLight::getDirection()</a>, <a class="el" href="a06330.html#l00283">NL3D::CRenderTrav::getDriverLight()</a>, <a class="el" href="a05892.html#l00224">NL3D::CLight::getMode()</a>, <a class="el" href="a05892.html#l00256">NL3D::CLight::getPosition()</a>, <a class="el" href="a06349.html#l00479">NL3D::CScene::getRenderTrav()</a>, <a class="el" href="a06329.html#l00761">NL3D::CRenderTrav::getStrongestLightIndex()</a>, <a class="el" href="a02434.html#NL3D_1_1IDriverz147_4">NL3D::IDriver::isVertexProgramEmulated()</a>, <a class="el" href="a02434.html#NL3D_1_1IDriverz147_5">NL3D::IDriver::isVertexProgramSupported()</a>, <a class="el" href="a05972.html#l01244">NLMISC::CMatrix::mulVector()</a>, <a class="el" href="a02434.html#NL3D_1_1IDriverz147_11">NL3D::IDriver::setConstant()</a>, <a class="el" href="a02434.html#NL3D_1_1IDriverz147_12">NL3D::IDriver::setConstantMatrix()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06023.html#l00062">SpecularLighting</a>, and <a class="el" href="a02434.html#NL3D_1_1IDrivera77">NL3D::IDriver::supportPerPixelLighting()</a>.
+<p>
+<div class="fragment"><pre>00437 {
+00438 <span class="comment">// test if supported by driver</span>
+00439 <span class="keywordflow">if</span> (!
+00440 (drv-&gt;isVertexProgramSupported()
+00441 &amp;&amp; !drv-&gt;isVertexProgramEmulated()
+00442 &amp;&amp; drv-&gt;supportPerPixelLighting(SpecularLighting)
+00443 )
+00444 )
+00445 {
+00446 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00447 }
+00448 <span class="comment">// </span>
+00449 CRenderTrav *renderTrav= &amp;scene-&gt;getRenderTrav();
+00451 renderTrav-&gt;beginVPLightSetup(VPLightConstantStart,
+00452 SpecularLighting,
+00453 invertedModelMat);
+00454 <span class="comment">//</span>
+00455 <a class="code" href="a04558.html#a14">sint</a> strongestLightIndex = renderTrav-&gt;getStrongestLightIndex();
+00456 <span class="keywordflow">if</span> (strongestLightIndex == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// if no strongest light, disable this vertex program </span>
+00457 <span class="comment">// setup the strongest light</span>
+00459 <span class="comment"></span> <span class="keyword">const</span> CLight &amp;strongestLight = renderTrav-&gt;getDriverLight(strongestLightIndex);
+00460
+00461 <span class="keywordflow">switch</span> (strongestLight.getMode())
+00462 {
+00463 <span class="keywordflow">case</span> CLight::DirectionalLight:
+00464 {
+00465 <span class="comment">// put light direction in object space</span>
+00466 <a class="code" href="a03128.html">NLMISC::CVector</a> lPos = invertedModelMat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1968_1">mulVector</a>(strongestLight.getDirection());
+00467 drv-&gt;setConstant(4, lPos);
+00468 <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightr1">_IsPointLight</a> = <span class="keyword">false</span>;
+00469 }
+00470 <span class="keywordflow">break</span>;
+00471 <span class="keywordflow">case</span> CLight::PointLight:
+00472 {
+00473 <span class="comment">// put light in object space</span>
+00474 <a class="code" href="a03128.html">NLMISC::CVector</a> lPos = invertedModelMat * strongestLight.getPosition();
+00475 drv-&gt;setConstant(4, lPos);
+00476 <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightr1">_IsPointLight</a> = <span class="keyword">true</span>;
+00477 }
+00478 <span class="keywordflow">break</span>;
+00479 <span class="keywordflow">default</span>:
+00480 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00481 <span class="keywordflow">break</span>;
+00482 }
+00483
+00484
+00485 <span class="keywordflow">if</span> (<a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLighto2">SpecularLighting</a>)
+00486 {
+00487 <span class="comment">// viewer pos in object space</span>
+00488 <a class="code" href="a03128.html">NLMISC::CVector</a> vPos = invertedModelMat * viewerPos;
+00489 drv-&gt;setConstant(5, vPos);
+00490 }
+00491
+00492 <span class="comment">// c[0..3] take the ModelViewProjection Matrix. After setupModelMatrix();</span>
+00493 drv-&gt;setConstantMatrix(0, IDriver::ModelViewProjection, IDriver::Identity);
+00494 <span class="comment">// </span>
+00495 <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightd0">enable</a>(<span class="keyword">true</span>, drv); <span class="comment">// must enable the vertex program before the vb is activated</span>
+00496 <span class="comment">//</span>
+00497 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00498 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1IMeshVertexProgramz543_0" doxytag="NL3D::CMeshVPPerPixelLight::beginMBRInstance" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void NL3D::IMeshVertexProgram::beginMBRInstance </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>drv</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03348.html">CScene</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>scene</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02873.html">CMeshBaseInstance</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>mbi</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>invertedModelMat</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a02917.html#NL3D_1_1CMeshVPWindTreez551_0">NL3D::CMeshVPWindTree</a>.
+<p>
+Definition at line <a class="el" href="a06021.html#l00123">123</a> of file <a class="el" href="a06021.html">mesh_vertex_program.h</a>.
+<p>
+<div class="fragment"><pre>00123 {};
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1IMeshVertexProgramz543_1" doxytag="NL3D::CMeshVPPerPixelLight::beginMBRMesh" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void NL3D::IMeshVertexProgram::beginMBRMesh </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>drv</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03348.html">CScene</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>scene</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a02917.html#NL3D_1_1CMeshVPWindTreez551_1">NL3D::CMeshVPWindTree</a>.
+<p>
+Definition at line <a class="el" href="a06021.html#l00122">122</a> of file <a class="el" href="a06021.html">mesh_vertex_program.h</a>.
+<p>
+<div class="fragment"><pre>00122 {};
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightd0" doxytag="NL3D::CMeshVPPerPixelLight::enable" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshVPPerPixelLight::enable </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>enabled</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>drv</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06022.html#l00517">517</a> of file <a class="el" href="a06022.html">meshvp_per_pixel_light.cpp</a>.
+<p>
+References <a class="el" href="a06023.html#l00096">_Enabled</a>, <a class="el" href="a06023.html#l00097">_IsPointLight</a>, <a class="el" href="a02434.html#NL3D_1_1IDriverz147_2">NL3D::IDriver::activeVertexProgram()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera46">NL3D::IDriver::isForceNormalize()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06023.html#l00062">SpecularLighting</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06022.html#l00433">begin()</a>, <a class="el" href="a06022.html#l00502">end()</a>, and <a class="el" href="a06022.html#l00544">setupForMaterial()</a>.
+<p>
+<div class="fragment"><pre>00518 {
+00519 <span class="keywordflow">if</span> (enabled != <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightr0">_Enabled</a>)
+00520 {
+00521 <a class="code" href="a04199.html#a6">nlassert</a>(drv);
+00522 <span class="keywordflow">if</span> (enabled)
+00523 {
+00524 <span class="comment">/* for (uint k = 0; k &lt; NumVp; ++k)</span>
+00525 <span class="comment"> {</span>
+00526 <span class="comment"> nlinfo("test vp %d", k);</span>
+00527 <span class="comment"> drv-&gt;activeVertexProgram(_VertexProgram[k].get());</span>
+00528 <span class="comment"> } */</span>
+00529 <a class="code" href="a04558.html#a15">uint</a> idVP = (drv-&gt;isForceNormalize() ? 4 : 0)
+00530 | (<a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLighto2">SpecularLighting</a> ? 2 : 0)
+00531 | (<a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightr1">_IsPointLight</a> ? 1 : 0);
+00532 <span class="comment">//</span>
+00533 drv-&gt;activeVertexProgram(_VertexProgram[idVP].get());
+00534 }
+00535 <span class="keywordflow">else</span>
+00536 {
+00537 drv-&gt;activeVertexProgram(NULL);
+00538 }
+00539 <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightr0">_Enabled</a> = enabled;
+00540 }
+00541 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightz545_1" doxytag="NL3D::CMeshVPPerPixelLight::end" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshVPPerPixelLight::end </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>drv</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Setup for gouraud lighting
+<p>
+<dl compact><dt><b><a class="el" href="todo.html#_todo000018">Todo:</a></b></dt><dd>disabling of specular lighting with this shader</dd></dl>
+
+<p>
+Implements <a class="el" href="a02916.html#NL3D_1_1IMeshVertexPrograma1">NL3D::IMeshVertexProgram</a>.
+<p>
+Definition at line <a class="el" href="a06022.html#l00502">502</a> of file <a class="el" href="a06022.html">meshvp_per_pixel_light.cpp</a>.
+<p>
+References <a class="el" href="a06022.html#l00517">enable()</a>.
+<p>
+<div class="fragment"><pre>00503 {
+00504 <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightd0">enable</a>(<span class="keyword">false</span>, drv);
+00505 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1IMeshVertexProgramz543_2" doxytag="NL3D::CMeshVPPerPixelLight::endMBRMesh" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void NL3D::IMeshVertexProgram::endMBRMesh </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>drv</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a02917.html#NL3D_1_1CMeshVPWindTreez551_2">NL3D::CMeshVPWindTree</a>.
+<p>
+Definition at line <a class="el" href="a06021.html#l00124">124</a> of file <a class="el" href="a06021.html">mesh_vertex_program.h</a>.
+<p>
+<div class="fragment"><pre>00124 {}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1ITrackKeyFramer_3_01CKeyVector_01_4a6" doxytag="NL3D::CMeshVPPerPixelLight::getClassName" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual std::string NLMISC::IClassable::getClassName </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [pure virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Implemented in <a class="el" href="a02995.html#NLAIAGENT_1_1CNumericIndexz1699_0">NLAIAGENT::CNumericIndex</a>, <a class="el" href="a02145.html#NLAIAGENT_1_1VectorTypez1764_0">NLAIC::IPointerGestion</a>, <a class="el" href="a02650.html#NLAIC_1_1CIdentTypez1766_0">NLAIC::CIdentType</a>, and <a class="el" href="a02241.html#CAutomataDescz1896_0">CAutomataDesc</a>.
+<p>
+Referenced by <a class="el" href="a05549.html#l00091">NLMISC::CClassRegistry::checkObject()</a>, and <a class="el" href="a06525.html#l00039">NL3D::GetTextureSize()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1IMeshVertexPrograma3" doxytag="NL3D::CMeshVPPerPixelLight::getMaxVertexMove" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual float NL3D::IMeshVertexProgram::getMaxVertexMove </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This return the (over-evaluated) max delta the VertexProgram apply to vertex (in world basis) NB: This method call is relevant only after <a class="el" href="a02916.html#NL3D_1_1IMeshVertexPrograma0">begin()</a> or <a class="el" href="a02916.html#NL3D_1_1IMeshVertexProgramz543_0">beginMBRInstance()</a>
+<p>
+Reimplemented in <a class="el" href="a02917.html#NL3D_1_1CMeshVPWindTreea2">NL3D::CMeshVPWindTree</a>.
+<p>
+Definition at line <a class="el" href="a06021.html#l00131">131</a> of file <a class="el" href="a06021.html">mesh_vertex_program.h</a>.
+<p>
+<div class="fragment"><pre>00131 {<span class="keywordflow">return</span> 0;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypea8" doxytag="NL3D::CMeshVPPerPixelLight::getRefCount" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const <a class="el" href="a04558.html#a14">sint</a>&amp; NLMISC::CRefCount::getRefCount </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06402.html#l00070">70</a> of file <a class="el" href="a06402.html">smart_ptr.h</a>.
+<p>
+References <a class="el" href="a06402.html#l00079">NLMISC::CRefCount::crefs</a>, and <a class="el" href="a05981.html#l00104">sint</a>.
+<p>
+<div class="fragment"><pre>00071 {
+00072 <span class="keywordflow">return</span> <a class="code" href="a02209.html#NLGEORGES_1_1UTypeo0">crefs</a>;
+00073 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightz545_2" doxytag="NL3D::CMeshVPPerPixelLight::initInstance" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshVPPerPixelLight::initInstance </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02873.html">CMeshBaseInstance</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>mbi</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Setup for gouraud lighting
+<p>
+<dl compact><dt><b><a class="el" href="todo.html#_todo000018">Todo:</a></b></dt><dd>disabling of specular lighting with this shader</dd></dl>
+
+<p>
+Implements <a class="el" href="a02916.html#NL3D_1_1IMeshVertexPrograma6">NL3D::IMeshVertexProgram</a>.
+<p>
+Definition at line <a class="el" href="a06022.html#l00371">371</a> of file <a class="el" href="a06022.html">meshvp_per_pixel_light.cpp</a>.
+<p>
+References <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, <a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLighty0NL3D_1_1CMeshVPPerPixelLighty1">NumVp</a>, <a class="el" href="a06718.html#l00921">CVPParser::parse()</a>, <a class="el" href="a06022.html#l00293">NL3D::PPLightingDirectionnalNoSpecVPCodeBegin</a>, <a class="el" href="a06022.html#l00310">NL3D::PPLightingDirectionnalNoSpecVPNormalizeCodeBegin</a>, <a class="el" href="a06022.html#l00213">NL3D::PPLightingDirectionnalVPCodeBegin</a>, <a class="el" href="a06022.html#l00248">NL3D::PPLightingDirectionnalVPNormalizeCodeBegin</a>, <a class="el" href="a06022.html#l00150">NL3D::PPLightingNoSpecVPCodeBegin</a>, <a class="el" href="a06022.html#l00065">NL3D::PPLightingVPCodeBegin</a>, <a class="el" href="a06022.html#l00340">NL3D::PPLightingVPCodeEnd</a>, <a class="el" href="a06022.html#l00101">NL3D::PPLightingVPNormalizeCodeBegin</a>, <a class="el" href="a06022.html#l00173">NL3D::PPLightingVPNormalizeNoSpecCodeBegin</a>, <a class="el" href="a06719.html#l00194">CVPParser::TProgram</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>00372 {
+00373 <span class="comment">// init the vertexProgram code.</span>
+00374 <span class="keyword">static</span> <span class="keywordtype">bool</span> vpCreated= <span class="keyword">false</span>;
+00375 <span class="keywordflow">if</span>(!vpCreated)
+00376 {
+00377 vpCreated= <span class="keyword">true</span>;
+00378
+00379 <span class="comment">// Gives each vp name</span>
+00380 <span class="comment">// Bit 0 : 1 when it is a directionnal light</span>
+00381 <span class="comment">// Bit 1 : 1 when specular is needed</span>
+00382 <span class="comment">// Bit 2 : 1 when normalization of the tangent space is needed</span>
+00383 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *vpName[] =
+00384 {
+00385 <span class="comment">// no spec</span>
+00386 <a class="code" href="a05363.html#a144">PPLightingDirectionnalNoSpecVPCodeBegin</a>,
+00387 <a class="code" href="a05363.html#a140">PPLightingNoSpecVPCodeBegin</a>,
+00388 <span class="comment">// specular</span>
+00389 <a class="code" href="a05363.html#a142">PPLightingDirectionnalVPCodeBegin</a>,
+00390 <a class="code" href="a05363.html#a138">PPLightingVPCodeBegin</a>,
+00392 <span class="comment">// no spec</span>
+00393 <a class="code" href="a05363.html#a145">PPLightingDirectionnalNoSpecVPNormalizeCodeBegin</a>,
+00394 <a class="code" href="a05363.html#a141">PPLightingVPNormalizeNoSpecCodeBegin</a>,
+00395 <span class="comment">// spec</span>
+00396 <a class="code" href="a05363.html#a143">PPLightingDirectionnalVPNormalizeCodeBegin</a>,
+00397 <a class="code" href="a05363.html#a139">PPLightingVPNormalizeCodeBegin</a>,
+00398 };
+00399
+00400 <a class="code" href="a04558.html#a15">uint</a> numvp = <span class="keyword">sizeof</span>(vpName) / <span class="keyword">sizeof</span>(<span class="keyword">const</span> <span class="keywordtype">char</span> *);
+00401 <a class="code" href="a04199.html#a6">nlassert</a>(NumVp == numvp); <span class="comment">// make sure that it is in sync with header..todo : compile time assert :)</span>
+00402 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> vp = 0; vp &lt; <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLighty0NL3D_1_1CMeshVPPerPixelLighty1">NumVp</a>; ++vp)
+00403 {
+00404 <span class="comment">// \todo yoyo TODO_OPTIM Manage different number of pointLights</span>
+00405 <span class="comment">// NB: never call getLightVPFragment() with normalize, because already done by PerPixel fragment before.</span>
+00406 std::string vpCode = std::string(vpName[vp])
+00407 + std::string(<span class="stringliteral">"# ***************"</span>) <span class="comment">// temp for debug</span>
+00408 + CRenderTrav::getLightVPFragment(CRenderTrav::MaxVPLight-1, VPLightConstantStart, (vp &amp; 2) != 0, <span class="keyword">false</span>)
+00409 + std::string(<span class="stringliteral">"# ***************"</span>) <span class="comment">// temp for debug</span>
+00410 + std::string(PPLightingVPCodeEnd);
+00411 <span class="preprocessor"> #ifdef NL_DEBUG</span>
+00412 <span class="preprocessor"></span>
+00417 <a class="code" href="a03717.html">CVPParser</a> vpParser;
+00418 <a class="code" href="a03717.html#CVPParserw0">CVPParser::TProgram</a> result;
+00419 std::string parseOutput;
+00420 <span class="keywordflow">if</span> (!vpParser.<a class="code" href="a03717.html#CVPParsera0">parse</a>(vpCode.c_str(), result, parseOutput))
+00421 {
+00422 <a class="code" href="a04199.html#a2">nlwarning</a>(parseOutput.c_str());
+00423 <a class="code" href="a04199.html#a6">nlassert</a>(0);
+00424 }
+00425 <span class="preprocessor"> #endif</span>
+00426 <span class="preprocessor"></span> <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightv0">_VertexProgram</a>[vp]= std::auto_ptr&lt;CVertexProgram&gt;(<span class="keyword">new</span> CVertexProgram(vpCode.c_str()));
+00427 }
+00428
+00429 }
+00430 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1IMeshVertexProgramz543_3" doxytag="NL3D::CMeshVPPerPixelLight::isMBRVpOk" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool NL3D::IMeshVertexProgram::isMBRVpOk </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>drv</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a02917.html#NL3D_1_1CMeshVPWindTreez551_3">NL3D::CMeshVPWindTree</a>.
+<p>
+Definition at line <a class="el" href="a06021.html#l00121">121</a> of file <a class="el" href="a06021.html">mesh_vertex_program.h</a>.
+<p>
+<div class="fragment"><pre>00121 {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightz545_3" doxytag="NL3D::CMeshVPPerPixelLight::needTangentSpace" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool NL3D::CMeshVPPerPixelLight::needTangentSpace </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Setup for gouraud lighting
+<p>
+<dl compact><dt><b><a class="el" href="todo.html#_todo000018">Todo:</a></b></dt><dd>disabling of specular lighting with this shader</dd></dl>
+
+<p>
+Reimplemented from <a class="el" href="a02916.html#NL3D_1_1IMeshVertexPrograma7">NL3D::IMeshVertexProgram</a>.
+<p>
+Definition at line <a class="el" href="a06023.html#l00084">84</a> of file <a class="el" href="a06023.html">meshvp_per_pixel_light.h</a>.
+<p>
+<div class="fragment"><pre>00084 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightz545_4" doxytag="NL3D::CMeshVPPerPixelLight::NLMISC_DECLARE_CLASS" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> NL3D::CMeshVPPerPixelLight::NLMISC_DECLARE_CLASS </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02915.html">CMeshVPPerPixelLight</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Setup for gouraud lighting
+<p>
+<dl compact><dt><b><a class="el" href="todo.html#_todo000018">Todo:</a></b></dt><dd>disabling of specular lighting with this shader</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightz545_5" doxytag="NL3D::CMeshVPPerPixelLight::serial" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshVPPerPixelLight::serial </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02270.html">NLMISC::IStream</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>f</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> throw (<a class="el" href="a03781.html">NLMISC::EStream</a>)<code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Setup for gouraud lighting
+<p>
+<dl compact><dt><b><a class="el" href="todo.html#_todo000018">Todo:</a></b></dt><dd>disabling of specular lighting with this shader</dd></dl>
+
+<p>
+Implements <a class="el" href="a02867.html#NL3D_1_1ITrackDefaulta6">NLMISC::IStreamable</a>.
+<p>
+Definition at line <a class="el" href="a06022.html#l00509">509</a> of file <a class="el" href="a06022.html">meshvp_per_pixel_light.cpp</a>.
+<p>
+<div class="fragment"><pre>00510 {
+00511 (<span class="keywordtype">void</span>)f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2035_8">serialVersion</a>(0);
+00512 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(SpecularLighting);
+00513 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightd1" doxytag="NL3D::CMeshVPPerPixelLight::setupForMaterial" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::CMeshVPPerPixelLight::setupForMaterial </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02839.html">CMaterial</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>drv</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03348.html">CScene</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>scene</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06022.html#l00544">544</a> of file <a class="el" href="a06022.html">meshvp_per_pixel_light.cpp</a>.
+<p>
+References <a class="el" href="a06023.html#l00096">_Enabled</a>, <a class="el" href="a06329.html#l00653">NL3D::CRenderTrav::changeVPLightSetupMaterial()</a>, <a class="el" href="a06022.html#l00517">enable()</a>, <a class="el" href="a06349.html#l00479">NL3D::CScene::getRenderTrav()</a>, <a class="el" href="a05969.html#l00254">NL3D::CMaterial::getShader()</a>, <a class="el" href="a05969.html#l00383">NL3D::CMaterial::getShininess()</a>, <a class="el" href="a06329.html#l00778">NL3D::CRenderTrav::getStrongestLightColors()</a>, and <a class="el" href="a02434.html#NL3D_1_1IDrivera64">NL3D::IDriver::setPerPixelLightingLight()</a>.
+<p>
+<div class="fragment"><pre>00548 {
+00549 <span class="keywordtype">bool</span> enabled = (mat.getShader() == CMaterial::PerPixelLighting || mat.getShader() == CMaterial::PerPixelLightingNoSpec);
+00550 <span class="keywordflow">if</span> (enabled)
+00551 {
+00552 CRenderTrav *renderTrav= &amp;scene-&gt;getRenderTrav();
+00553 renderTrav-&gt;changeVPLightSetupMaterial(mat, <span class="keyword">true</span> <span class="comment">/* exclude strongest*/</span>);
+00554
+00555 <a class="code" href="a03337.html">NLMISC::CRGBA</a> pplDiffuse, pplSpecular;
+00556 renderTrav-&gt;getStrongestLightColors(pplDiffuse, pplSpecular);
+00557 drv-&gt;setPerPixelLightingLight(pplDiffuse, pplSpecular, mat.getShininess());
+00558 }
+00559 <span class="keywordtype">bool</span> change = (enabled != <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightr0">_Enabled</a>);
+00560 <a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightd0">enable</a>(enabled, drv); <span class="comment">// enable disable the vertex program (for material that don't have the right shader)</span>
+00561 <span class="keywordflow">return</span> change;
+00562 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightz545_6" doxytag="NL3D::CMeshVPPerPixelLight::setupForMaterial" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshVPPerPixelLight::setupForMaterial </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02839.html">CMaterial</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>drv</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03348.html">CScene</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>scene</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03694.html">IVertexBufferHard</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vb</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Setup for gouraud lighting
+<p>
+<dl compact><dt><b><a class="el" href="todo.html#_todo000018">Todo:</a></b></dt><dd>disabling of specular lighting with this shader</dd></dl>
+
+<p>
+Implements <a class="el" href="a02916.html#NL3D_1_1IMeshVertexPrograma9">NL3D::IMeshVertexProgram</a>.
+<p>
+Definition at line <a class="el" href="a06022.html#l00577">577</a> of file <a class="el" href="a06022.html">meshvp_per_pixel_light.cpp</a>.
+<p>
+References <a class="el" href="a02434.html#NL3D_1_1IDrivera3">NL3D::IDriver::activeVertexBufferHard()</a>, and <a class="el" href="a06022.html#l00564">setupForMaterial()</a>.
+<p>
+<div class="fragment"><pre>00581 {
+00582
+00583 <span class="keywordflow">if</span> (<a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightz545_7">setupForMaterial</a>(mat, drv, scene)) <span class="comment">// a switch from v.p enabled / disabled force to reactivate the vertex buffer.</span>
+00584 {
+00585 drv-&gt;activeVertexBufferHard(vb);
+00586 }
+00587 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightz545_7" doxytag="NL3D::CMeshVPPerPixelLight::setupForMaterial" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CMeshVPPerPixelLight::setupForMaterial </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02839.html">CMaterial</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>drv</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03348.html">CScene</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>scene</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03692.html">CVertexBuffer</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vb</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Setup for gouraud lighting
+<p>
+<dl compact><dt><b><a class="el" href="todo.html#_todo000018">Todo:</a></b></dt><dd>disabling of specular lighting with this shader</dd></dl>
+
+<p>
+Implements <a class="el" href="a02916.html#NL3D_1_1IMeshVertexPrograma10">NL3D::IMeshVertexProgram</a>.
+<p>
+Definition at line <a class="el" href="a06022.html#l00564">564</a> of file <a class="el" href="a06022.html">meshvp_per_pixel_light.cpp</a>.
+<p>
+References <a class="el" href="a02434.html#NL3D_1_1IDrivera2">NL3D::IDriver::activeVertexBuffer()</a>.
+<p>
+Referenced by <a class="el" href="a06022.html#l00577">setupForMaterial()</a>.
+<p>
+<div class="fragment"><pre>00568 {
+00569
+00570 <span class="keywordflow">if</span> (<a class="code" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightz545_7">setupForMaterial</a>(mat, drv, scene)) <span class="comment">// a switch from v.p enabled / disabled force to reactivate the vertex buffer.</span>
+00571 {
+00572 drv-&gt;activeVertexBuffer(*vb);
+00573 }
+00574 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1IMeshVertexProgramz543_4" doxytag="NL3D::CMeshVPPerPixelLight::supportMeshBlockRendering" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool NL3D::IMeshVertexProgram::supportMeshBlockRendering </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a02917.html#NL3D_1_1CMeshVPWindTreez551_4">NL3D::CMeshVPWindTree</a>.
+<p>
+Definition at line <a class="el" href="a06021.html#l00120">120</a> of file <a class="el" href="a06021.html">mesh_vertex_program.h</a>.
+<p>
+<div class="fragment"><pre>00120 { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Friends And Related Function Documentation</h2>
+<a class="anchor" name="NLGEORGES_1_1UTypen0" doxytag="NL3D::CMeshVPPerPixelLight::CPtrInfo" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> friend struct CPtrInfo<code> [friend, inherited]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06402.html#l00067">67</a> of file <a class="el" href="a06402.html">smart_ptr.h</a>. </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightr0" doxytag="NL3D::CMeshVPPerPixelLight::_Enabled" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightr0">NL3D::CMeshVPPerPixelLight::_Enabled</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06023.html#l00096">96</a> of file <a class="el" href="a06023.html">meshvp_per_pixel_light.h</a>.
+<p>
+Referenced by <a class="el" href="a06023.html#l00064">CMeshVPPerPixelLight()</a>, <a class="el" href="a06022.html#l00517">enable()</a>, and <a class="el" href="a06022.html#l00544">setupForMaterial()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightr1" doxytag="NL3D::CMeshVPPerPixelLight::_IsPointLight" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightr1">NL3D::CMeshVPPerPixelLight::_IsPointLight</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06023.html#l00097">97</a> of file <a class="el" href="a06023.html">meshvp_per_pixel_light.h</a>.
+<p>
+Referenced by <a class="el" href="a06022.html#l00433">begin()</a>, and <a class="el" href="a06022.html#l00517">enable()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLightv0" doxytag="NL3D::CMeshVPPerPixelLight::_VertexProgram" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::auto_ptr&lt; <a class="el" href="a03702.html">CVertexProgram</a> &gt; <a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLightv0">NL3D::CMeshVPPerPixelLight::_VertexProgram</a><code> [static, private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06022.html#l00044">44</a> of file <a class="el" href="a06022.html">meshvp_per_pixel_light.cpp</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypeo0" doxytag="NL3D::CMeshVPPerPixelLight::crefs" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a14">sint</a> <a class="el" href="a02209.html#NLGEORGES_1_1UTypeo0">NLMISC::CRefCount::crefs</a><code> [mutable, inherited]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06402.html#l00079">79</a> of file <a class="el" href="a06402.html">smart_ptr.h</a>.
+<p>
+Referenced by <a class="el" href="a06402.html#l00085">NLMISC::CRefCount::CRefCount()</a>, <a class="el" href="a06402.html#l00070">NLMISC::CRefCount::getRefCount()</a>, and <a class="el" href="a06403.html#l00044">NLMISC::CRefCount::~CRefCount()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypes0" doxytag="NL3D::CMeshVPPerPixelLight::NullPtrInfo" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03320.html">CRefCount::CPtrInfo</a> <a class="el" href="a02209.html#NLGEORGES_1_1UTypes0">NLMISC::CRefCount::NullPtrInfo</a><code> [static, inherited]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Referenced by <a class="el" href="a06402.html#l00085">NLMISC::CRefCount::CRefCount()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypeo1" doxytag="NL3D::CMeshVPPerPixelLight::pinfo" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> CPtrInfo* <a class="el" href="a02209.html#NLGEORGES_1_1UTypeo1">NLMISC::CRefCount::pinfo</a><code> [mutable, inherited]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06402.html#l00080">80</a> of file <a class="el" href="a06402.html">smart_ptr.h</a>.
+<p>
+Referenced by <a class="el" href="a06402.html#l00085">NLMISC::CRefCount::CRefCount()</a>, and <a class="el" href="a06403.html#l00044">NLMISC::CRefCount::~CRefCount()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CMeshVPPerPixelLighto2" doxytag="NL3D::CMeshVPPerPixelLight::SpecularLighting" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a02915.html#NL3D_1_1CMeshVPPerPixelLighto2">NL3D::CMeshVPPerPixelLight::SpecularLighting</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+true if want Specular Lighting.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06023.html#l00062">62</a> of file <a class="el" href="a06023.html">meshvp_per_pixel_light.h</a>.
+<p>
+Referenced by <a class="el" href="a06022.html#l00433">begin()</a>, <a class="el" href="a06023.html#l00064">CMeshVPPerPixelLight()</a>, and <a class="el" href="a06022.html#l00517">enable()</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="a06023.html">meshvp_per_pixel_light.h</a><li><a class="el" href="a06022.html">meshvp_per_pixel_light.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 06:56:12 2004 for NeL by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.6 </small></address>
+</body>
+</html>