From 60ba88c33b996c1dc583819493355c89805fe5d1 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Fri, 7 May 2021 00:10:15 +0200 Subject: [PATCH] change vmt_unlit to the default fallback for unknown vmt shaders --- engine/gl/gl_shader.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/engine/gl/gl_shader.c b/engine/gl/gl_shader.c index 4a3b21eb..33a57daf 100644 --- a/engine/gl/gl_shader.c +++ b/engine/gl/gl_shader.c @@ -7544,6 +7544,7 @@ static void Shader_GenerateFromVMT(parsestate_t *ps, vmtstate_t *st, const char size_t offset = 0; char script[8192]; char *progargs = ""; + if (!*st->tex[0].name) //fill in a default... Q_strncpyz(st->tex[0].name, shortname, sizeof(st->tex[0].name)); @@ -7567,18 +7568,13 @@ static void Shader_GenerateFromVMT(parsestate_t *ps, vmtstate_t *st, const char } else if (!Q_strcasecmp(st->type, "DecalModulate")) { - Q_strncpyz(st->type, "vmt_vertexlit", sizeof(st->type)); - Q_strlcatfz(script, &offset, sizeof(script), "\tprogram \"%s%s\"\n", st->type, progargs); + Q_strlcatfz(script, &offset, sizeof(script), + "\t{\n" + "\t\tprogram \"vmt_vertexlit\"\n" + "\t\tblendFunc gl_dst_color gl_one_minus_src_alpha\n" + "\t}\n", progargs); Q_strlcatfz(script, &offset, sizeof(script), "\tdiffusemap \"%s%s.vtf\"\n", strcmp(st->tex[0].name, "materials/")?"materials/":"", st->tex[0].name); Q_strlcatfz(script, &offset, sizeof(script), "\tpolygonOffset 1\n"); - //Q_strncpyz(st->blendfunc, "dst_color one_minus_src_alpha", sizeof(st->blendfunc)); - st->blendfunc = "dst_color one_minus_src_alpha\n"; - } - else if (!Q_strcasecmp(st->type, "UnlitGeneric")) - { - 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); } else if (!Q_strcasecmp(st->type, "Water")) { @@ -7621,7 +7617,7 @@ 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 if (!Q_strcasecmp(st->type, "LightmappedGeneric")) { /* reflectmask from diffuse map alpha */ if (*st->envmap && st->envfrombase) @@ -7637,6 +7633,14 @@ 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 + { + /* 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) Q_strlcatfz(script, &offset, sizeof(script), "\treflectmask \"%s%s.vtf\"\n", strcmp(st->envmapmask, "materials/")?"materials/":"", st->envmapmask); if (*st->envmap)