]> git.mxchange.org Git - simgear.git/blobdiff - simgear/scene/tgdb/pt_lights.cxx
Merge branch 'maint' into next
[simgear.git] / simgear / scene / tgdb / pt_lights.cxx
index 8963b3be582b7fe083e7af099588f35e1074b1da..274a4e1873054e609192e9b7f8bd157e4e97be45 100644 (file)
 
 #include <osgUtil/CullVisitor>
 
+#include <OpenThreads/Mutex>
+#include <OpenThreads/ScopedLock>
+
 #include <simgear/math/sg_random.h>
 #include <simgear/debug/logstream.hxx>
-#include <simgear/threads/SGThread.hxx>
-#include <simgear/threads/SGGuard.hxx>
+#include <simgear/scene/util/RenderConstants.hxx>
 #include <simgear/scene/util/SGEnlargeBoundingBox.hxx>
 
 #include "SGVasiDrawable.hxx"
 
+using OpenThreads::Mutex;
+using OpenThreads::ScopedLock;
+
+using namespace simgear;
+
 static void
 setPointSpriteImage(unsigned char* data, unsigned log2resolution,
                     unsigned charsPerPixel)
@@ -120,6 +127,8 @@ getPointSpriteImage(int logResolution)
   return image;
 }
 
+static Mutex lightMutex;
+
 static osg::Texture2D*
 gen_standard_light_sprite(void)
 {
@@ -128,8 +137,7 @@ gen_standard_light_sprite(void)
   if (texture.valid())
     return texture.get();
   
-  static SGMutex mutex;
-  SGGuard<SGMutex> guard(mutex);
+  ScopedLock<Mutex> lock(lightMutex);
   if (texture.valid())
     return texture.get();
   
@@ -238,7 +246,7 @@ SGLightFactory::getLight(const SGLightBin::Light& light)
   geometry->addPrimitiveSet(drawArrays);
   
   osg::StateSet* stateSet = geometry->getOrCreateStateSet();
-  stateSet->setRenderBinDetails(9, "DepthSortedBin");
+  stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin");
   stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
   
   osg::BlendFunc* blendFunc = new osg::BlendFunc;
@@ -291,7 +299,7 @@ SGLightFactory::getLight(const SGDirectionalLightBin::Light& light)
   geometry->addPrimitiveSet(drawArrays);
   
   osg::StateSet* stateSet = geometry->getOrCreateStateSet();
-  stateSet->setRenderBinDetails(9, "DepthSortedBin");
+  stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin");
 
   osg::Material* material = new osg::Material;
   material->setColorMode(osg::Material::OFF);
@@ -352,7 +360,7 @@ SGLightFactory::getLights(const SGLightBin& lights, unsigned inc, float alphaOff
   geometry->addPrimitiveSet(drawArrays);
   
   osg::StateSet* stateSet = geometry->getOrCreateStateSet();
-  stateSet->setRenderBinDetails(9, "DepthSortedBin");
+  stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin");
 
   stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
   
@@ -407,7 +415,7 @@ SGLightFactory::getLights(const SGDirectionalLightBin& lights)
   geometry->addPrimitiveSet(drawArrays);
   
   osg::StateSet* stateSet = geometry->getOrCreateStateSet();
-  stateSet->setRenderBinDetails(9, "DepthSortedBin");
+  stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin");
 
   osg::Material* material = new osg::Material;
   material->setColorMode(osg::Material::OFF);
@@ -489,7 +497,7 @@ SGLightFactory::getVasi(const SGVec3f& up, const SGDirectionalLightBin& lights,
     return 0;
 
   osg::StateSet* stateSet = drawable->getOrCreateStateSet();
-  stateSet->setRenderBinDetails(9, "DepthSortedBin");
+  stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin");
   stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
 
   osg::BlendFunc* blendFunc = new osg::BlendFunc;
@@ -525,7 +533,7 @@ SGLightFactory::getSequenced(const SGDirectionalLightBin& lights)
   sequence->setSync(true);
 
   osg::StateSet* stateSet = sequence->getOrCreateStateSet();
-  stateSet->setRenderBinDetails(9, "DepthSortedBin");
+  stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin");
   stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
 
   osg::BlendFunc* blendFunc = new osg::BlendFunc;
@@ -577,7 +585,7 @@ SGLightFactory::getOdal(const SGLightBin& lights)
   sequence->setSync(true);
 
   osg::StateSet* stateSet = sequence->getOrCreateStateSet();
-  stateSet->setRenderBinDetails(9, "DepthSortedBin");
+  stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin");
   stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
 
   osg::BlendFunc* blendFunc = new osg::BlendFunc;