typedef struct r_vertexmesh_s
{
- // 80 bytes
+ // 88 bytes
float vertex3f[3];
float color4f[4];
float texcoordtexture2f[2];
float svector3f[3];
float tvector3f[3];
float normal3f[3];
+ unsigned char skeletalindex4ub[4];
+ unsigned char skeletalweight4ub[4];
}
r_vertexmesh_t;
float *data_texcoordtexture2f; // float[verts*2] texcoords for surface texture
float *data_texcoordlightmap2f; // float[verts*2] texcoords for lightmap texture
float *data_lightmapcolor4f;
+ unsigned char *data_skeletalindex4ub;
+ unsigned char *data_skeletalweight4ub;
int *data_lightmapoffsets; // index into surface's lightmap samples for vertex lighting
// vertex buffer object (stores geometry in video memory)
r_meshbuffer_t *vbo_vertexbuffer;
size_t vbooffset_texcoordtexture2f;
size_t vbooffset_texcoordlightmap2f;
size_t vbooffset_lightmapcolor4f;
+ size_t vbooffset_skeletalindex4ub;
+ size_t vbooffset_skeletalweight4ub;
// morph blending, these are zero if model is skeletal or static
int num_morphframes;
struct md3vertex_s *data_morphmd3vertex;
#define Q3TEXTUREFLAG_REFLECTION 512
#define Q3TEXTUREFLAG_WATERSHADER 1024
#define Q3TEXTUREFLAG_CAMERA 2048
+#define Q3TEXTUREFLAG_TRANSPARENTSORT 4096
#define Q3PATHLENGTH 64
#define TEXTURE_MAXFRAMES 64
OFFSETMAPPING_RELIEF // relief
}dpoffsetmapping_technique_t;
+typedef enum dptransparentsort_category_e
+{
+ TRANSPARENTSORT_SKY,
+ TRANSPARENTSORT_DISTANCE,
+ TRANSPARENTSORT_HUD,
+}dptransparentsortcategory_t;
typedef struct q3shaderinfo_s
{
// polygonoffset (only used if Q3TEXTUREFLAG_POLYGONOFFSET)
float biaspolygonoffset, biaspolygonfactor;
+ // transparent sort category
+ dptransparentsortcategory_t transparentsort;
+
// gloss
float specularscalemod;
float specularpowermod;
- // rtlightning ambient addition
+ // rtlighting ambient addition
float rtlightambient;
#define Q3SHADERINFO_COMPARE_END rtlightambient
}
float offsetscale;
float offsetbias;
+ // transparent sort category
+ dptransparentsortcategory_t transparentsort;
+
// gloss
float specularscalemod;
float specularpowermod;