From 0161dacc1524d555f1ede021e0cddf534134ef79 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 6 Jan 2003 16:42:02 +0000 Subject: [PATCH] Removed the osg::LightPoint::OPAQUE option, and implemented the ADDTIVE blending option. --- include/osgSim/LightPoint | 1 - src/osgSim/LightPointNode.cpp | 73 +++++++++++++++++++++++++---------- 2 files changed, 53 insertions(+), 21 deletions(-) diff --git a/include/osgSim/LightPoint b/include/osgSim/LightPoint index c3acc7c63..7e5f38f98 100644 --- a/include/osgSim/LightPoint +++ b/include/osgSim/LightPoint @@ -26,7 +26,6 @@ class OSGSIM_EXPORT LightPoint enum BlendingMode { - OPAQUE, ADDITIVE, BLENDED }; diff --git a/src/osgSim/LightPointNode.cpp b/src/osgSim/LightPointNode.cpp index 8fcb29885..2f494276a 100644 --- a/src/osgSim/LightPointNode.cpp +++ b/src/osgSim/LightPointNode.cpp @@ -261,34 +261,67 @@ void LightPointNode::traverse(osg::NodeVisitor& nv) // adjust pixel size to account for intensity. if (intensity!=1.0) pixelSize *= sqrt(intensity); + osg::Vec3 xpos(position*matrix); - if (pixelSize<1.0f) + + if (lp._blendingMode==LightPoint::BLENDED) { - // need to use alpha blending... - //color[3] = pixelSize; - color[3] *= osg::square(pixelSize); + if (pixelSize<1.0f) + { + // need to use alpha blending... + //color[3] = pixelSize; + color[3] *= osg::square(pixelSize); - if (color[3]<=minimumIntensity) continue; + if (color[3]<=minimumIntensity) continue; - drawable->addBlendedLightPoint(0, xpos,color); + drawable->addBlendedLightPoint(0, xpos,color); + } + else if (pixelSizeaddBlendedLightPoint(lowerBoundPixelSize-1, xpos,color); + + color[3] = alpha*remainder; + drawable->addBlendedLightPoint(lowerBoundPixelSize, xpos,color); + } + else // use a billboard geometry. + { + drawable->addBlendedLightPoint((unsigned int)(lp._maxPixelSize-1.0), xpos,color); + } } - else if (pixelSizeaddBlendedLightPoint(lowerBoundPixelSize-1, xpos,color); + if (color[3]<=minimumIntensity) continue; -// //color[3] = osg::square(remainder); - color[3] = alpha*remainder; - drawable->addBlendedLightPoint(lowerBoundPixelSize, xpos,color); - } - else // use a billboard geometry. - { - drawable->addOpaqueLightPoint((unsigned int)(lp._maxPixelSize-1.0), xpos,color); + drawable->addAdditiveLightPoint(0, xpos,color); + } + else if (pixelSizeaddAdditiveLightPoint(lowerBoundPixelSize-1, xpos,color); + + color[3] = alpha*remainder; + drawable->addAdditiveLightPoint(lowerBoundPixelSize, xpos,color); + } + else // use a billboard geometry. + { + drawable->addAdditiveLightPoint((unsigned int)(lp._maxPixelSize-1.0), xpos,color); + } } }