Skip to content

Commit 2f703ec

Browse files
committed
Merge branch 'weatherreport' into 'master'
Improve high wind speed rain/snow behavior (#8864) Closes #8864 See merge request OpenMW/openmw!5069
2 parents 76eff59 + dec8a28 commit 2f703ec

File tree

6 files changed

+8
-32
lines changed

6 files changed

+8
-32
lines changed

apps/openmw/mwrender/renderingmanager.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -897,9 +897,7 @@ namespace MWRender
897897

898898
mResourceSystem->getSceneManager()->getShaderManager().update(*mViewer);
899899

900-
float rainIntensity = mSky->getPrecipitationAlpha();
901-
mWater->setRainIntensity(rainIntensity);
902-
mWater->setRainRipplesEnabled(mSky->getRainRipplesEnabled());
900+
mWater->setRainIntensity(mSky->getRainRipplesEnabled() ? mSky->getPrecipitationAlpha() : 0.f);
903901

904902
mWater->update(dt, paused);
905903
if (!paused)

apps/openmw/mwrender/sky.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ namespace MWRender
517517

518518
bool SkyManager::getRainRipplesEnabled() const
519519
{
520-
if (!mEnabled || mIsStorm)
520+
if (!mEnabled)
521521
return false;
522522

523523
if (hasRain())
@@ -531,10 +531,7 @@ namespace MWRender
531531

532532
float SkyManager::getPrecipitationAlpha() const
533533
{
534-
if (mEnabled && !mIsStorm && (hasRain() || mParticleNode))
535-
return mPrecipitationAlpha;
536-
537-
return 0.f;
534+
return mPrecipitationAlpha;
538535
}
539536

540537
void SkyManager::update(float duration)
@@ -729,7 +726,7 @@ namespace MWRender
729726
= static_cast<osgParticle::ParticleSystem*>(findPSVisitor.mFoundNodes[i]);
730727

731728
osg::ref_ptr<osgParticle::ModularProgram> program = new osgParticle::ModularProgram;
732-
if (!mIsStorm)
729+
if (occlusionEnabledForEffect)
733730
program->addOperator(new WrapAroundOperator(mCamera, defaultWrapRange));
734731
program->addOperator(new WeatherAlphaOperator(mPrecipitationAlpha, false));
735732
program->setParticleSystem(ps);

apps/openmw/mwrender/skyutil.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1146,7 +1146,7 @@ namespace MWRender
11461146
void RainShooter::shoot(osgParticle::Particle* particle) const
11471147
{
11481148
particle->setVelocity(mVelocity);
1149-
particle->setAngle(osg::Vec3f(-mAngle, 0, (Misc::Rng::rollProbability() * 2 - 1) * osg::PIf));
1149+
particle->setAngle(osg::Vec3f(-mAngle, 0.f, 0.f));
11501150
}
11511151

11521152
void RainShooter::setVelocity(const osg::Vec3f& velocity)

apps/openmw/mwrender/water.cpp

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -212,37 +212,26 @@ namespace MWRender
212212
class RainSettingsUpdater : public SceneUtil::StateSetUpdater
213213
{
214214
public:
215-
RainSettingsUpdater()
216-
: mRainIntensity(0.f)
217-
, mEnableRipples(false)
218-
{
219-
}
215+
RainSettingsUpdater() = default;
220216

221217
void setRainIntensity(float rainIntensity) { mRainIntensity = rainIntensity; }
222-
void setRipplesEnabled(bool enableRipples) { mEnableRipples = enableRipples; }
223218

224219
protected:
225220
void setDefaults(osg::StateSet* stateset) override
226221
{
227222
osg::ref_ptr<osg::Uniform> rainIntensityUniform = new osg::Uniform("rainIntensity", 0.0f);
228223
stateset->addUniform(rainIntensityUniform.get());
229-
osg::ref_ptr<osg::Uniform> enableRainRipplesUniform = new osg::Uniform("enableRainRipples", false);
230-
stateset->addUniform(enableRainRipplesUniform.get());
231224
}
232225

233226
void apply(osg::StateSet* stateset, osg::NodeVisitor* /*nv*/) override
234227
{
235228
osg::ref_ptr<osg::Uniform> rainIntensityUniform = stateset->getUniform("rainIntensity");
236229
if (rainIntensityUniform != nullptr)
237230
rainIntensityUniform->set(mRainIntensity);
238-
osg::ref_ptr<osg::Uniform> enableRainRipplesUniform = stateset->getUniform("enableRainRipples");
239-
if (enableRainRipplesUniform != nullptr)
240-
enableRainRipplesUniform->set(mEnableRipples);
241231
}
242232

243233
private:
244-
float mRainIntensity;
245-
bool mEnableRipples;
234+
float mRainIntensity{ 0.f };
246235
};
247236

248237
class Refraction : public SceneUtil::RTTNode
@@ -807,12 +796,6 @@ namespace MWRender
807796
mRainSettingsUpdater->setRainIntensity(rainIntensity);
808797
}
809798

810-
void Water::setRainRipplesEnabled(bool enableRipples)
811-
{
812-
if (mRainSettingsUpdater)
813-
mRainSettingsUpdater->setRipplesEnabled(enableRipples);
814-
}
815-
816799
void Water::update(float dt, bool paused)
817800
{
818801
if (!paused)

apps/openmw/mwrender/water.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,6 @@ namespace MWRender
114114
void changeCell(const MWWorld::CellStore* store);
115115
void setHeight(const float height);
116116
void setRainIntensity(const float rainIntensity);
117-
void setRainRipplesEnabled(bool enableRipples);
118117

119118
void update(float dt, bool paused);
120119

files/shaders/compatibility/water.frag

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ uniform float near;
8080
uniform float far;
8181

8282
uniform float rainIntensity;
83-
uniform bool enableRainRipples;
8483

8584
uniform vec2 screenRes;
8685

@@ -112,7 +111,7 @@ void main(void)
112111

113112
vec4 rainRipple;
114113

115-
if (rainIntensity > 0.01 && enableRainRipples)
114+
if (rainIntensity > 0.01)
116115
rainRipple = rainCombined(position.xy/1000.0, waterTimer) * clamp(rainIntensity, 0.0, 1.0);
117116
else
118117
rainRipple = vec4(0.0);

0 commit comments

Comments
 (0)