X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=model_shared.h;h=64b4050817abd5ff3594fcac030f7d9de6319b67;hb=2d2d1188be78d94770e7f73b5ddf81e168edd90b;hp=918f8b788ffb5284593c67b235b37250ca5679cf;hpb=c5ff9341efbe92ce3c66b5c6f744a6efe49823fa;p=xonotic%2Fdarkplaces.git diff --git a/model_shared.h b/model_shared.h index 918f8b78..64b40508 100644 --- a/model_shared.h +++ b/model_shared.h @@ -101,27 +101,20 @@ typedef struct blendweights_s } blendweights_t; -typedef struct r_vertexposition_s -{ - // 12 bytes - float vertex3f[3]; -} -r_vertexposition_t; - typedef struct r_vertexgeneric_s { - // 24 bytes + // 36 bytes float vertex3f[3]; - unsigned char color4ub[4]; + float color4f[4]; float texcoord2f[2]; } r_vertexgeneric_t; typedef struct r_vertexmesh_s { - // 68 bytes + // 80 bytes float vertex3f[3]; - unsigned char color4ub[4]; + float color4f[4]; float texcoordtexture2f[2]; float texcoordlightmap2f[2]; float svector3f[3]; @@ -190,9 +183,8 @@ typedef struct surfmesh_s qboolean isanimated; // vertex and index buffers for rendering - r_vertexposition_t *vertexposition; r_vertexmesh_t *vertexmesh; - r_meshbuffer_t *vertexpositionbuffer; + r_meshbuffer_t *vertex3fbuffer; r_meshbuffer_t *vertexmeshbuffer; } surfmesh_t; @@ -244,9 +236,8 @@ typedef struct shadowmesh_s size_t vbooffset_texcoord2f; // vertex/index buffers for rendering // (created by Mod_ShadowMesh_Finish if possible) - r_vertexposition_t *vertexposition; r_vertexmesh_t *vertexmesh; // usually NULL - r_meshbuffer_t *vertexpositionbuffer; + r_meshbuffer_t *vertex3fbuffer; r_meshbuffer_t *vertexmeshbuffer; // usually NULL } shadowmesh_t; @@ -454,12 +445,16 @@ typedef struct q3shaderinfo_s // dp-specific additions: // shadow control + qboolean dpnortlight; qboolean dpshadow; qboolean dpnoshadow; // add collisions to all triangles of the surface qboolean dpmeshcollisions; + // kill shader based on cvar checks + qboolean dpshaderkill; + // fake reflection char dpreflectcube[Q3PATHLENGTH]; @@ -476,11 +471,18 @@ typedef struct q3shaderinfo_s // offsetmapping dpoffsetmapping_technique_t offsetmapping; float offsetscale; + float offsetbias; // 0 is normal, 1 leads to alpha 0 being neutral and alpha 1 pushing "out" + + // polygonoffset (only used if Q3TEXTUREFLAG_POLYGONOFFSET) + float biaspolygonoffset, biaspolygonfactor; // gloss float specularscalemod; float specularpowermod; -#define Q3SHADERINFO_COMPARE_END specularpowermod + + // rtlightning ambient addition + float rtlightambient; +#define Q3SHADERINFO_COMPARE_END rtlightambient } q3shaderinfo_t; @@ -614,10 +616,14 @@ typedef struct texture_s // offsetmapping dpoffsetmapping_technique_t offsetmapping; float offsetscale; + float offsetbias; // gloss float specularscalemod; float specularpowermod; + + // diffuse and ambient + float rtlightambient; } texture_t; @@ -1028,6 +1034,8 @@ typedef struct model_s void (*TracePoint)(struct model_s *model, const struct frameblend_s *frameblend, const struct skeleton_s *skeleton, struct trace_s *trace, const vec3_t start, int hitsupercontentsmask); // find the supercontents value at a point in this model int (*PointSuperContents)(struct model_s *model, int frame, const vec3_t point); + // trace a line against geometry in this model and report correct texture (used by r_shadow_bouncegrid) + void (*TraceLineAgainstSurfaces)(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); // fields belonging to some types of model model_sprite_t sprite; model_brush_t brush; @@ -1053,6 +1061,7 @@ extern unsigned char *mod_base; //extern cvar_t gl_subdivide_size; // texture fullbrights extern cvar_t r_fullbrights; +extern cvar_t r_enableshadowvolumes; void Mod_Init (void); void Mod_Reload (void); @@ -1101,13 +1110,6 @@ qboolean Mod_LoadTextureFromQ3Shader(texture_t *texture, const char *name, qbool extern cvar_t r_mipskins; extern cvar_t r_mipnormalmaps; -typedef struct skeleton_s -{ - const dp_model_t *model; - matrix4x4_t *relativetransforms; -} -skeleton_t; - typedef struct skinfileitem_s { struct skinfileitem_s *next;