Merge remote-tracking branch 'gzdoom/master'
This commit is contained in:
commit
3cc38c1d14
21 changed files with 242 additions and 88 deletions
|
|
@ -54,7 +54,7 @@ VSMatrix FHWModelRenderer::GetViewToWorldMatrix()
|
|||
return objectToWorldMatrix;
|
||||
}
|
||||
|
||||
void FHWModelRenderer::BeginDrawModel(FRenderStyle style, FSpriteModelFrame *smf, const VSMatrix &objectToWorldMatrix, bool mirrored)
|
||||
void FHWModelRenderer::BeginDrawModel(FRenderStyle style, int smf_flags, const VSMatrix &objectToWorldMatrix, bool mirrored)
|
||||
{
|
||||
state.SetDepthFunc(DF_LEqual);
|
||||
state.EnableTexture(true);
|
||||
|
|
@ -69,7 +69,7 @@ void FHWModelRenderer::BeginDrawModel(FRenderStyle style, FSpriteModelFrame *smf
|
|||
// This solves a few of the problems caused by the lack of depth sorting.
|
||||
// [Nash] Don't do back face culling if explicitly specified in MODELDEF
|
||||
// TO-DO: Implement proper depth sorting.
|
||||
if ((smf->flags & MDL_FORCECULLBACKFACES) || (!(style == DefaultRenderStyle()) && !(smf->flags & MDL_DONTCULLBACKFACES)))
|
||||
if ((smf_flags & MDL_FORCECULLBACKFACES) || (!(style == DefaultRenderStyle()) && !(smf_flags & MDL_DONTCULLBACKFACES)))
|
||||
{
|
||||
state.SetCulling((mirrored ^ di->drawctx->portalState.isMirrored()) ? Cull_CCW : Cull_CW);
|
||||
}
|
||||
|
|
@ -79,16 +79,16 @@ void FHWModelRenderer::BeginDrawModel(FRenderStyle style, FSpriteModelFrame *smf
|
|||
state.SetModelMatrix(objectToWorldMatrix, normalModelMatrix);
|
||||
}
|
||||
|
||||
void FHWModelRenderer::EndDrawModel(FRenderStyle style, FSpriteModelFrame *smf)
|
||||
void FHWModelRenderer::EndDrawModel(FRenderStyle style, int smf_flags)
|
||||
{
|
||||
state.SetBoneIndexBase(-1);
|
||||
state.SetModelMatrix(VSMatrix::identity(), VSMatrix::identity());
|
||||
state.SetDepthFunc(DF_Less);
|
||||
if ((smf->flags & MDL_FORCECULLBACKFACES) || (!(style == DefaultRenderStyle()) && !(smf->flags & MDL_DONTCULLBACKFACES)))
|
||||
if ((smf_flags & MDL_FORCECULLBACKFACES) || (!(style == DefaultRenderStyle()) && !(smf_flags & MDL_DONTCULLBACKFACES)))
|
||||
state.SetCulling(Cull_None);
|
||||
}
|
||||
|
||||
void FHWModelRenderer::BeginDrawHUDModel(FRenderStyle style, const VSMatrix &objectToWorldMatrix, bool mirrored, FSpriteModelFrame *smf)
|
||||
void FHWModelRenderer::BeginDrawHUDModel(FRenderStyle style, const VSMatrix &objectToWorldMatrix, bool mirrored, int smf_flags)
|
||||
{
|
||||
state.SetDepthFunc(DF_LEqual);
|
||||
state.SetDepthClamp(true);
|
||||
|
|
@ -104,7 +104,7 @@ void FHWModelRenderer::BeginDrawHUDModel(FRenderStyle style, const VSMatrix &obj
|
|||
// [BB] In case the model should be rendered translucent, do back face culling.
|
||||
// This solves a few of the problems caused by the lack of depth sorting.
|
||||
// TO-DO: Implement proper depth sorting.
|
||||
if (!(style == DefaultRenderStyle()) || (smf->flags & MDL_FORCECULLBACKFACES))
|
||||
if (!(style == DefaultRenderStyle()) || (smf_flags & MDL_FORCECULLBACKFACES))
|
||||
{
|
||||
state.SetCulling((mirrored ^ di->drawctx->portalState.isMirrored()) ? Cull_CW : Cull_CCW);
|
||||
}
|
||||
|
|
@ -114,13 +114,13 @@ void FHWModelRenderer::BeginDrawHUDModel(FRenderStyle style, const VSMatrix &obj
|
|||
state.SetModelMatrix(objectToWorldMatrix, normalModelMatrix);
|
||||
}
|
||||
|
||||
void FHWModelRenderer::EndDrawHUDModel(FRenderStyle style, FSpriteModelFrame *smf)
|
||||
void FHWModelRenderer::EndDrawHUDModel(FRenderStyle style, int smf_flags)
|
||||
{
|
||||
state.SetBoneIndexBase(-1);
|
||||
state.SetModelMatrix(VSMatrix::identity(), VSMatrix::identity());
|
||||
|
||||
state.SetDepthFunc(DF_Less);
|
||||
if (!(style == DefaultRenderStyle()) || (smf->flags & MDL_FORCECULLBACKFACES))
|
||||
if (!(style == DefaultRenderStyle()) || (smf_flags & MDL_FORCECULLBACKFACES))
|
||||
state.SetCulling(Cull_None);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue