From efea07f488e2afc1f8f145474d19d87d064aece7 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Mon, 14 Aug 2023 14:53:43 +0900 Subject: [PATCH] [gl,glsl,sw] Skip onlyshadows alias models While the gl renderer does (or did) have it's attempt at shadows, the others don't even try, thus the onlyshadows-marked player model doesn't work so well (looks rather goofy seeing the arms like that). --- libs/video/renderer/gl/gl_mod_alias.c | 4 ++++ libs/video/renderer/glsl/glsl_alias.c | 3 +++ libs/video/renderer/sw/sw_ralias.c | 3 +++ 3 files changed, 10 insertions(+) diff --git a/libs/video/renderer/gl/gl_mod_alias.c b/libs/video/renderer/gl/gl_mod_alias.c index 024992d10..d575c0458 100644 --- a/libs/video/renderer/gl/gl_mod_alias.c +++ b/libs/video/renderer/gl/gl_mod_alias.c @@ -415,6 +415,10 @@ gl_R_DrawAliasModel (entity_t e) renderer_t *renderer = Ent_GetComponent (e.id, scene_renderer, e.reg); model_t *model = renderer->model; + if (renderer->onlyshadows) { + return; + } + radius = model->radius; transform_t transform = Entity_Transform (e); origin = Transform_GetWorldPosition (transform); diff --git a/libs/video/renderer/glsl/glsl_alias.c b/libs/video/renderer/glsl/glsl_alias.c index d9d8d6a52..2186b3ed2 100644 --- a/libs/video/renderer/glsl/glsl_alias.c +++ b/libs/video/renderer/glsl/glsl_alias.c @@ -242,6 +242,9 @@ glsl_R_DrawAlias (entity_t ent) calc_lighting (ent, &ambient, &shadelight, lightvec); renderer_t *renderer = Ent_GetComponent (ent.id, scene_renderer, ent.reg); + if (renderer->onlyshadows) { + return; + } model_t *model = renderer->model; if (!(hdr = model->aliashdr)) hdr = Cache_Get (&model->cache); diff --git a/libs/video/renderer/sw/sw_ralias.c b/libs/video/renderer/sw/sw_ralias.c index f0e51073b..efa36c2cf 100644 --- a/libs/video/renderer/sw/sw_ralias.c +++ b/libs/video/renderer/sw/sw_ralias.c @@ -617,6 +617,9 @@ R_AliasDrawModel (entity_t ent, alight_t *lighting) r_amodels_drawn++; renderer_t *renderer = Ent_GetComponent (ent.id, scene_renderer, ent.reg); + if (renderer->onlyshadows) { + return; + } if (!(paliashdr = renderer->model->aliashdr)) paliashdr = Cache_Get (&renderer->model->cache); pmdl = (mdl_t *) ((byte *) paliashdr + paliashdr->model);