From a65e717d21b33193862e1c2a1ddd403aef135782 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Fri, 7 May 2021 18:58:48 +0200 Subject: [PATCH] vmt loader: handle rendertarget surfaces --- engine/gl/gl_shader.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/engine/gl/gl_shader.c b/engine/gl/gl_shader.c index 33a57daf..0391bdfa 100644 --- a/engine/gl/gl_shader.c +++ b/engine/gl/gl_shader.c @@ -7633,12 +7633,20 @@ static void Shader_GenerateFromVMT(parsestate_t *ps, vmtstate_t *st, const char if (*st->normalmap) Q_strlcatfz(script, &offset, sizeof(script), "\tnormalmap \"%s%s.vtf\"\n", strcmp(st->normalmap, "materials/")?"materials/":"", st->normalmap); } - else + else { - /* the default should just be unlit, let's not make any assumptions - eukara*/ - Q_strncpyz(st->type, "vmt_unlit", sizeof(st->type)); - Q_strlcatfz(script, &offset, sizeof(script), "\tprogram \"%s%s\"\n", st->type, progargs); - Q_strlcatfz(script, &offset, sizeof(script), "\tdiffusemap \"%s%s.vtf\"\n", strcmp(st->tex[0].name, "materials/")?"materials/":"", st->tex[0].name); + /* render-target camera/monitor - eukara*/ + if (!Q_strcasecmp(st->tex[0].name, "_rt_Camera")) { + Q_strlcatfz(script, &offset, sizeof(script), + "\t{\n" + "\t\tmap $rt:base\n" + "\t}\n", progargs); + } else { + /* the default should just be unlit, let's not make any assumptions - eukara*/ + Q_strncpyz(st->type, "vmt_unlit", sizeof(st->type)); + Q_strlcatfz(script, &offset, sizeof(script), "\tprogram \"%s%s\"\n", st->type, progargs); + Q_strlcatfz(script, &offset, sizeof(script), "\tdiffusemap \"%s%s.vtf\"\n", strcmp(st->tex[0].name, "materials/")?"materials/":"", st->tex[0].name); + } } if (*st->envmapmask)