|
|
|
@ -207,6 +207,7 @@ osg::ref_ptr<osg::Image> readPngImage (const std::string& file)
|
|
|
|
|
return result.getImage();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Refraction : public osg::Camera
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
@ -220,7 +221,7 @@ public:
|
|
|
|
|
setSmallFeatureCullingPixelSize(Settings::Manager::getInt("small feature culling pixel size", "Water"));
|
|
|
|
|
setName("RefractionCamera");
|
|
|
|
|
|
|
|
|
|
setupCullMask(true);
|
|
|
|
|
setCullMask(Mask_Effect|Mask_Scene|Mask_Terrain|Mask_Actor|Mask_ParticleSystem|Mask_Sky|Mask_Sun|Mask_Player|Mask_Lighting);
|
|
|
|
|
setNodeMask(Mask_RenderToTexture);
|
|
|
|
|
setViewport(0, 0, rttSize, rttSize);
|
|
|
|
|
|
|
|
|
@ -261,12 +262,6 @@ public:
|
|
|
|
|
attach(osg::Camera::DEPTH_BUFFER, mRefractionDepthTexture);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void setupCullMask(bool enabled)
|
|
|
|
|
{
|
|
|
|
|
setCullMask(!enabled ? 0 :
|
|
|
|
|
Mask_Effect|Mask_Scene|Mask_Terrain|Mask_Actor|Mask_ParticleSystem|Mask_Sky|Mask_Sun|Mask_Player|Mask_Lighting);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void setScene(osg::Node* scene)
|
|
|
|
|
{
|
|
|
|
|
if (mScene)
|
|
|
|
@ -309,9 +304,9 @@ public:
|
|
|
|
|
setSmallFeatureCullingPixelSize(Settings::Manager::getInt("small feature culling pixel size", "Water"));
|
|
|
|
|
setName("ReflectionCamera");
|
|
|
|
|
|
|
|
|
|
mReflectActors = Settings::Manager::getBool("reflect actors", "Water");
|
|
|
|
|
bool reflectActors = Settings::Manager::getBool("reflect actors", "Water");
|
|
|
|
|
|
|
|
|
|
setupCullMask(true);
|
|
|
|
|
setCullMask(Mask_Effect|Mask_Scene|Mask_Terrain|Mask_ParticleSystem|Mask_Sky|Mask_Player|Mask_Lighting|(reflectActors ? Mask_Actor : 0));
|
|
|
|
|
setNodeMask(Mask_RenderToTexture);
|
|
|
|
|
|
|
|
|
|
unsigned int rttSize = Settings::Manager::getInt("rtt size", "Water");
|
|
|
|
@ -339,12 +334,6 @@ public:
|
|
|
|
|
addChild(mClipCullNode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void setupCullMask(bool enabled)
|
|
|
|
|
{
|
|
|
|
|
setCullMask(!enabled ? 0 :
|
|
|
|
|
Mask_Effect|Mask_Scene|Mask_Terrain|Mask_ParticleSystem|Mask_Sky|Mask_Player|Mask_Lighting|(mReflectActors ? Mask_Actor : 0));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void setWaterLevel(float waterLevel)
|
|
|
|
|
{
|
|
|
|
|
setViewMatrix(osg::Matrix::scale(1,1,-1) * osg::Matrix::translate(0,0,2 * waterLevel));
|
|
|
|
@ -719,13 +708,4 @@ void Water::clearRipples()
|
|
|
|
|
mSimulation->clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Water::setEffectsEnabled(bool enabled)
|
|
|
|
|
{
|
|
|
|
|
if (mReflection)
|
|
|
|
|
mReflection->setupCullMask(enabled);
|
|
|
|
|
|
|
|
|
|
if (mRefraction)
|
|
|
|
|
mRefraction->setupCullMask(enabled);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|