osgFX::BumpMapping Class Reference

`#include <BumpMapping>`

Inheritance diagram for osgFX::BumpMapping:

## Public Member Functions

| BumpMapping ()
| BumpMapping (const BumpMapping &copy, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)

META_Effect (osgFX, BumpMapping, "Bump Mapping", "This effect makes surfaces appear bumpy. Children nodes must use two textures, " "one for diffuse color and one for the normal map (which can be created " "from a height map with tools like nVIDIA's normal map generator). Furthermore, " "tangent-space basis vectors must be created and assigned to each Geometry; this " "can be done quickly by calling BumpMapping::prepareChildren(). Note that both " "diffuse and normal map textures must have corresponding UV maps defined in " "Geometry objects.\n" "This effect defines a preferred technique which uses ARB vertex & fragment " "programs, and a fallback technique which doesn't use fragment programs. The " "latter is more limited though since it can't handle ambient and specular " "components.", "Marco Jez")

int | getLightNumber () const
void | setLightNumber (int n)
int | getDiffuseTextureUnit () const
void | setDiffuseTextureUnit (int n)
int | getNormalMapTextureUnit () const
void | setNormalMapTextureUnit (int n)
osg::Texture2D * | getOverrideDiffuseTexture ()
const osg::Texture2D * | getOverrideDiffuseTexture () const
void | setOverrideDiffuseTexture (osg::Texture2D *texture)
osg::Texture2D * | getOverrideNormalMapTexture ()
const osg::Texture2D * | getOverrideNormalMapTexture () const
void | setOverrideNormalMapTexture (osg::Texture2D *texture)
void | prepareGeometry (osg::Geometry *geo)
void | prepareNode (osg::Node *node)
void | prepareChildren ()
void | setUpDemo ()
Public Member Functions inherited from osgFX::Effect
| Effect ()
| Effect (const Effect &copy, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
virtual bool | isSameKindAs (const osg::Object *obj) const
virtual const char * | libraryName () const
virtual const char * | className () const
virtual const char * | effectName () const =0
virtual const char * | effectDescription () const =0
virtual const char * | effectAuthor () const =0
bool | getEnabled () const
void | setEnabled (bool v)
int | getNumTechniques () const
Technique * | getTechnique (int i)
const Technique * | getTechnique (int i) const
int | getSelectedTechnique () const
void | selectTechnique (int i=AUTO_DETECT)
virtual void | traverse (osg::NodeVisitor &nv)
void | inherited_traverse (osg::NodeVisitor &nv)
virtual void | resizeGLObjectBuffers (unsigned int maxSize)
virtual void | releaseGLObjects (osg::State *state=0) const
Public Member Functions inherited from osg::Group
| Group ()
| Group (const Group &, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
| META_Node (osg, Group)
virtual Group * | asGroup ()
virtual const Group * | asGroup () const
virtual bool | addChild (Node *child)
template<class T>
bool | addChild (const ref_ptr< T > &child)
virtual bool | insertChild (unsigned int index, Node *child)
template<class T>
bool | insertChild (unsigned int index, const ref_ptr< T > &child)
virtual bool | removeChild (Node *child)
template<class T>
bool | removeChild (const ref_ptr< T > &child)
bool | removeChild (unsigned int pos, unsigned int numChildrenToRemove=1)
virtual bool | removeChildren (unsigned int pos, unsigned int numChildrenToRemove)
virtual bool | replaceChild (Node *origChild, Node *newChild)
template<class T, class R>
bool | replaceChild (const ref_ptr< T > &origChild, const ref_ptr< R > &newChild)
virtual unsigned int | getNumChildren () const
virtual bool | setChild (unsigned int i, Node *node)
Node * | getChild (unsigned int i)
const Node * | getChild (unsigned int i) const
bool | containsNode (const Node *node) const
template<class T>
bool | containsNode (const ref_ptr< T > &node) const
unsigned int | getChildIndex (const Node *node) const
virtual void | setThreadSafeRefUnref (bool threadSafe)
virtual BoundingSphere | computeBound () const
Public Member Functions inherited from osg::Node
| Node ()
| Node (const Node &, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
virtual Object * | cloneType () const
virtual Object * | clone (const CopyOp &copyop) const
virtual Node * | asNode ()
virtual const Node * | asNode () const
virtual Drawable * | asDrawable ()
virtual const Drawable * | asDrawable () const
virtual Geometry * | asGeometry ()
virtual const Geometry * | asGeometry () const
virtual Transform * | asTransform ()
virtual const Transform * | asTransform () const
virtual Switch * | asSwitch ()
virtual const Switch * | asSwitch () const
virtual Geode * | asGeode ()
virtual const Geode * | asGeode () const
virtual osgTerrain::Terrain * | asTerrain ()
virtual const osgTerrain::Terrain * | asTerrain () const
virtual void | accept (NodeVisitor &nv)
virtual void | ascend (NodeVisitor &nv)
const ParentList & | getParents () const
ParentList | getParents ()
Group * | getParent (unsigned int i)
const Group * | getParent (unsigned int i) const
unsigned int | getNumParents () const
NodePathList | getParentalNodePaths (osg::Node *haltTraversalAtNode=0) const
MatrixList | getWorldMatrices (const osg::Node *haltTraversalAtNode=0) const
void | setUpdateCallback (Callback *nc)
template<class T>
void | setUpdateCallback (const ref_ptr< T > &nc)
Callback * | getUpdateCallback ()
const Callback * | getUpdateCallback () const
void | addUpdateCallback (Callback *nc)
template<class T>
void | addUpdateCallback (const ref_ptr< T > &nc)
void | removeUpdateCallback (Callback *nc)
template<class T>
void | removeUpdateCallback (const ref_ptr< T > &nc)
unsigned int | getNumChildrenRequiringUpdateTraversal () const
void | setEventCallback (Callback *nc)
template<class T>
void | setEventCallback (const ref_ptr< T > &nc)
Callback * | getEventCallback ()
const Callback * | getEventCallback () const
void | addEventCallback (Callback *nc)
template<class T>
void | addEventCallback (const ref_ptr< T > &nc)
void | removeEventCallback (Callback *nc)
template<class T>
void | removeEventCallback (const ref_ptr< T > &nc)
unsigned int | getNumChildrenRequiringEventTraversal () const
void | setCullCallback (Callback *nc)
template<class T>
void | setCullCallback (const ref_ptr< T > &nc)
Callback * | getCullCallback ()
const Callback * | getCullCallback () const
void | addCullCallback (Callback *nc)
template<class T>
void | addCullCallback (const ref_ptr< T > &nc)
void | removeCullCallback (Callback *nc)
template<class T>
void | removeCullCallback (const ref_ptr< T > &nc)
void | setCullingActive (bool active)
bool | getCullingActive () const
unsigned int | getNumChildrenWithCullingDisabled () const
bool | isCullingActive () const
unsigned int | getNumChildrenWithOccluderNodes () const
bool | containsOccluderNodes () const
void | setNodeMask (NodeMask nm)
NodeMask | getNodeMask () const
void | setStateSet (osg::StateSet *stateset)
template<class T>
void | setStateSet (const osg::ref_ptr< T > &stateset)
osg::StateSet * | getOrCreateStateSet ()
osg::StateSet * | getStateSet ()
const osg::StateSet * | getStateSet () const
void | setDescriptions (const DescriptionList &descriptions)
DescriptionList & | getDescriptions ()
const DescriptionList & | getDescriptions () const
const std::string & | getDescription (unsigned int i) const
std::string & | getDescription (unsigned int i)
unsigned int | getNumDescriptions () const
void | addDescription (const std::string &desc)
void | setInitialBound (const osg::BoundingSphere &bsphere)
const BoundingSphere & | getInitialBound () const
void | dirtyBound ()
const BoundingSphere & | getBound () const
void | setComputeBoundingSphereCallback (ComputeBoundingSphereCallback *callback)
template<class T>
void | setComputeBoundingSphereCallback (const ref_ptr< T > &callback)
ComputeBoundingSphereCallback * | getComputeBoundingSphereCallback ()
const ComputeBoundingSphereCallback * | getComputeBoundingSphereCallback () const
Public Member Functions inherited from osg::Object
| Object ()
| Object (bool threadSafeRefUnref)
| Object (const Object &, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
std::string | getCompoundClassName () const
virtual NodeVisitor * | asNodeVisitor ()
virtual const NodeVisitor * | asNodeVisitor () const
virtual StateSet * | asStateSet ()
virtual const StateSet * | asStateSet () const
virtual StateAttribute * | asStateAttribute ()
virtual const StateAttribute * | asStateAttribute () const
virtual Uniform * | asUniform ()
virtual const Uniform * | asUniform () const
virtual Camera * | asCamera ()
virtual const Camera * | asCamera () const
virtual Callback * | asCallback ()
virtual const Callback * | asCallback () const
virtual CallbackObject * | asCallbackObject ()
virtual const CallbackObject * | asCallbackObject () const
virtual UserDataContainer * | asUserDataContainer ()
virtual const UserDataContainer * | asUserDataContainer () const
virtual ValueObject * | asValueObject ()
virtual const ValueObject * | asValueObject () const
virtual Image * | asImage ()
virtual const Image * | asImage () const
virtual void | setName (const std::string &name)
void | setName (const char *name)
const std::string & | getName () const
void | setDataVariance (DataVariance dv)
DataVariance | getDataVariance () const
virtual void | computeDataVariance ()
void | setUserDataContainer (osg::UserDataContainer *udc)
template<class T>
void | setUserDataContainer (const ref_ptr< T > &udc)
osg::UserDataContainer * | getUserDataContainer ()
const osg::UserDataContainer * | getUserDataContainer () const
osg::UserDataContainer * | getOrCreateUserDataContainer ()
virtual void | setUserData (Referenced *obj)
template<class T>
void | setUserData (const ref_ptr< T > &ud)
virtual Referenced * | getUserData ()
virtual const Referenced * | getUserData () const
template<typename T>
bool | getUserValue (const std::string &name, T &value) const
template<typename T>
void | setUserValue (const std::string &name, const T &value)
template<typename T>
BoolValueObject UCharValueObject UShortValueObject UIntValueObject DoubleValueObject Vec3fValueObject Vec2dValueObject Vec4dValueObject PlaneValueObject MatrixdValueObject BoundingBoxdValueObject BoundingSpheredValueObject bool | getUserValue (const std::string &name, T &value) const
Public Member Functions inherited from osg::Referenced
| Referenced ()
| Referenced (bool threadSafeRefUnref)
| Referenced (const Referenced &)
Referenced & | operator= (const Referenced &)
bool | getThreadSafeRefUnref () const
OpenThreads::Mutex * | getRefMutex () const
int | ref () const
int | unref () const
int | unref_nodelete () const
int | referenceCount () const
ObserverSet * | getObserverSet () const
ObserverSet * | getOrCreateObserverSet () const
void | addObserver (Observer *observer) const
void | removeObserver (Observer *observer) const

## Protected Member Functions

virtual | ~BumpMapping ()
BumpMapping & | operator= (const BumpMapping &)
bool | define_techniques ()
Protected Member Functions inherited from osgFX::Effect
virtual | ~Effect ()
Effect & | operator= (const Effect &)
void | dirtyTechniques ()
void | addTechnique (Technique *tech)
Protected Member Functions inherited from osg::Group
virtual | ~Group ()
virtual void | childRemoved (unsigned int, unsigned int)
virtual void | childInserted (unsigned int)
Protected Member Functions inherited from osg::Node
virtual | ~Node ()
void | addParent (osg::Group *parent)
void | removeParent (osg::Group *parent)
void | setNumChildrenRequiringUpdateTraversal (unsigned int num)
void | setNumChildrenRequiringEventTraversal (unsigned int num)
void | setNumChildrenWithCullingDisabled (unsigned int num)
void | setNumChildrenWithOccluderNodes (unsigned int num)
Protected Member Functions inherited from osg::Object
virtual | ~Object ()
Protected Member Functions inherited from osg::Referenced
virtual | ~Referenced ()
void | signalObserversAndDelete (bool signalDelete, bool doDelete) const
void | deleteUsingDeleteHandler () const

## Additional Inherited Members

Public Types inherited from osgFX::Effect
enum | TechniqueSelection { AUTO_DETECT = -1 }
Public Types inherited from osg::Node
typedef std::vector< Group * > | ParentList
typedef unsigned int | NodeMask
typedef std::vector< std::string > | DescriptionList
Public Types inherited from osg::Object
enum | DataVariance { DYNAMIC , STATIC , UNSPECIFIED }
Static Public Member Functions inherited from osg::Referenced
static OpenThreads::Mutex * | getGlobalReferencedMutex ()
static void | setDeleteHandler (DeleteHandler *handler)
static DeleteHandler * | getDeleteHandler ()
Protected Attributes inherited from osg::Group
NodeList | _children
Protected Attributes inherited from osg::Node
BoundingSphere | _initialBound
ref_ptr< ComputeBoundingSphereCallback > | _computeBoundCallback
BoundingSphere | _boundingSphere
bool | _boundingSphereComputed
ParentList | _parents
ref_ptr< Callback > | _updateCallback
unsigned int | _numChildrenRequiringUpdateTraversal
ref_ptr< Callback > | _eventCallback
unsigned int | _numChildrenRequiringEventTraversal
ref_ptr< Callback > | _cullCallback
bool | _cullingActive
unsigned int | _numChildrenWithCullingDisabled
unsigned int | _numChildrenWithOccluderNodes
NodeMask | _nodeMask
ref_ptr< StateSet > | _stateset
Protected Attributes inherited from osg::Object
std::string | _name
DataVariance | _dataVariance
osg::UserDataContainer * | _userDataContainer
Protected Attributes inherited from osg::Referenced
OpenThreads::AtomicPtr | _observerSet
OpenThreads::Atomic | _refCount

## Detailed Description

This effect makes surfaces appear bumpy. Children nodes must use two textures, one for diffuse color and one for the normal map (which can be created from a height map with tools like nVIDIA's normal map generator). Furthermore, tangent-space basis vectors must be created and assigned to each Geometry; this can be done quickly by calling BumpMapping::prepareChildren(). Note that both diffuse and normal map textures must have corresponding UV maps defined in Geometry objects. This effect defines a preferred technique which uses ARB vertex & fragment programs, and a fallback technique which doesn't use fragment programs. The latter is more limited though since it can't handle ambient and specular components.

## Constructor & Destructor Documentation

## BumpMapping() [1/2]

osgFX::BumpMapping::BumpMapping | ( |  | ) |

Referenced by BumpMapping(), META_Effect(), and operator=().

## BumpMapping() [2/2]

osgFX::BumpMapping::BumpMapping | ( | const BumpMapping & | copy,
|  | const osg::CopyOp & | copyop = osg::CopyOp::SHALLOW_COPY )

References BumpMapping(), and osg::CopyOp::SHALLOW_COPY.

## ~BumpMapping()

virtual osgFX::BumpMapping::~BumpMapping | ( |  | ) |

inline protected virtual

## Member Function Documentation

## define_techniques()

bool osgFX::BumpMapping::define_techniques | ( |  | ) |

protected virtual

abstract method to be implemented in derived classes; its purpose if to create the techniques that can be used for obtaining the desired effect. You will usually call addTechnique() inside this method.

Implements osgFX::Effect.

## getDiffuseTextureUnit()

int osgFX::BumpMapping::getDiffuseTextureUnit | ( |  | ) | const

inline

get the texture unit that contains diffuse color texture. Default is 1

Referenced by META_Effect().

## getLightNumber()

int osgFX::BumpMapping::getLightNumber | ( |  | ) | const

inline

get the OpenGL light number

Referenced by META_Effect().

## getNormalMapTextureUnit()

int osgFX::BumpMapping::getNormalMapTextureUnit | ( |  | ) | const

inline

get the texture unit that contains normal map texture. Default is 0

Referenced by META_Effect().

## getOverrideDiffuseTexture() [1/2]

osg::Texture2D * osgFX::BumpMapping::getOverrideDiffuseTexture | ( |  | ) |

inline

get the diffuse color texture that overrides children's texture

Referenced by META_Effect().

## getOverrideDiffuseTexture() [2/2]

const osg::Texture2D * osgFX::BumpMapping::getOverrideDiffuseTexture | ( |  | ) | const

inline

get the const diffuse color texture that overrides children's texture

## getOverrideNormalMapTexture() [1/2]

osg::Texture2D * osgFX::BumpMapping::getOverrideNormalMapTexture | ( |  | ) |

inline

get the normal map texture that overrides children's texture

Referenced by META_Effect().

## getOverrideNormalMapTexture() [2/2]

const osg::Texture2D * osgFX::BumpMapping::getOverrideNormalMapTexture | ( |  | ) | const

inline

get the const normal map texture that overrides children's texture

## META_Effect()

osgFX::BumpMapping::META_Effect | ( | osgFX | ,
|  | BumpMapping | ,
|  | "Bump Mapping" | ,
|  | "This effect makes surfaces appear bumpy. Children nodes must use two | textures,
|  | " "one for diffuse color and one for the normal map(which can be created " "from a height map with tools like nVIDIA 's normal map generator). | Furthermore,
|  | " "tangent-space basis vectors must be created and assigned to each Geometry;this " "can be done quickly by calling BumpMapping::prepareChildren(). Note that both " "diffuse and normal map textures must have corresponding UV maps defined in " "Geometry objects.\n" "This effect defines a preferred technique which uses ARB vertex &fragment " " | programs,
|  | and a fallback technique which doesn 't use fragment programs. The " "latter is more limited though since it can 't handle ambient and specular " "components." | ,
|  | "Marco Jez" | )

References BumpMapping(), getDiffuseTextureUnit(), getLightNumber(), getNormalMapTextureUnit(), getOverrideDiffuseTexture(), getOverrideNormalMapTexture(), setDiffuseTextureUnit(), setLightNumber(), setNormalMapTextureUnit(), setOverrideDiffuseTexture(), and setOverrideNormalMapTexture().

## operator=()

BumpMapping & osgFX::BumpMapping::operator= | ( | const BumpMapping & |  | ) |

inline protected

References BumpMapping().

## prepareChildren()

void osgFX::BumpMapping::prepareChildren | ( |  | ) |

prepare children for bump lighting. Actually calls prepareNode() for each child

## prepareGeometry()

void osgFX::BumpMapping::prepareGeometry | ( | osg::Geometry * | geo | ) |

prepare a Geometry for bump lighting. Tangent-space basis vectors are generated and attached to the geometry as vertex attribute arrays.

## prepareNode()

void osgFX::BumpMapping::prepareNode | ( | osg::Node * | node | ) |

prepare a Node for bump lighting, calling prepareGeometry() for each Geometry

## setDiffuseTextureUnit()

void osgFX::BumpMapping::setDiffuseTextureUnit | ( | int | n | ) |

inline

set the texture unit that contains diffuse color texture. Default is 1

References osgFX::Effect::dirtyTechniques().

Referenced by META_Effect().

## setLightNumber()

void osgFX::BumpMapping::setLightNumber | ( | int | n | ) |

inline

set the OpenGL light number that will be used in lighting computations

References osgFX::Effect::dirtyTechniques().

Referenced by META_Effect().

## setNormalMapTextureUnit()

void osgFX::BumpMapping::setNormalMapTextureUnit | ( | int | n | ) |

inline

set the texture unit that contains normal map texture. Default is 0

References osgFX::Effect::dirtyTechniques().

Referenced by META_Effect().

## setOverrideDiffuseTexture()

void osgFX::BumpMapping::setOverrideDiffuseTexture | ( | osg::Texture2D * | texture | ) |

inline

set the diffuse color texture that overrides children's texture

References osgFX::Effect::dirtyTechniques().

Referenced by META_Effect().

## setOverrideNormalMapTexture()

void osgFX::BumpMapping::setOverrideNormalMapTexture | ( | osg::Texture2D * | texture | ) |

inline

set the normal map texture that overrides children's texture

References osgFX::Effect::dirtyTechniques().

Referenced by META_Effect().

## setUpDemo()

void osgFX::BumpMapping::setUpDemo | ( |  | ) |

virtual

set up a demo environment with predefined diffuse and normal maps, as well as texture coordinates

Reimplemented from osgFX::Effect.

The documentation for this class was generated from the following file:

- BumpMapping