adds alphatest shadows for translucent objects

leverage the fact shadergen spits out a modified material per pass, in this instance the shadow pass, to basically flip the translucent aspect off if you've got both translucency and alphatesting flipped on.
This commit is contained in:
AzaezelX 2020-03-01 10:47:25 -06:00
parent 9c381caea2
commit ff4b025c2c
5 changed files with 7 additions and 3 deletions

View file

@ -260,7 +260,7 @@ void ShadowRenderPassManager::addInst( RenderInst *inst )
return;
const BaseMaterialDefinition *mat = meshRI->matInst->getMaterial();
if ( !mat->castsShadows() || mat->isTranslucent() )
if ( !mat->castsShadows() || (mat->isTranslucent() && !mat->isAlphatest()))
{
// Do not add this instance, return here and avoid the default behavior
// of calling up to Parent::addInst()

View file

@ -190,6 +190,8 @@ void ShadowMaterialHook::_overrideFeatures( ProcessedMaterial *mat,
fd.features.removeFeature( MFT_TexAnim );
fd.features.removeFeature( MFT_DiffuseMap );
}
else
fd.features.removeFeature(MFT_IsTranslucent);
// HACK: Need to figure out how to enable these
// suckers without this override call!