adds wetness

cliffsnotes:
   $Core::WetnessTexture = "core/rendering/images/wetMap.png"; //for the influence degree map
probes/skylight have a new canDamp boolean, set to off for probes, on for skylight by default.
:levelinfo has a dampness multiplier (0-1)
kicked up numTextures from 8 to 16 for shaderdata and postfx since that hit the 8 texture-in prior limit, and we've already adopted apis that can handle the higher count
This commit is contained in:
AzaezelX 2022-11-21 21:12:23 -06:00
parent e16351605b
commit d23ee397e6
31 changed files with 352 additions and 100 deletions

View file

@ -58,7 +58,8 @@ MaterialManager::MaterialManager()
mDt = 0.0f;
mAccumTime = 0.0f;
mLastTime = 0;
mLastTime = 0;
mDampness = 0.0f;
mWarningInst = NULL;
GFXDevice::getDeviceEventSignal().notify( this, &MaterialManager::_handleGFXEvent );

View file

@ -105,7 +105,10 @@ public:
F32 getTotalTime() const { return mAccumTime; }
F32 getDeltaTime() const { return mDt; }
U32 getLastUpdateTime() const { return mLastTime; }
F32 getDampness() const { return mDampness; }
F32 getDampnessClamped() const { return mClampF(mDampness, 0.0, 1.0); }
void setDampness(F32 dampness) { mDampness = dampness; }
/// Signal used to notify systems that
/// procedural shaders have been flushed.
typedef Signal<void()> FlushSignal;
@ -163,6 +166,7 @@ protected:
F32 mDt;
F32 mAccumTime;
U32 mLastTime;
F32 mDampness;
BaseMatInstance* mWarningInst;

View file

@ -319,8 +319,9 @@ bool ProcessedCustomMaterial::setupPass( SceneRenderState *state, const SceneDat
if (pm)
pm->setProbeInfo(this, NULL, sgData, state, pass, shaderConsts);
shaderConsts->setSafe(rpd->shaderHandles.mAccumTimeSC, MATMGR->getTotalTime());
shaderConsts->setSafe(rpd->shaderHandles.mAccumTimeSC, MATMGR->getTotalTime());
shaderConsts->setSafe(rpd->shaderHandles.mDampnessSC, MATMGR->getDampnessClamped());
return true;
}

View file

@ -94,6 +94,7 @@ void ShaderConstHandles::init( GFXShader *shader, CustomMaterial* mat /*=NULL*/)
mEyeMatSC = shader->getShaderConstHandle(ShaderGenVars::eyeMat);
mOneOverFarplane = shader->getShaderConstHandle(ShaderGenVars::oneOverFarplane);
mAccumTimeSC = shader->getShaderConstHandle(ShaderGenVars::accumTime);
mDampnessSC = shader->getShaderConstHandle(ShaderGenVars::dampness);
mMinnaertConstantSC = shader->getShaderConstHandle(ShaderGenVars::minnaertConstant);
mSubSurfaceParamsSC = shader->getShaderConstHandle(ShaderGenVars::subSurfaceParams);
mDiffuseAtlasParamsSC = shader->getShaderConstHandle(ShaderGenVars::diffuseAtlasParams);
@ -1097,6 +1098,7 @@ void ProcessedShaderMaterial::_setShaderConstants(SceneRenderState * state, cons
shaderConsts->setSafe( handles->mAccumTimeSC, MATMGR->getTotalTime() );
shaderConsts->setSafe(handles->mDampnessSC, MATMGR->getDampnessClamped());
// If the shader constants have not been lost then
// they contain the content from a previous render pass.
//

View file

@ -81,6 +81,7 @@ public:
GFXShaderConstHandle* mEyeMatSC;
GFXShaderConstHandle* mOneOverFarplane;
GFXShaderConstHandle* mAccumTimeSC;
GFXShaderConstHandle* mDampnessSC;
GFXShaderConstHandle* mMinnaertConstantSC;
GFXShaderConstHandle* mSubSurfaceParamsSC;
GFXShaderConstHandle* mDiffuseAtlasParamsSC;

View file

@ -93,7 +93,7 @@ protected:
enum
{
NumTextures = 8
NumTextures = 16
};
String mSamplerNames[NumTextures];
@ -134,4 +134,4 @@ public:
DECLARE_CONOBJECT(ShaderData);
};
#endif // _SHADERTDATA_H_
#endif // _SHADERTDATA_H_