From a4d146c843570561ac83a83c6d76b5f358e3ba8e Mon Sep 17 00:00:00 2001 From: nashmuhandes Date: Thu, 9 Feb 2017 15:06:53 +0800 Subject: [PATCH] Added DONTCULLBACKFACES MODELDEF flag to forcefully disable backface culling on models --- src/gl/models/gl_models.cpp | 7 ++++++- src/gl/models/gl_models.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gl/models/gl_models.cpp b/src/gl/models/gl_models.cpp index 47283b51a..0bfc059a1 100644 --- a/src/gl/models/gl_models.cpp +++ b/src/gl/models/gl_models.cpp @@ -787,6 +787,10 @@ void gl_InitModels() map[c]=1; } } + else if (sc.Compare("dontcullbackfaces")) + { + smf.flags |= MDL_DONTCULLBACKFACES; + } else { sc.ScriptMessage("Unrecognized string \"%s\"", sc.String); @@ -949,8 +953,9 @@ void gl_RenderModel(GLSprite * spr) gl_RenderState.EnableTexture(true); // [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. + // [Nash] Don't do back face culling if explicitly specified in MODELDEF // TO-DO: Implement proper depth sorting. - if (!( spr->actor->RenderStyle == LegacyRenderStyles[STYLE_Normal] )) + if (!(spr->actor->RenderStyle == LegacyRenderStyles[STYLE_Normal]) && !(smf->flags & MDL_DONTCULLBACKFACES)) { glEnable(GL_CULL_FACE); glFrontFace(GL_CW); diff --git a/src/gl/models/gl_models.h b/src/gl/models/gl_models.h index f0267b891..c37b69b5e 100644 --- a/src/gl/models/gl_models.h +++ b/src/gl/models/gl_models.h @@ -370,6 +370,7 @@ enum MDL_USEACTORPITCH = 32, MDL_USEACTORROLL = 64, MDL_BADROTATION = 128, + MDL_DONTCULLBACKFACES = 256, }; struct FSpriteModelFrame