/usr/include/osgTerrain/GeometryTechnique is in libopenscenegraph-dev 3.2.1-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
 *
 * This library is open source and may be redistributed and/or modified under
 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
 * (at your option) any later version.  The full license is in LICENSE file
 * included with this distribution, and on the openscenegraph.org website.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * OpenSceneGraph Public License for more details.
*/
#ifndef OSGTERRAIN_GEOMETRYTECHNIQUE
#define OSGTERRAIN_GEOMETRYTECHNIQUE 1
#include <osg/MatrixTransform>
#include <osg/Geode>
#include <osg/Geometry>
#include <osgTerrain/TerrainTechnique>
#include <osgTerrain/Locator>
namespace osgTerrain {
class OSGTERRAIN_EXPORT GeometryTechnique : public TerrainTechnique
{
    public:
        GeometryTechnique();
        /** Copy constructor using CopyOp to manage deep vs shallow copy.*/
        GeometryTechnique(const GeometryTechnique&,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
        META_Object(osgTerrain, GeometryTechnique);
        virtual void init(int dirtyMask, bool assumeMultiThreaded);
        virtual Locator* computeMasterLocator();
        virtual void update(osgUtil::UpdateVisitor* nv);
        virtual void cull(osgUtil::CullVisitor* nv);
        /** Traverse the terain subgraph.*/
        virtual void traverse(osg::NodeVisitor& nv);
        virtual void cleanSceneGraph();
        void setFilterBias(float filterBias);
        float getFilterBias() const { return _filterBias; }
        void setFilterWidth(float filterWidth);
        float getFilterWidth() const { return _filterWidth; }
        void setFilterMatrix(const osg::Matrix3& matrix);
        osg::Matrix3& getFilterMatrix() { return _filterMatrix; }
        const osg::Matrix3& getFilterMatrix() const { return _filterMatrix; }
        enum FilterType
        {
            GAUSSIAN,
            SMOOTH,
            SHARPEN
        };
        void setFilterMatrixAs(FilterType filterType);
        /** If State is non-zero, this function releases any associated OpenGL objects for
        * the specified graphics context. Otherwise, releases OpenGL objects
        * for all graphics contexts. */
        virtual void releaseGLObjects(osg::State* = 0) const;
    protected:
        virtual ~GeometryTechnique();
        class BufferData : public osg::Referenced
        {
        public:
            BufferData() {}
            osg::ref_ptr<osg::MatrixTransform>  _transform;
            osg::ref_ptr<osg::Geode>            _geode;
            osg::ref_ptr<osg::Geometry>         _geometry;
        protected:
            ~BufferData() {}
        };
        virtual osg::Vec3d computeCenterModel(BufferData& buffer, Locator* masterLocator);
        virtual void generateGeometry(BufferData& buffer, Locator* masterLocator, const osg::Vec3d& centerModel);
        virtual void applyColorLayers(BufferData& buffer);
        virtual void applyTransparency(BufferData& buffer);
        OpenThreads::Mutex                  _writeBufferMutex;
        osg::ref_ptr<BufferData>            _currentBufferData;
        osg::ref_ptr<BufferData>            _newBufferData;
        float                               _filterBias;
        osg::ref_ptr<osg::Uniform>          _filterBiasUniform;
        float                               _filterWidth;
        osg::ref_ptr<osg::Uniform>          _filterWidthUniform;
        osg::Matrix3                        _filterMatrix;
        osg::ref_ptr<osg::Uniform>          _filterMatrixUniform;
};
}
#endif
 |