]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_shared.c
also set TEXF_ALPHA on GL_ONE GL_ONE (don't ask)
[xonotic/darkplaces.git] / model_shared.c
index 5fcc15b6a829dbe65d1f559c435170194d0c578b..dc6e798e366d542c970434d0f5664c8e564d0532 100644 (file)
@@ -1970,7 +1970,28 @@ void Mod_LoadQ3Shaders(void)
                                                        shader.textureblendalpha = true;
                                                }
                                        }
-                                       layer->texflags = TEXF_ALPHA;
+                                       layer->texflags = 0;
+                                       if (layer->alphatest)
+                                               layer->texflags |= TEXF_ALPHA;
+                                       switch(layer->blendfunc[0])
+                                       {
+                                               case GL_SRC_ALPHA:
+                                               case GL_ONE_MINUS_SRC_ALPHA:
+                                                       layer->texflags |= TEXF_ALPHA;
+                                                       break;
+                                       }
+                                       switch(layer->blendfunc[1])
+                                       {
+                                               case GL_SRC_ALPHA:
+                                               case GL_ONE_MINUS_SRC_ALPHA:
+                                                       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))
@@ -2243,8 +2264,17 @@ void Mod_LoadQ3Shaders(void)
                                                shader.offsetmapping = OFFSETMAPPING_RELIEF;
                                        if (numparameters >= 3)
                                                shader.offsetscale = atof(parameter[2]);
-                                       if (numparameters >= 4)
-                                               shader.offsetbias = atof(parameter[3]);
+                                       if (numparameters >= 5)
+                                       {
+                                               if(!strcasecmp(parameter[3], "bias"))
+                                                       shader.offsetbias = atof(parameter[4]);
+                                               else if(!strcasecmp(parameter[3], "match"))
+                                                       shader.offsetbias = 1.0f - atof(parameter[4]);
+                                               else if(!strcasecmp(parameter[3], "match8"))
+                                                       shader.offsetbias = 1.0f - atof(parameter[4]) / 255.0f;
+                                               else if(!strcasecmp(parameter[3], "match16"))
+                                                       shader.offsetbias = 1.0f - atof(parameter[4]) / 65535.0f;
+                                       }
                                }
                                else if (!strcasecmp(parameter[0], "deformvertexes") && numparameters >= 2)
                                {