1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-22 03:40:49 +00:00

fix water shader switching bug

This commit is contained in:
Miloslav Číž 2017-10-17 00:13:55 +02:00
parent 8a1e0e74fd
commit a7cad65aab
3 changed files with 14 additions and 9 deletions

View File

@ -1548,14 +1548,19 @@ void SkyManager::update(float duration)
{
if (!mEnabled)
{
mRainIntensityUniform->set((float) 0.0);
if (mRainIntensityUniform)
mRainIntensityUniform->set((float) 0.0);
return;
}
if (mIsStorm || (!hasRain() && !mParticleNode))
mRainIntensityUniform->set((float) 0.0);
else
mRainIntensityUniform->set((float) mWeatherAlpha);
if (mRainIntensityUniform)
{
if (mIsStorm || (!hasRain() && !mParticleNode))
mRainIntensityUniform->set((float) 0.0);
else
mRainIntensityUniform->set((float) mWeatherAlpha);
}
if (mIsStorm)
{

View File

@ -416,13 +416,14 @@ Water::Water(osg::Group *parent, osg::Group* sceneRoot, Resource::ResourceSystem
setHeight(mTop);
mRainIntensityUniform = NULL;
updateWaterMaterial();
mRainIntensityUniform = new osg::Uniform("rainIntensity",(float) 0.0);
}
osg::Uniform *Water::getRainIntensityUniform()
{
return mRainIntensityUniform;
return mRainIntensityUniform.get();
}
void Water::updateWaterMaterial()
@ -556,7 +557,6 @@ void Water::createShaderWaterStateSet(osg::Node* node, Reflection* reflection, R
program->addShader(fragmentShader);
shaderStateset->setAttributeAndModes(program, osg::StateAttribute::ON);
mRainIntensityUniform = new osg::Uniform("rainIntensity",(float) 0.0);
shaderStateset->addUniform(mRainIntensityUniform);
node->setStateSet(shaderStateset);

View File

@ -51,7 +51,7 @@ namespace MWRender
{
static const int CELL_SIZE = 8192;
osg::Uniform* mRainIntensityUniform;
osg::ref_ptr<osg::Uniform> mRainIntensityUniform;
osg::ref_ptr<osg::Group> mParent;
osg::ref_ptr<osg::Group> mSceneRoot;