Squashed commit of the following:

commit 678d0ea2357915c6502af90083f1d34b6b21b7b4
Author: AtomicWalrus <headlesschickens.inc@gmail.com>
Date:   Mon Feb 20 20:46:15 2023 -0700

    Removed some commented-out code

commit 4a149157f7a7b781e2246b1417b144625ff559cd
Author: AtomicWalrus <headlesschickens.inc@gmail.com>
Date:   Mon Feb 20 20:42:03 2023 -0700

    Remove un-used instance of the blendHardness var

commit e5dc42adef00ed371cbc89b731ae16889ba68d9a
Author: AtomicWalrus <headlesschickens.inc@gmail.com>
Date:   Mon Feb 20 18:57:51 2023 -0700

    Cleanup un-needed conditionals and other leftover code

commit dccd10010e058f00cd41f5c5c111443f9cb71721
Author: AtomicWalrus <headlesschickens.inc@gmail.com>
Date:   Mon Feb 20 18:05:31 2023 -0700

    Use validator instead of protected field (2)

commit 4cc7f1d32fcc6ab788de54bb38763283fbd5533e
Author: AtomicWalrus <headlesschickens.inc@gmail.com>
Date:   Mon Feb 20 18:03:40 2023 -0700

    Use validator instead of protected field

commit e8d7e1731e383a99e8a0539d23a3b04f9c252491
Author: AtomicWalrus <headlesschickens.inc@gmail.com>
Date:   Mon Feb 20 15:34:48 2023 -0700

    Terrain macro textures and blending hardness
This commit is contained in:
AtomicWalrus 2023-02-20 20:47:46 -07:00
parent 2d946f693a
commit 13fec9bb80
10 changed files with 333 additions and 89 deletions

View file

@ -548,7 +548,7 @@ bool TerrainCellMaterial::_initShader(bool deferredMat,
mDetailInfoVArrayConst = mShader->getShaderConstHandle("$detailScaleAndFade");
mDetailInfoPArrayConst = mShader->getShaderConstHandle("$detailIdStrengthParallax");
mMacroInfoVArrayConst = mShader->getShaderConstHandle("$macroIdStrengthParallax");
mMacroInfoVArrayConst = mShader->getShaderConstHandle("$macroScaleAndFade");
mMacroInfoPArrayConst = mShader->getShaderConstHandle("$macroIdStrengthParallax");
mDetailTexArrayConst = mShader->getShaderConstHandle("$detailMapSampler");
@ -637,6 +637,7 @@ bool TerrainCellMaterial::_initShader(bool deferredMat,
mMaterialInfos[i]->mBlendDepthConst = mShader->getShaderConstHandle(avar("$blendDepth%d", i));
mMaterialInfos[i]->mBlendContrastConst = mShader->getShaderConstHandle(avar("$blendContrast%d", i));
mMaterialInfos[i]->mBlendHardnessConst = mShader->getShaderConstHandle(avar("$blendHardness%d", i));
}
// If we're doing deferred it requires some
@ -689,6 +690,9 @@ void TerrainCellMaterial::_updateMaterialConsts( )
AlignedArray<Point4F> detailInfoArray(detailMatCount, sizeof(Point4F));
AlignedArray<Point4F> detailScaleAndFadeArray(detailMatCount, sizeof(Point4F));
AlignedArray<Point4F> macroInfoArray(detailMatCount, sizeof(Point4F));
AlignedArray<Point4F> macroScaleAndFadeArray(detailMatCount, sizeof(Point4F));
int detailIndex = 0;
for (MaterialInfo* matInfo : mMaterialInfos)
{
@ -745,12 +749,45 @@ void TerrainCellMaterial::_updateMaterialConsts( )
{
mConsts->setSafe(matInfo->mBlendContrastConst, matInfo->mat->getBlendContrast());
}
if (matInfo->mBlendHardnessConst != NULL)
{
mConsts->setSafe(matInfo->mBlendHardnessConst, matInfo->mat->getBlendHardness());
}
// macro texture info
F32 macroSize = matInfo->mat->getMacroSize();
F32 macroScale = 1.0f;
if (!mIsZero(macroSize))
macroScale = mTerrain->getWorldBlockSize() / macroSize;
// Scale the distance by the global scalar.
const F32 macroDistance = mTerrain->smDetailScale * matInfo->mat->getMacroDistance();
Point4F macroScaleAndFade(macroScale,
-macroScale,
macroDistance,
0);
if (!mIsZero(macroDistance))
macroScaleAndFade.w = 1.0f / macroDistance;
Point4F macroIdStrengthParallax(matInfo->layerId,
matInfo->mat->getMacroStrength(),
0, 0);
macroScaleAndFadeArray[detailIndex] = macroScaleAndFade;
macroInfoArray[detailIndex] = macroIdStrengthParallax;
detailIndex++;
}
mConsts->setSafe(mDetailInfoVArrayConst, detailScaleAndFadeArray);
mConsts->setSafe(mDetailInfoPArrayConst, detailInfoArray);
mConsts->setSafe(mMacroInfoVArrayConst, macroScaleAndFadeArray);
mConsts->setSafe(mMacroInfoPArrayConst, macroInfoArray);
}
bool TerrainCellMaterial::setupPass( const SceneRenderState *state,