]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_shared.c
new flag CACHEPICFLAG_NOCLAMP; use it for R_PolygonBegin polygons
[xonotic/darkplaces.git] / model_shared.c
index f54b6da0de902b7d33c755b50d0601501e8cd9b8..7de6009601f20c4a33a8645710077781f141b976 100644 (file)
@@ -113,7 +113,7 @@ static void mod_newmap(void)
                                        ssize = (surface->lightmapinfo->extents[0] >> 4) + 1;
                                        tsize = (surface->lightmapinfo->extents[1] >> 4) + 1;
                                        memset(surface->lightmapinfo->stainsamples, 255, ssize * tsize * 3);
-                                       surface->cached_dlight = true;
+                                       mod->brushq1.lightmapupdateflags[surfacenum] = true;
                                }
                        }
                }
@@ -1582,6 +1582,10 @@ void Mod_LoadQ3Shaders(void)
                                        else
                                                Con_DPrintf("%s parsing warning: unknown surfaceparm \"%s\"\n", search->filenames[fileindex], parameter[1]);
                                }
+                               else if (!strcasecmp(parameter[0], "dpshadow"))
+                                       shader.dpshadow = true;
+                               else if (!strcasecmp(parameter[0], "dpnoshadow"))
+                                       shader.dpnoshadow = true;
                                else if (!strcasecmp(parameter[0], "sky") && numparameters >= 2)
                                {
                                        // some q3 skies don't have the sky parm set
@@ -1832,6 +1836,10 @@ nothing                GL_ZERO GL_ONE
                                }
                        }
                }
+               if (shader->dpshadow)
+                       texture->basematerialflags &= ~MATERIALFLAG_NOSHADOW;
+               if (shader->dpnoshadow)
+                       texture->basematerialflags |= MATERIALFLAG_NOSHADOW;
                memcpy(texture->deforms, shader->deforms, sizeof(texture->deforms));
                texture->reflectmin = shader->reflectmin;
                texture->reflectmax = shader->reflectmax;
@@ -1868,7 +1876,13 @@ nothing                GL_ZERO GL_ONE
                texture->numskinframes = 1;
                if (fallback)
                {
-                       if (!(texture->skinframes[0] = R_SkinFrame_LoadExternal(texture->name, defaulttexflags, false)))
+                       qboolean has_alpha;
+                       if ((texture->skinframes[0] = R_SkinFrame_LoadExternal_CheckAlpha(texture->name, defaulttexflags, false, &has_alpha)))
+                       {
+                               if(has_alpha && (defaulttexflags & TEXF_ALPHA))
+                                       texture->basematerialflags |= MATERIALFLAG_ALPHA | MATERIALFLAG_BLENDED | MATERIALFLAG_NOSHADOW;
+                       }
+                       else
                                success = false;
                }
                else