Introduced new shader composition approach that utilizes #pragma requires(), #pragma import_defines() and #ifdef in GLSL to enable multiple different versions of shaders based
on defines passed in from osg::StateSet::setDefine(..). git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14681 16af8721-9629-0410-8352-f15c8da7e697
This commit is contained in:
@@ -178,6 +178,8 @@ StateSet::StateSet(const StateSet& rhs,const CopyOp& copyop):Object(rhs,copyop),
|
||||
}
|
||||
}
|
||||
|
||||
_defineList = rhs._defineList;
|
||||
|
||||
_renderingHint = rhs._renderingHint;
|
||||
|
||||
_binMode = rhs._binMode;
|
||||
@@ -1129,6 +1131,27 @@ const StateSet::RefUniformPair* StateSet::getUniformPair(const std::string& name
|
||||
else return 0;
|
||||
}
|
||||
|
||||
void StateSet::setDefine(const std::string& defineName, StateAttribute::OverrideValue value)
|
||||
{
|
||||
DefinePair& dp = _defineList[defineName];
|
||||
dp.first = "";
|
||||
dp.second = value;
|
||||
}
|
||||
|
||||
void StateSet::setDefine(const std::string& defineName, const std::string& defineValue, StateAttribute::OverrideValue value)
|
||||
{
|
||||
DefinePair& dp = _defineList[defineName];
|
||||
dp.first = defineValue;
|
||||
dp.second = value;
|
||||
}
|
||||
|
||||
void StateSet::removeDefine(const std::string& defineName)
|
||||
{
|
||||
DefineList::iterator itr = _defineList.find(defineName);
|
||||
if (itr != _defineList.end()) _defineList.erase(itr);
|
||||
}
|
||||
|
||||
|
||||
void StateSet::setTextureMode(unsigned int unit,StateAttribute::GLMode mode, StateAttribute::GLModeValue value)
|
||||
{
|
||||
if (getTextureGLModeSet().isTextureMode(mode))
|
||||
|
||||
Reference in New Issue
Block a user