]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_shared.h
Offsetmapping now could be customized on per-texture basis. Added mod_q3shader_defaul...
[xonotic/darkplaces.git] / model_shared.h
index 4452613851466e9171efe4ebe1babecf216008e3..61e833c496c1d7a0c8e24e90a05e34d2f6925e23 100644 (file)
@@ -371,6 +371,15 @@ typedef struct q3shaderinfo_deform_s
 }
 q3shaderinfo_deform_t;
 
+typedef enum dpoffsetmapping_technique_s
+{
+       OFFSETMAPPING_OFF,                      // none
+       OFFSETMAPPING_DEFAULT,          // cvar-set
+       OFFSETMAPPING_LINEAR,           // linear
+       OFFSETMAPPING_RELIEF            // relief
+}dpoffsetmapping_technique_t;
+
+
 typedef struct q3shaderinfo_s
 {
        char name[Q3PATHLENGTH];
@@ -404,6 +413,10 @@ typedef struct q3shaderinfo_s
        vec4_t reflectcolor4f; // color tint of reflection (including alpha factor)
        float r_water_wateralpha; // additional wateralpha to apply when r_water is active
 
+       // offsetmapping
+       dpoffsetmapping_technique_t offsetmapping;
+       float offsetscale;
+
        // gloss
        float specularscalemod;
        float specularpowermod;
@@ -536,11 +549,15 @@ typedef struct texture_s
        vec4_t reflectcolor4f; // color tint of reflection (including alpha factor)
        float r_water_wateralpha; // additional wateralpha to apply when r_water is active
 
+       // offsetmapping
+       dpoffsetmapping_technique_t offsetmapping;
+       float offsetscale;
+
        // gloss
        float specularscalemod;
        float specularpowermod;
 }
-texture_t;
+ texture_t;
 
 typedef struct mtexinfo_s
 {
@@ -912,7 +929,7 @@ typedef struct model_s
        // data type of model
        const char              *modeldatatypestring;
        // generates vertex data for a given frameblend
-       void(*AnimateVertices)(const struct model_s *model, const struct frameblend_s *frameblend, const struct skeleton_s *skeleton, float *vertex3f, float *normal3f, float *svector3f, float *tvector3f);
+       void(*AnimateVertices)(const struct model_s * RESTRICT model, const struct frameblend_s * RESTRICT frameblend, const struct skeleton_s *skeleton, float * RESTRICT vertex3f, float * RESTRICT normal3f, float * RESTRICT svector3f, float * RESTRICT tvector3f);
        // draw the model's sky polygons (only used by brush models)
        void(*DrawSky)(struct entity_render_s *ent);
        // draw refraction/reflection textures for the model's water polygons (only used by brush models)
@@ -1087,6 +1104,14 @@ void R_Q1BSP_CompileShadowVolume(struct entity_render_s *ent, vec3_t relativelig
 void R_Q1BSP_DrawShadowVolume(struct entity_render_s *ent, const vec3_t relativelightorigin, const vec3_t relativelightdirection, float lightradius, int numsurfaces, const int *surfacelist, const vec3_t lightmins, const vec3_t lightmaxs);
 void R_Q1BSP_DrawLight(struct entity_render_s *ent, int numsurfaces, const int *surfacelist, const unsigned char *trispvs);
 
+// Collision optimization using Bounding Interval Hierarchy
+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_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);
+
 // alias models
 struct frameblend_s;
 struct skeleton_s;