]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_shared.h
reenabled R_UpdateAllTextureInfo calls when lighting the world model
[xonotic/darkplaces.git] / model_shared.h
index 058073fdd8a10eb55ca9cbc2cb41d1f7dcd3ab4f..9ec9bf16e545ab6f55af169b358b4aa83965546e 100644 (file)
@@ -90,7 +90,13 @@ typedef struct overridetagnameset_s
 overridetagnameset_t;
 
 struct md3vertex_s;
-struct trivertex_s;
+struct trivertx_s;
+typedef struct texvecvertex_s
+{
+       signed char svec[3];
+       signed char tvec[3];
+}
+texvecvertex_t;
 
 // used for mesh lists in q1bsp/q3bsp map models
 // (the surfaces reference portions of these meshes)
@@ -125,6 +131,7 @@ typedef struct surfmesh_s
        int num_morphframes;
        struct md3vertex_s *data_morphmd3vertex;
        struct trivertx_s *data_morphmdlvertex;
+       struct texvecvertex_s *data_morphtexvecvertex;
        float *data_morphmd2framesize6f;
        float num_morphmdlframescale[3];
        float num_morphmdlframetranslate[3];
@@ -187,8 +194,9 @@ shadowmesh_t;
 #define Q3TEXTUREFLAG_TWOSIDED 1
 #define Q3TEXTUREFLAG_NOPICMIP 16
 #define Q3TEXTUREFLAG_POLYGONOFFSET 32
-#define Q3TEXTUREFLAG_REFLECTION 256
-#define Q3TEXTUREFLAG_WATERSHADER 512
+#define Q3TEXTUREFLAG_REFRACTION 256
+#define Q3TEXTUREFLAG_REFLECTION 512
+#define Q3TEXTUREFLAG_WATERSHADER 1024
 
 #define Q3PATHLENGTH 64
 #define TEXTURE_MAXFRAMES 64
@@ -333,7 +341,7 @@ typedef struct q3shaderinfo_layer_s
        int clampmap;
        float framerate;
        int numframes;
-       char texturename[TEXTURE_MAXFRAMES][Q3PATHLENGTH];
+       char** texturename;
        int blendfunc[2];
        q3shaderinfo_layer_rgbgen_t rgbgen;
        q3shaderinfo_layer_alphagen_t alphagen;
@@ -360,15 +368,17 @@ typedef struct q3shaderinfo_s
        qboolean lighting;
        qboolean vertexalpha;
        qboolean textureblendalpha;
-       q3shaderinfo_layer_t *primarylayer, *backgroundlayer;
+       int primarylayer, backgroundlayer;
        q3shaderinfo_layer_t layers[Q3SHADER_MAXLAYERS];
        char skyboxname[Q3PATHLENGTH];
        q3shaderinfo_deform_t deforms[Q3MAXDEFORMS];
 
-       vec3_t reflectcolor, refractcolor;
-       float refractmin; // when refraction is used, minimum amount of reflection (when looking straight down)
-       float refractmax; // when refraction is used, maximum amount of reflection (when looking parallel to water)
-       float refractfactor; // amount of refraction distort (1.0 = like the cvar specifies; note that reflection distort is not configurable because that's what the bumpmap should do)
+       float reflectmin; // when refraction is used, minimum amount of reflection (when looking straight down)
+       float reflectmax; // when refraction is used, maximum amount of reflection (when looking parallel to water)
+       float refractfactor; // amount of refraction distort (1.0 = like the cvar specifies)
+       vec4_t refractcolor4f; // color tint of refraction (including alpha factor)
+       float reflectfactor; // amount of reflection distort (1.0 = like the cvar specifies)
+       vec4_t reflectcolor4f; // color tint of reflection (including alpha factor)
 }
 q3shaderinfo_t;
 
@@ -419,11 +429,10 @@ typedef struct texture_s
        // current material flags (updated each bmodel render)
        int currentmaterialflags;
 
-       // current PolygonOffset values for rendering this material
-       float currentpolygonfactor;
-       float currentpolygonoffset;
-       float basepolygonfactor;
-       float basepolygonoffset;
+       // PolygonOffset values for rendering this material
+       // (these are added to the r_refdef values and submodel values)
+       float biaspolygonfactor;
+       float biaspolygonoffset;
 
        // textures to use when rendering this material
        skinframe_t *currentskinframe;
@@ -483,10 +492,12 @@ typedef struct texture_s
        int textureflags;
 
        // reflection
-       vec3_t reflectcolor, refractcolor;
-       float refractmin; // when refraction is used, minimum amount of reflection (when looking straight down)
-       float refractmax; // when refraction is used, maximum amount of reflection (when looking parallel to water)
-       float refractfactor; // amount of refraction distort (1.0 = like the cvar specifies; note that reflection distort is not configurable because that's what the bumpmap should do)
+       float reflectmin; // when refraction is used, minimum amount of reflection (when looking straight down)
+       float reflectmax; // when refraction is used, maximum amount of reflection (when looking parallel to water)
+       float refractfactor; // amount of refraction distort (1.0 = like the cvar specifies)
+       vec4_t refractcolor4f; // color tint of refraction (including alpha factor)
+       float reflectfactor; // amount of reflection distort (1.0 = like the cvar specifies)
+       vec4_t reflectcolor4f; // color tint of reflection (including alpha factor)
 }
 texture_t;
 
@@ -568,6 +579,15 @@ model_sprite_t;
 
 struct trace_s;
 
+typedef struct model_brush_lightstyleinfo_s
+{
+       int style;
+       int value;
+       int numsurfaces;
+       int *surfacelist;
+}
+model_brush_lightstyleinfo_t;
+
 typedef struct model_brush_s
 {
        // true if this model is a HalfLife .bsp file
@@ -661,9 +681,6 @@ model_brush_t;
 
 typedef struct model_brushq1_s
 {
-       // lightmap format, set to r_lightmaprgba when model is loaded
-       int                             lightmaprgba;
-
        dmodel_t                *submodels;
 
        int                             numvertexes;
@@ -692,11 +709,8 @@ typedef struct model_brushq1_s
        unsigned char                   *nmaplightdata; // deluxemap file
 
        // lightmap update chains for light styles
-       int                             light_styles;
-       unsigned char                   *light_style;
-       int                             *light_stylevalue;
-       msurface_t              ***light_styleupdatechains;
-       msurface_t              **light_styleupdatechainsbuffer;
+       int                             num_lightstyles;
+       model_brush_lightstyleinfo_t *data_lightstyleinfo;
 }
 model_brushq1_t;