Added code of support for contouring shaders

This commit is contained in:
Robert Osfield
2007-06-20 12:00:29 +00:00
parent fadc115066
commit 9f72c9392e
2 changed files with 15 additions and 0 deletions

View File

@@ -109,6 +109,9 @@ class OSGTERRAIN_EXPORT GeometryTechnique : public TerrainTechnique
void setFilterBias(float filterBias);
float getFilterBias() const { return _filterBias; }
void setFilterWidth(float filterWidth);
float getFilterWidth() const { return _filterWidth; }
@@ -136,6 +139,8 @@ class OSGTERRAIN_EXPORT GeometryTechnique : public TerrainTechnique
osg::ref_ptr<TerrainGeometry> _terrainGeometry;
osg::ref_ptr<osg::Geometry> _geometry;
float _filterBias;
osg::ref_ptr<osg::Uniform> _filterBiasUniform;
float _filterWidth;
osg::ref_ptr<osg::Uniform> _filterWidthUniform;
osg::Matrix3 _filterMatrix;

View File

@@ -29,6 +29,7 @@ using namespace osgTerrain;
GeometryTechnique::GeometryTechnique()
{
setFilterBias(0);
setFilterWidth(0.1);
setFilterMatrixAs(GAUSSIAN);
}
@@ -42,6 +43,13 @@ GeometryTechnique::~GeometryTechnique()
{
}
void GeometryTechnique::setFilterBias(float filterBias)
{
_filterBias = filterBias;
if (!_filterBiasUniform) _filterBiasUniform = new osg::Uniform("filterBias",_filterBias);
else _filterBiasUniform->set(filterBias);
}
void GeometryTechnique::setFilterWidth(float filterWidth)
{
_filterWidth = filterWidth;
@@ -418,6 +426,7 @@ void GeometryTechnique::init()
texture2D->setResizeNonPowerOfTwoHint(false);
stateset->setTextureAttributeAndModes(color_index, texture2D, osg::StateAttribute::ON);
texture2D->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR_MIPMAP_LINEAR);
texture2D->setFilter(osg::Texture::MAG_FILTER, filter==TerrainNode::LINEAR ? osg::Texture::LINEAR : osg::Texture::NEAREST);
if (tf)
@@ -485,6 +494,7 @@ void GeometryTechnique::init()
stateset->addUniform(_filterWidthUniform.get());
stateset->addUniform(_filterMatrixUniform.get());
stateset->addUniform(_filterBiasUniform.get());
osg::Uniform* lightingEnabled = new osg::Uniform("lightingEnabled",true);
stateset->addUniform(lightingEnabled);