]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_shared.c
fix interaction of blendfunc with rtlights
[xonotic/darkplaces.git] / model_shared.c
index 1dbb18316e7c861373899dba01181ed5d7d181aa..c4907d069621a0ac034ebdf8ef04fb88d1797b28 100644 (file)
@@ -1816,7 +1816,7 @@ void Mod_LoadQ3Shaders(void)
                                                                        else if (!strcasecmp(parameter[k+1], "GL_DST_COLOR"))
                                                                                layer->blendfunc[k] = GL_DST_COLOR;
                                                                        else if (!strcasecmp(parameter[k+1], "GL_DST_ALPHA"))
-                                                                               layer->blendfunc[k] = GL_ONE_MINUS_DST_ALPHA;
+                                                                               layer->blendfunc[k] = GL_DST_ALPHA;
                                                                        else if (!strcasecmp(parameter[k+1], "GL_ONE_MINUS_SRC_COLOR"))
                                                                                layer->blendfunc[k] = GL_ONE_MINUS_SRC_COLOR;
                                                                        else if (!strcasecmp(parameter[k+1], "GL_ONE_MINUS_SRC_ALPHA"))
@@ -1987,6 +1987,11 @@ void Mod_LoadQ3Shaders(void)
                                                        layer->texflags |= TEXF_ALPHA;
                                                        break;
                                        }
+
+                                       // nasty hack because DP treats this the same as GL_SRC_ALPHA GL_ONE
+                                       if(layer->blendfunc[0] == GL_ONE && layer->blendfunc[1] == GL_ONE)
+                                               layer->texflags |= TEXF_ALPHA;
+
                                        if (!(shader.surfaceparms & Q3SURFACEPARM_NOMIPMAPS))
                                                layer->texflags |= TEXF_MIPMAP;
                                        if (!(shader.textureflags & Q3TEXTUREFLAG_NOPICMIP))
@@ -2262,13 +2267,13 @@ void Mod_LoadQ3Shaders(void)
                                        if (numparameters >= 5)
                                        {
                                                if(!strcasecmp(parameter[3], "bias"))
-                                                       shader.offsetbias = atof(parameter[3]);
+                                                       shader.offsetbias = atof(parameter[4]);
                                                else if(!strcasecmp(parameter[3], "match"))
-                                                       shader.offsetbias = 1.0f - atof(parameter[3]);
+                                                       shader.offsetbias = 1.0f - atof(parameter[4]);
                                                else if(!strcasecmp(parameter[3], "match8"))
-                                                       shader.offsetbias = 1.0f - atof(parameter[3]) / 255.0f;
+                                                       shader.offsetbias = 1.0f - atof(parameter[4]) / 255.0f;
                                                else if(!strcasecmp(parameter[3], "match16"))
-                                                       shader.offsetbias = 1.0f - atof(parameter[3]) / 65535.0f;
+                                                       shader.offsetbias = 1.0f - atof(parameter[4]) / 65535.0f;
                                        }
                                }
                                else if (!strcasecmp(parameter[0], "deformvertexes") && numparameters >= 2)