2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-08 23:07:42 +00:00

More bug fixes

This commit is contained in:
Jack Andersen
2018-05-18 19:16:08 -10:00
parent 979a54a8a8
commit 5f03362149
9 changed files with 26 additions and 21 deletions

View File

@@ -632,6 +632,8 @@ void CBooModel::DrawSurface(const CBooSurface& surf, const CModelFlags& flags) c
if (data.flags.shadowOccluderMesh() && !g_DrawingOccluders)
return;
bool noZWrite = flags.m_noZWrite || !data.flags.depthWrite();
const std::vector<boo::ObjToken<boo::IShaderDataBinding>>& extendeds = inst.m_shaderDataBindings[surf.selfIdx];
EExtendedShader extended = EExtendedShader::Flat;
if (flags.m_extendedShader == EExtendedShader::Lighting)
@@ -640,28 +642,28 @@ void CBooModel::DrawSurface(const CBooSurface& surf, const CModelFlags& flags) c
{
/* Override shader if originally opaque (typical for FRME models) */
if (flags.x0_blendMode > 6)
extended = flags.m_noCull ? (flags.m_noZWrite ?
extended = flags.m_noCull ? (noZWrite ?
EExtendedShader::ForcedAdditiveNoCullNoZWrite :
EExtendedShader::ForcedAdditiveNoCull) :
(flags.m_noZWrite ?
(noZWrite ?
EExtendedShader::ForcedAdditiveNoZWrite :
EExtendedShader::ForcedAdditive);
else if (flags.x0_blendMode > 4)
extended = flags.m_noCull ? (flags.m_noZWrite ?
extended = flags.m_noCull ? (noZWrite ?
EExtendedShader::ForcedAlphaNoCullNoZWrite :
EExtendedShader::ForcedAlphaNoCull) :
(flags.m_noZWrite ?
(noZWrite ?
EExtendedShader::ForcedAlphaNoZWrite :
EExtendedShader::ForcedAlpha);
else
extended = flags.m_noCull ? (flags.m_noZWrite ?
extended = flags.m_noCull ? (noZWrite ?
EExtendedShader::ForcedAlphaNoCullNoZWrite :
EExtendedShader::ForcedAlphaNoCull) :
(flags.m_noZWrite ?
(noZWrite ?
EExtendedShader::ForcedAlphaNoZWrite :
EExtendedShader::Lighting);
}
else if (flags.m_noCull && flags.m_noZWrite)
else if (flags.m_noCull && noZWrite)
{
/* Substitute no-cull,no-zwrite pipeline if available */
if (data.heclIr.m_blendDst == boo::BlendFactor::One)
@@ -677,7 +679,7 @@ void CBooModel::DrawSurface(const CBooSurface& surf, const CModelFlags& flags) c
else
extended = EExtendedShader::ForcedAlphaNoCull;
}
else if (flags.m_noZWrite)
else if (noZWrite)
{
/* Substitute no-zwrite pipeline if available */
if (data.heclIr.m_blendDst == boo::BlendFactor::One)