Added code of support for contouring shaders
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user