size_t size;
qboolean isindexbuffer;
qboolean isdynamic;
+ qboolean isindex16;
char name[MAX_QPATH];
}
r_meshbuffer_t;
float reflectfactor; // amount of reflection distort (1.0 = like the cvar specifies)
vec4_t reflectcolor4f; // color tint of reflection (including alpha factor)
float r_water_wateralpha; // additional wateralpha to apply when r_water is active
+ float r_water_waterscroll[2]; // water normalmapscrollblend - scale and speed
// offsetmapping
dpoffsetmapping_technique_t offsetmapping;
float offsetscale;
+ // polygonoffset (only used if Q3TEXTUREFLAG_POLYGONOFFSET)
+ float biaspolygonoffset, biaspolygonfactor;
+
// gloss
float specularscalemod;
float specularpowermod;
TEXTURELAYERTYPE_INVALID,
TEXTURELAYERTYPE_LITTEXTURE,
TEXTURELAYERTYPE_TEXTURE,
- TEXTURELAYERTYPE_FOG,
+ TEXTURELAYERTYPE_FOG
}
texturelayertype_t;
float reflectfactor; // amount of reflection distort (1.0 = like the cvar specifies)
vec4_t reflectcolor4f; // color tint of reflection (including alpha factor)
float r_water_wateralpha; // additional wateralpha to apply when r_water is active
+ float r_water_waterscroll[2]; // scale and speed
int camera_entity; // entity number for use by cameras
// offsetmapping
// lightmap textures
int num_originallightmaps;
int num_mergedlightmaps;
- int num_lightmapmergepower;
+ int num_lightmapmergedwidthpower;
+ int num_lightmapmergedheightpower;
+ int num_lightmapmergedwidthheightdeluxepower;
int num_lightmapmerge;
rtexture_t **data_lightmaps;
rtexture_t **data_deluxemaps;
int nummodelbrushes;
// BIH (Bounding Interval Hierarchy) for this (sub)model
bih_t collision_bih;
+ bih_t render_bih; // if not set, use collision_bih instead for rendering purposes too
// for md3 models
int num_tags;
int num_tagframes;
void(*DrawLight)(struct entity_render_s *ent, int numsurfaces, const int *surfacelist, const unsigned char *trispvs);
// trace a box against this model
void (*TraceBox)(struct model_s *model, const struct frameblend_s *frameblend, const struct skeleton_s *skeleton, struct trace_s *trace, const vec3_t start, const vec3_t boxmins, const vec3_t boxmaxs, const vec3_t end, int hitsupercontentsmask);
+ void (*TraceBrush)(struct model_s *model, const struct frameblend_s *frameblend, const struct skeleton_s *skeleton, struct trace_s *trace, struct colbrushf_s *start, struct colbrushf_s *end, int hitsupercontentsmask);
// trace a box against this model
void (*TraceLine)(struct model_s *model, const struct frameblend_s *frameblend, const struct skeleton_s *skeleton, struct trace_s *trace, const vec3_t start, const vec3_t end, int hitsupercontentsmask);
// trace a point against this model (like PointSuperContents)
model_brushq3_t brushq3;
// flags this model for offseting sounds to the model center (used by brush models)
int soundfromcenter;
+
+ // if set, the model contains light information (lightmap, or vertexlight)
+ qboolean lit;
}
dp_model_t;
qboolean Mod_LoadTextureFromQ3Shader(texture_t *texture, const char *name, qboolean warnmissing, qboolean fallback, int defaulttexflags);
extern cvar_t r_mipskins;
+extern cvar_t r_mipnormalmaps;
typedef struct skeleton_s
{
void Mod_CollisionBIH_TracePoint(dp_model_t *model, const struct frameblend_s *frameblend, const skeleton_t *skeleton, struct trace_s *trace, const vec3_t start, int hitsupercontentsmask);
void Mod_CollisionBIH_TraceLine(dp_model_t *model, const struct frameblend_s *frameblend, const skeleton_t *skeleton, struct trace_s *trace, const vec3_t start, const vec3_t end, int hitsupercontentsmask);
void Mod_CollisionBIH_TraceBox(dp_model_t *model, const struct frameblend_s *frameblend, const skeleton_t *skeleton, struct trace_s *trace, const vec3_t start, const vec3_t boxmins, const vec3_t boxmaxs, const vec3_t end, int hitsupercontentsmask);
+void Mod_CollisionBIH_TraceBrush(dp_model_t *model, const struct frameblend_s *frameblend, const skeleton_t *skeleton, struct trace_s *trace, struct colbrushf_s *start, struct colbrushf_s *end, int hitsupercontentsmask);
void Mod_CollisionBIH_TracePoint_Mesh(dp_model_t *model, const struct frameblend_s *frameblend, const skeleton_t *skeleton, struct trace_s *trace, const vec3_t start, int hitsupercontentsmask);
int Mod_CollisionBIH_PointSuperContents_Mesh(struct model_s *model, int frame, const vec3_t point);
-void Mod_MakeCollisionBIH(dp_model_t *model, qboolean userendersurfaces);
+bih_t *Mod_MakeCollisionBIH(dp_model_t *model, qboolean userendersurfaces, bih_t *out);
// alias models
struct frameblend_s;