mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-03-25 16:43:33 +00:00
Use fallback weather ripple settings (bug #7292)
This commit is contained in:
parent
dff86dc1e2
commit
099c39ae87
@ -70,6 +70,7 @@
|
|||||||
Bug #7229: Error marker loading failure is not handled
|
Bug #7229: Error marker loading failure is not handled
|
||||||
Bug #7243: Supporting loading external files from VFS from esm files
|
Bug #7243: Supporting loading external files from VFS from esm files
|
||||||
Bug #7284: "Your weapon has no effect." message doesn't always show when the player character attempts to attack
|
Bug #7284: "Your weapon has no effect." message doesn't always show when the player character attempts to attack
|
||||||
|
Bug #7292: Weather settings for disabling or enabling snow and rain ripples don't work
|
||||||
Bug #7298: Water ripples from projectiles sometimes are not spawned
|
Bug #7298: Water ripples from projectiles sometimes are not spawned
|
||||||
Bug #7307: Alchemy "Magic Effect" search string does not match on tool tip for effects related to attributes
|
Bug #7307: Alchemy "Magic Effect" search string does not match on tool tip for effects related to attributes
|
||||||
Bug #7322: Shadows don't cover groundcover depending on the view angle and perspective with compute scene bounds = primitives
|
Bug #7322: Shadows don't cover groundcover depending on the view angle and perspective with compute scene bounds = primitives
|
||||||
|
@ -847,6 +847,7 @@ namespace MWRender
|
|||||||
|
|
||||||
float rainIntensity = mSky->getPrecipitationAlpha();
|
float rainIntensity = mSky->getPrecipitationAlpha();
|
||||||
mWater->setRainIntensity(rainIntensity);
|
mWater->setRainIntensity(rainIntensity);
|
||||||
|
mWater->setRainRipplesEnabled(mSky->getRainRipplesEnabled());
|
||||||
|
|
||||||
mWater->update(dt, paused);
|
mWater->update(dt, paused);
|
||||||
if (!paused)
|
if (!paused)
|
||||||
|
@ -257,6 +257,7 @@ namespace MWRender
|
|||||||
, mRainMaxHeight(0.f)
|
, mRainMaxHeight(0.f)
|
||||||
, mRainEntranceSpeed(1.f)
|
, mRainEntranceSpeed(1.f)
|
||||||
, mRainMaxRaindrops(0)
|
, mRainMaxRaindrops(0)
|
||||||
|
, mRipples(false)
|
||||||
, mWindSpeed(0.f)
|
, mWindSpeed(0.f)
|
||||||
, mBaseWindSpeed(0.f)
|
, mBaseWindSpeed(0.f)
|
||||||
, mEnabled(true)
|
, mEnabled(true)
|
||||||
@ -516,6 +517,11 @@ namespace MWRender
|
|||||||
return mRainNode != nullptr;
|
return mRainNode != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SkyManager::getRainRipplesEnabled() const
|
||||||
|
{
|
||||||
|
return mRipples;
|
||||||
|
}
|
||||||
|
|
||||||
float SkyManager::getPrecipitationAlpha() const
|
float SkyManager::getPrecipitationAlpha() const
|
||||||
{
|
{
|
||||||
if (mEnabled && !mIsStorm && (hasRain() || mParticleNode))
|
if (mEnabled && !mIsStorm && (hasRain() || mParticleNode))
|
||||||
@ -630,6 +636,7 @@ namespace MWRender
|
|||||||
mRainMinHeight = weather.mRainMinHeight;
|
mRainMinHeight = weather.mRainMinHeight;
|
||||||
mRainMaxHeight = weather.mRainMaxHeight;
|
mRainMaxHeight = weather.mRainMaxHeight;
|
||||||
mRainSpeed = weather.mRainSpeed;
|
mRainSpeed = weather.mRainSpeed;
|
||||||
|
mRipples = weather.mRipples;
|
||||||
mWindSpeed = weather.mWindSpeed;
|
mWindSpeed = weather.mWindSpeed;
|
||||||
mBaseWindSpeed = weather.mBaseWindSpeed;
|
mBaseWindSpeed = weather.mBaseWindSpeed;
|
||||||
|
|
||||||
|
@ -79,6 +79,8 @@ namespace MWRender
|
|||||||
|
|
||||||
bool hasRain() const;
|
bool hasRain() const;
|
||||||
|
|
||||||
|
bool getRainRipplesEnabled() const;
|
||||||
|
|
||||||
float getPrecipitationAlpha() const;
|
float getPrecipitationAlpha() const;
|
||||||
|
|
||||||
void setRainSpeed(float speed);
|
void setRainSpeed(float speed);
|
||||||
@ -194,6 +196,7 @@ namespace MWRender
|
|||||||
float mRainMaxHeight;
|
float mRainMaxHeight;
|
||||||
float mRainEntranceSpeed;
|
float mRainEntranceSpeed;
|
||||||
int mRainMaxRaindrops;
|
int mRainMaxRaindrops;
|
||||||
|
bool mRipples;
|
||||||
float mWindSpeed;
|
float mWindSpeed;
|
||||||
float mBaseWindSpeed;
|
float mBaseWindSpeed;
|
||||||
|
|
||||||
|
@ -77,6 +77,7 @@ namespace MWRender
|
|||||||
float mRainSpeed;
|
float mRainSpeed;
|
||||||
float mRainEntranceSpeed;
|
float mRainEntranceSpeed;
|
||||||
int mRainMaxRaindrops;
|
int mRainMaxRaindrops;
|
||||||
|
bool mRipples;
|
||||||
|
|
||||||
osg::Vec3f mStormDirection;
|
osg::Vec3f mStormDirection;
|
||||||
osg::Vec3f mNextStormDirection;
|
osg::Vec3f mNextStormDirection;
|
||||||
|
@ -205,21 +205,25 @@ namespace MWRender
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class RainIntensityUpdater : public SceneUtil::StateSetUpdater
|
class RainSettingsUpdater : public SceneUtil::StateSetUpdater
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RainIntensityUpdater()
|
RainSettingsUpdater()
|
||||||
: mRainIntensity(0.f)
|
: mRainIntensity(0.f)
|
||||||
|
, mEnableRipples(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void setRainIntensity(float rainIntensity) { mRainIntensity = rainIntensity; }
|
void setRainIntensity(float rainIntensity) { mRainIntensity = rainIntensity; }
|
||||||
|
void setRipplesEnabled(bool enableRipples) { mEnableRipples = enableRipples; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setDefaults(osg::StateSet* stateset) override
|
void setDefaults(osg::StateSet* stateset) override
|
||||||
{
|
{
|
||||||
osg::ref_ptr<osg::Uniform> rainIntensityUniform = new osg::Uniform("rainIntensity", 0.0f);
|
osg::ref_ptr<osg::Uniform> rainIntensityUniform = new osg::Uniform("rainIntensity", 0.0f);
|
||||||
stateset->addUniform(rainIntensityUniform.get());
|
stateset->addUniform(rainIntensityUniform.get());
|
||||||
|
osg::ref_ptr<osg::Uniform> enableRainRipplesUniform = new osg::Uniform("enableRainRipples", false);
|
||||||
|
stateset->addUniform(enableRainRipplesUniform.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
void apply(osg::StateSet* stateset, osg::NodeVisitor* /*nv*/) override
|
void apply(osg::StateSet* stateset, osg::NodeVisitor* /*nv*/) override
|
||||||
@ -227,10 +231,14 @@ namespace MWRender
|
|||||||
osg::ref_ptr<osg::Uniform> rainIntensityUniform = stateset->getUniform("rainIntensity");
|
osg::ref_ptr<osg::Uniform> rainIntensityUniform = stateset->getUniform("rainIntensity");
|
||||||
if (rainIntensityUniform != nullptr)
|
if (rainIntensityUniform != nullptr)
|
||||||
rainIntensityUniform->set(mRainIntensity);
|
rainIntensityUniform->set(mRainIntensity);
|
||||||
|
osg::ref_ptr<osg::Uniform> enableRainRipplesUniform = stateset->getUniform("enableRainRipples");
|
||||||
|
if (enableRainRipplesUniform != nullptr)
|
||||||
|
enableRainRipplesUniform->set(mEnableRipples);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
float mRainIntensity;
|
float mRainIntensity;
|
||||||
|
bool mEnableRipples;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Refraction : public SceneUtil::RTTNode
|
class Refraction : public SceneUtil::RTTNode
|
||||||
@ -430,7 +438,7 @@ namespace MWRender
|
|||||||
|
|
||||||
Water::Water(osg::Group* parent, osg::Group* sceneRoot, Resource::ResourceSystem* resourceSystem,
|
Water::Water(osg::Group* parent, osg::Group* sceneRoot, Resource::ResourceSystem* resourceSystem,
|
||||||
osgUtil::IncrementalCompileOperation* ico)
|
osgUtil::IncrementalCompileOperation* ico)
|
||||||
: mRainIntensityUpdater(nullptr)
|
: mRainSettingsUpdater(nullptr)
|
||||||
, mParent(parent)
|
, mParent(parent)
|
||||||
, mSceneRoot(sceneRoot)
|
, mSceneRoot(sceneRoot)
|
||||||
, mResourceSystem(resourceSystem)
|
, mResourceSystem(resourceSystem)
|
||||||
@ -579,7 +587,7 @@ namespace MWRender
|
|||||||
|
|
||||||
node->setStateSet(stateset);
|
node->setStateSet(stateset);
|
||||||
node->setUpdateCallback(nullptr);
|
node->setUpdateCallback(nullptr);
|
||||||
mRainIntensityUpdater = nullptr;
|
mRainSettingsUpdater = nullptr;
|
||||||
|
|
||||||
// Add animated textures
|
// Add animated textures
|
||||||
std::vector<osg::ref_ptr<osg::Texture2D>> textures;
|
std::vector<osg::ref_ptr<osg::Texture2D>> textures;
|
||||||
@ -711,8 +719,8 @@ namespace MWRender
|
|||||||
normalMap->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR_MIPMAP_LINEAR);
|
normalMap->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR_MIPMAP_LINEAR);
|
||||||
normalMap->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR);
|
normalMap->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR);
|
||||||
|
|
||||||
mRainIntensityUpdater = new RainIntensityUpdater();
|
mRainSettingsUpdater = new RainSettingsUpdater();
|
||||||
node->setUpdateCallback(mRainIntensityUpdater);
|
node->setUpdateCallback(mRainSettingsUpdater);
|
||||||
|
|
||||||
mShaderWaterStateSetUpdater
|
mShaderWaterStateSetUpdater
|
||||||
= new ShaderWaterStateSetUpdater(this, mReflection, mRefraction, mRipples, std::move(program), normalMap);
|
= new ShaderWaterStateSetUpdater(this, mReflection, mRefraction, mRipples, std::move(program), normalMap);
|
||||||
@ -801,8 +809,14 @@ namespace MWRender
|
|||||||
|
|
||||||
void Water::setRainIntensity(float rainIntensity)
|
void Water::setRainIntensity(float rainIntensity)
|
||||||
{
|
{
|
||||||
if (mRainIntensityUpdater)
|
if (mRainSettingsUpdater)
|
||||||
mRainIntensityUpdater->setRainIntensity(rainIntensity);
|
mRainSettingsUpdater->setRainIntensity(rainIntensity);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Water::setRainRipplesEnabled(bool enableRipples)
|
||||||
|
{
|
||||||
|
if (mRainSettingsUpdater)
|
||||||
|
mRainSettingsUpdater->setRipplesEnabled(enableRipples);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Water::update(float dt, bool paused)
|
void Water::update(float dt, bool paused)
|
||||||
|
@ -46,13 +46,13 @@ namespace MWRender
|
|||||||
class Refraction;
|
class Refraction;
|
||||||
class Reflection;
|
class Reflection;
|
||||||
class RippleSimulation;
|
class RippleSimulation;
|
||||||
class RainIntensityUpdater;
|
class RainSettingsUpdater;
|
||||||
class Ripples;
|
class Ripples;
|
||||||
|
|
||||||
/// Water rendering
|
/// Water rendering
|
||||||
class Water
|
class Water
|
||||||
{
|
{
|
||||||
osg::ref_ptr<RainIntensityUpdater> mRainIntensityUpdater;
|
osg::ref_ptr<RainSettingsUpdater> mRainSettingsUpdater;
|
||||||
|
|
||||||
osg::ref_ptr<osg::Group> mParent;
|
osg::ref_ptr<osg::Group> mParent;
|
||||||
osg::ref_ptr<osg::Group> mSceneRoot;
|
osg::ref_ptr<osg::Group> mSceneRoot;
|
||||||
@ -113,6 +113,7 @@ namespace MWRender
|
|||||||
void changeCell(const MWWorld::CellStore* store);
|
void changeCell(const MWWorld::CellStore* store);
|
||||||
void setHeight(const float height);
|
void setHeight(const float height);
|
||||||
void setRainIntensity(const float rainIntensity);
|
void setRainIntensity(const float rainIntensity);
|
||||||
|
void setRainRipplesEnabled(bool enableRipples);
|
||||||
|
|
||||||
void update(float dt, bool paused);
|
void update(float dt, bool paused);
|
||||||
|
|
||||||
|
@ -175,6 +175,7 @@ namespace MWWorld
|
|||||||
, mRainMaxHeight(Fallback::Map::getFloat("Weather_" + name + "_Rain_Height_Max"))
|
, mRainMaxHeight(Fallback::Map::getFloat("Weather_" + name + "_Rain_Height_Max"))
|
||||||
, mParticleEffect(particleEffect)
|
, mParticleEffect(particleEffect)
|
||||||
, mRainEffect(Fallback::Map::getBool("Weather_" + name + "_Using_Precip") ? "meshes\\raindrop.nif" : "")
|
, mRainEffect(Fallback::Map::getBool("Weather_" + name + "_Using_Precip") ? "meshes\\raindrop.nif" : "")
|
||||||
|
, mRipples(Fallback::Map::getBool("Weather_" + name + "_Ripples"))
|
||||||
, mStormDirection(Weather::defaultDirection())
|
, mStormDirection(Weather::defaultDirection())
|
||||||
, mCloudsMaximumPercent(Fallback::Map::getFloat("Weather_" + name + "_Clouds_Maximum_Percent"))
|
, mCloudsMaximumPercent(Fallback::Map::getFloat("Weather_" + name + "_Clouds_Maximum_Percent"))
|
||||||
, mTransitionDelta(Fallback::Map::getFloat("Weather_" + name + "_Transition_Delta"))
|
, mTransitionDelta(Fallback::Map::getFloat("Weather_" + name + "_Transition_Delta"))
|
||||||
@ -1129,6 +1130,7 @@ namespace MWWorld
|
|||||||
mResult.mRainMinHeight = current.mRainMinHeight;
|
mResult.mRainMinHeight = current.mRainMinHeight;
|
||||||
mResult.mRainMaxHeight = current.mRainMaxHeight;
|
mResult.mRainMaxHeight = current.mRainMaxHeight;
|
||||||
mResult.mRainMaxRaindrops = current.mRainMaxRaindrops;
|
mResult.mRainMaxRaindrops = current.mRainMaxRaindrops;
|
||||||
|
mResult.mRipples = current.mRipples;
|
||||||
|
|
||||||
mResult.mParticleEffect = current.mParticleEffect;
|
mResult.mParticleEffect = current.mParticleEffect;
|
||||||
mResult.mRainEffect = current.mRainEffect;
|
mResult.mRainEffect = current.mRainEffect;
|
||||||
@ -1241,6 +1243,7 @@ namespace MWWorld
|
|||||||
mResult.mRainMinHeight = current.mRainMinHeight;
|
mResult.mRainMinHeight = current.mRainMinHeight;
|
||||||
mResult.mRainMaxHeight = current.mRainMaxHeight;
|
mResult.mRainMaxHeight = current.mRainMaxHeight;
|
||||||
mResult.mRainMaxRaindrops = current.mRainMaxRaindrops;
|
mResult.mRainMaxRaindrops = current.mRainMaxRaindrops;
|
||||||
|
mResult.mRipples = current.mRipples;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1257,6 +1260,7 @@ namespace MWWorld
|
|||||||
mResult.mRainMinHeight = other.mRainMinHeight;
|
mResult.mRainMinHeight = other.mRainMinHeight;
|
||||||
mResult.mRainMaxHeight = other.mRainMaxHeight;
|
mResult.mRainMaxHeight = other.mRainMaxHeight;
|
||||||
mResult.mRainMaxRaindrops = other.mRainMaxRaindrops;
|
mResult.mRainMaxRaindrops = other.mRainMaxRaindrops;
|
||||||
|
mResult.mRipples = other.mRipples;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -191,6 +191,8 @@ namespace MWWorld
|
|||||||
|
|
||||||
std::string mRainEffect;
|
std::string mRainEffect;
|
||||||
|
|
||||||
|
bool mRipples;
|
||||||
|
|
||||||
osg::Vec3f mStormDirection;
|
osg::Vec3f mStormDirection;
|
||||||
|
|
||||||
float mCloudsMaximumPercent;
|
float mCloudsMaximumPercent;
|
||||||
|
@ -11,7 +11,10 @@ static const std::set<std::string_view> allowedKeysInt = { "LightAttenuation_Lin
|
|||||||
"Water_RippleFrameCount", "Water_SurfaceTileCount", "Water_SurfaceFrameCount", "Weather_Clear_Using_Precip",
|
"Water_RippleFrameCount", "Water_SurfaceTileCount", "Water_SurfaceFrameCount", "Weather_Clear_Using_Precip",
|
||||||
"Weather_Cloudy_Using_Precip", "Weather_Foggy_Using_Precip", "Weather_Overcast_Using_Precip",
|
"Weather_Cloudy_Using_Precip", "Weather_Foggy_Using_Precip", "Weather_Overcast_Using_Precip",
|
||||||
"Weather_Rain_Using_Precip", "Weather_Thunderstorm_Using_Precip", "Weather_Ashstorm_Using_Precip",
|
"Weather_Rain_Using_Precip", "Weather_Thunderstorm_Using_Precip", "Weather_Ashstorm_Using_Precip",
|
||||||
"Weather_Blight_Using_Precip", "Weather_Snow_Using_Precip", "Weather_Blizzard_Using_Precip" };
|
"Weather_Blight_Using_Precip", "Weather_Snow_Using_Precip", "Weather_Blizzard_Using_Precip",
|
||||||
|
"Weather_Clear_Ripples", "Weather_Cloudy_Ripples", "Weather_Foggy_Ripples", "Weather_Overcast_Ripples",
|
||||||
|
"Weather_Rain_Ripples", "Weather_Thunderstorm_Ripples", "Weather_Ashstorm_Ripples", "Weather_Blight_Ripples",
|
||||||
|
"Weather_Snow_Ripples", "Weather_Blizzard_Ripples" };
|
||||||
|
|
||||||
static const std::set<std::string_view> allowedKeysFloat = { "General_Werewolf_FOV", "Inventory_DirectionalAmbientB",
|
static const std::set<std::string_view> allowedKeysFloat = { "General_Werewolf_FOV", "Inventory_DirectionalAmbientB",
|
||||||
"Inventory_DirectionalAmbientG", "Inventory_DirectionalAmbientR", "Inventory_DirectionalDiffuseB",
|
"Inventory_DirectionalAmbientG", "Inventory_DirectionalAmbientR", "Inventory_DirectionalDiffuseB",
|
||||||
@ -160,7 +163,7 @@ static const std::set<std::string_view> allowedKeysNonNumeric = { "Blood_Model_0
|
|||||||
"Weather_Rain_Ambient_Sunrise_Color", "Weather_Rain_Ambient_Sunset_Color", "Weather_Rain_Cloud_Texture",
|
"Weather_Rain_Ambient_Sunrise_Color", "Weather_Rain_Ambient_Sunset_Color", "Weather_Rain_Cloud_Texture",
|
||||||
"Weather_Rain_Fog_Day_Color", "Weather_Rain_Fog_Night_Color", "Weather_Rain_Fog_Sunrise_Color",
|
"Weather_Rain_Fog_Day_Color", "Weather_Rain_Fog_Night_Color", "Weather_Rain_Fog_Sunrise_Color",
|
||||||
"Weather_Rain_Fog_Sunset_Color", "Weather_Rain_Rain_Loop_Sound_ID", "Weather_Rain_Ripple_Radius",
|
"Weather_Rain_Fog_Sunset_Color", "Weather_Rain_Rain_Loop_Sound_ID", "Weather_Rain_Ripple_Radius",
|
||||||
"Weather_Rain_Ripples", "Weather_Rain_Ripple_Scale", "Weather_Rain_Ripple_Speed", "Weather_Rain_Ripples_Per_Drop",
|
"Weather_Rain_Ripple_Scale", "Weather_Rain_Ripple_Speed", "Weather_Rain_Ripples_Per_Drop",
|
||||||
"Weather_Rain_Sky_Day_Color", "Weather_Rain_Sky_Night_Color", "Weather_Rain_Sky_Sunrise_Color",
|
"Weather_Rain_Sky_Day_Color", "Weather_Rain_Sky_Night_Color", "Weather_Rain_Sky_Sunrise_Color",
|
||||||
"Weather_Rain_Sky_Sunset_Color", "Weather_Rain_Sun_Day_Color", "Weather_Rain_Sun_Disc_Sunset_Color",
|
"Weather_Rain_Sky_Sunset_Color", "Weather_Rain_Sun_Day_Color", "Weather_Rain_Sun_Disc_Sunset_Color",
|
||||||
"Weather_Rain_Sun_Night_Color", "Weather_Rain_Sun_Sunrise_Color", "Weather_Rain_Sun_Sunset_Color",
|
"Weather_Rain_Sun_Night_Color", "Weather_Rain_Sun_Sunrise_Color", "Weather_Rain_Sun_Sunset_Color",
|
||||||
@ -168,7 +171,7 @@ static const std::set<std::string_view> allowedKeysNonNumeric = { "Blood_Model_0
|
|||||||
"Weather_Snow_Ambient_Sunrise_Color", "Weather_Snow_Ambient_Sunset_Color", "Weather_Snow_Cloud_Texture",
|
"Weather_Snow_Ambient_Sunrise_Color", "Weather_Snow_Ambient_Sunset_Color", "Weather_Snow_Cloud_Texture",
|
||||||
"Weather_Snow_Fog_Day_Color", "Weather_Snow_Fog_Night_Color", "Weather_Snow_Fog_Sunrise_Color",
|
"Weather_Snow_Fog_Day_Color", "Weather_Snow_Fog_Night_Color", "Weather_Snow_Fog_Sunrise_Color",
|
||||||
"Weather_Snow_Fog_Sunset_Color", "Weather_Snow_Gravity_Scale", "Weather_Snow_High_Kill", "Weather_Snow_Low_Kill",
|
"Weather_Snow_Fog_Sunset_Color", "Weather_Snow_Gravity_Scale", "Weather_Snow_High_Kill", "Weather_Snow_Low_Kill",
|
||||||
"Weather_Snow_Max_Snowflakes", "Weather_Snow_Ripple_Radius", "Weather_Snow_Ripples", "Weather_Snow_Ripple_Scale",
|
"Weather_Snow_Max_Snowflakes", "Weather_Snow_Ripple_Radius", "Weather_Snow_Ripple_Scale",
|
||||||
"Weather_Snow_Ripple_Speed", "Weather_Snow_Ripples_Per_Flake", "Weather_Snow_Sky_Day_Color",
|
"Weather_Snow_Ripple_Speed", "Weather_Snow_Ripples_Per_Flake", "Weather_Snow_Sky_Day_Color",
|
||||||
"Weather_Snow_Sky_Night_Color", "Weather_Snow_Sky_Sunrise_Color", "Weather_Snow_Sky_Sunset_Color",
|
"Weather_Snow_Sky_Night_Color", "Weather_Snow_Sky_Sunrise_Color", "Weather_Snow_Sky_Sunset_Color",
|
||||||
"Weather_Snow_Snow_Diameter", "Weather_Snow_Snow_Entrance_Speed", "Weather_Snow_Snow_Height_Max",
|
"Weather_Snow_Snow_Diameter", "Weather_Snow_Snow_Entrance_Speed", "Weather_Snow_Snow_Height_Max",
|
||||||
|
@ -81,6 +81,7 @@ uniform float near;
|
|||||||
uniform float far;
|
uniform float far;
|
||||||
|
|
||||||
uniform float rainIntensity;
|
uniform float rainIntensity;
|
||||||
|
uniform bool enableRainRipples;
|
||||||
|
|
||||||
uniform vec2 screenRes;
|
uniform vec2 screenRes;
|
||||||
|
|
||||||
@ -113,7 +114,7 @@ void main(void)
|
|||||||
|
|
||||||
vec4 rainRipple;
|
vec4 rainRipple;
|
||||||
|
|
||||||
if (rainIntensity > 0.01)
|
if (rainIntensity > 0.01 && enableRainRipples)
|
||||||
rainRipple = rainCombined(position.xy/1000.0, waterTimer) * clamp(rainIntensity, 0.0, 1.0);
|
rainRipple = rainCombined(position.xy/1000.0, waterTimer) * clamp(rainIntensity, 0.0, 1.0);
|
||||||
else
|
else
|
||||||
rainRipple = vec4(0.0);
|
rainRipple = vec4(0.0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user