From 0ea5fc66924303d1bf73ba283a383e2aadee02f2 Mon Sep 17 00:00:00 2001 From: neodarz Date: Sat, 11 Aug 2018 20:21:34 +0200 Subject: Initial commit --- ...light__influence__interpolator_8cpp-source.html | 182 +++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 docs/doxygen/nel/light__influence__interpolator_8cpp-source.html (limited to 'docs/doxygen/nel/light__influence__interpolator_8cpp-source.html') diff --git a/docs/doxygen/nel/light__influence__interpolator_8cpp-source.html b/docs/doxygen/nel/light__influence__interpolator_8cpp-source.html new file mode 100644 index 00000000..42427e10 --- /dev/null +++ b/docs/doxygen/nel/light__influence__interpolator_8cpp-source.html @@ -0,0 +1,182 @@ + + + + nevrax.org : docs + + + + + + + + + + + + + + +
# Home   # nevrax.com   
+ + + + +
Nevrax
+ + + + + + + + + + +
+ + +
+ Nevrax.org
+ + + + + + + +
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
+
+ + +
+ + +
+Docs + +
+  + + + + + +
Documentation 
+ +
+Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  
+

light_influence_interpolator.cpp

Go to the documentation of this file.
00001 
+00007 /* Copyright, 2001 Nevrax Ltd.
+00008  *
+00009  * This file is part of NEVRAX NEL.
+00010  * NEVRAX NEL is free software; you can redistribute it and/or modify
+00011  * it under the terms of the GNU General Public License as published by
+00012  * the Free Software Foundation; either version 2, or (at your option)
+00013  * any later version.
+00014 
+00015  * NEVRAX NEL is distributed in the hope that it will be useful, but
+00016  * WITHOUT ANY WARRANTY; without even the implied warranty of
+00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+00018  * General Public License for more details.
+00019 
+00020  * You should have received a copy of the GNU General Public License
+00021  * along with NEVRAX NEL; see the file COPYING. If not, write to the
+00022  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+00023  * MA 02111-1307, USA.
+00024  */
+00025 
+00026 #include "std3d.h"
+00027 
+00028 #include "3d/light_influence_interpolator.h"
+00029 #include "nel/misc/debug.h"
+00030 #include "3d/point_light_named.h"
+00031 
+00032 
+00033 namespace NL3D 
+00034 {
+00035 
+00036 
+00037 // ***************************************************************************
+00038 void            CLightInfluenceInterpolator::interpolate(std::vector<CPointLightInfluence> &pointLightList, float subX, float subY)
+00039 {
+00040         uint    crn;
+00041         // UnRolled loops.
+00042         nlassert(NumLightPerCorner==2);
+00043 
+00044         // Reset index for each light.
+00045         for(crn= 0; crn<4; crn++)
+00046         {
+00047                 CCorner         &corner= Corners[crn];
+00048                 // UnRolled.
+00049                 if(corner.Lights[0])
+00050                         corner.Lights[0]->_IdInInfluenceList= -1;
+00051                 if(corner.Lights[1])
+00052                         corner.Lights[1]->_IdInInfluenceList= -1;
+00053         }
+00054 
+00055         // Compute biLinear influence on each corner
+00056         Corners[0].Influence= (1-subX) * (1-subY);
+00057         Corners[1].Influence= subX * (1-subY);
+00058         Corners[2].Influence= (1-subX) * subY;
+00059         Corners[3].Influence= subX * subY;
+00060 
+00061         // For each light of each corner
+00062         for(crn= 0; crn<4; crn++)
+00063         {
+00064                 CCorner         &corner= Corners[crn];
+00065                 // UnRolled.
+00066                 // light 0.
+00067                 if(corner.Lights[0])
+00068                 {
+00069                         if(corner.Lights[0]->_IdInInfluenceList==-1)
+00070                         {
+00071                                 // append a PointLightInfluence
+00072                                 pointLightList.push_back(CPointLightInfluence());
+00073                                 sint    id= pointLightList.size()-1;
+00074                                 // setup the PointLightInfluence
+00075                                 corner.Lights[0]->_IdInInfluenceList= id;
+00076                                 pointLightList[id].PointLight= corner.Lights[0];
+00077                                 pointLightList[id].Influence= corner.Influence;
+00078                         }
+00079                         else
+00080                         {
+00081                                 // get the PointLightInfluence
+00082                                 sint    id= corner.Lights[0]->_IdInInfluenceList;
+00083                                 // increment the influence of the PointLightInfluence
+00084                                 pointLightList[id].Influence+= corner.Influence;
+00085                         }
+00086                 }
+00087                 // light 1.
+00088                 if(corner.Lights[1])
+00089                 {
+00090                         if(corner.Lights[1]->_IdInInfluenceList==-1)
+00091                         {
+00092                                 // append a PointLightInfluence
+00093                                 pointLightList.push_back(CPointLightInfluence());
+00094                                 sint    id= pointLightList.size()-1;
+00095                                 // setup the PointLightInfluence
+00096                                 corner.Lights[1]->_IdInInfluenceList= id;
+00097                                 pointLightList[id].PointLight= corner.Lights[1];
+00098                                 pointLightList[id].Influence= corner.Influence;
+00099                         }
+00100                         else
+00101                         {
+00102                                 // get the PointLightInfluence
+00103                                 sint    id= corner.Lights[1]->_IdInInfluenceList;
+00104                                 // increment the influence of the PointLightInfluence
+00105                                 pointLightList[id].Influence+= corner.Influence;
+00106                         }
+00107                 }
+00108         }
+00109 }
+00110 
+00111 
+00112 
+00113 } // NL3D
+
+ + +
                                                                                                                                                                    +
+ + -- cgit v1.2.1