#include "svbsp.h"
-typedef enum gl20_texunit_e
-{
- // postprocess shaders, and generic shaders:
- GL20TU_FIRST = 0,
- GL20TU_SECOND = 1,
- GL20TU_GAMMARAMPS = 2,
- // standard material properties
- GL20TU_NORMAL = 0,
- GL20TU_COLOR = 1,
- GL20TU_GLOSS = 2,
- GL20TU_GLOW = 3,
- // material properties for a second material
- GL20TU_SECONDARY_NORMAL = 4,
- GL20TU_SECONDARY_COLOR = 5,
- GL20TU_SECONDARY_GLOSS = 6,
- GL20TU_SECONDARY_GLOW = 7,
- // material properties for a colormapped material
- // conflicts with secondary material
- GL20TU_PANTS = 4,
- GL20TU_SHIRT = 7,
- // fog fade in the distance
- GL20TU_FOGMASK = 8,
- // compiled ambient lightmap and deluxemap
- GL20TU_LIGHTMAP = 9,
- GL20TU_DELUXEMAP = 10,
- // refraction, used by water shaders
- GL20TU_REFRACTION = 3,
- // reflection, used by water shaders, also with normal material rendering
- // conflicts with secondary material
- GL20TU_REFLECTION = 7,
- // rtlight attenuation (distance fade) and cubemap filter (projection texturing)
- // conflicts with lightmap/deluxemap
- GL20TU_ATTENUATION = 9,
- GL20TU_CUBE = 10,
- GL20TU_SHADOWMAP2D = 15,
- GL20TU_CUBEPROJECTION = 12,
- // rtlight prepass data (screenspace depth and normalmap)
-// GL20TU_UNUSED1 = 13,
- GL20TU_SCREENNORMALMAP = 14,
- // lightmap prepass data (screenspace diffuse and specular from lights)
- GL20TU_SCREENDIFFUSE = 11,
- GL20TU_SCREENSPECULAR = 12,
- // fake reflections
- GL20TU_REFLECTMASK = 5,
- GL20TU_REFLECTCUBE = 6,
- GL20TU_FOGHEIGHTTEXTURE = 14
-}
-gl20_texunit;
-
typedef enum glsl_attrib_e
{
GLSLATTRIB_POSITION = 0,
SHADERMODE_FLATCOLOR, ///< (lightmap) modulate texture by uniform color (q1bsp, q3bsp)
SHADERMODE_VERTEXCOLOR, ///< (lightmap) modulate texture by vertex colors (q3bsp)
SHADERMODE_LIGHTMAP, ///< (lightmap) modulate texture by lightmap texture (q1bsp, q3bsp)
- SHADERMODE_FAKELIGHT, ///< (fakelight) modulate texture by "fake" lighting (no lightmaps, no nothing)
SHADERMODE_LIGHTDIRECTIONMAP_MODELSPACE, ///< (lightmap) use directional pixel shading from texture containing modelspace light directions (q3bsp deluxemap)
SHADERMODE_LIGHTDIRECTIONMAP_TANGENTSPACE, ///< (lightmap) use directional pixel shading from texture containing tangentspace light directions (q1bsp deluxemap)
SHADERMODE_LIGHTDIRECTIONMAP_FORCED_LIGHTMAP, // forced deluxemapping for lightmapped surfaces
skinframe_t *R_SkinFrame_Find(const char *name, int textureflags, int comparewidth, int compareheight, int comparecrc, qboolean add);
skinframe_t *R_SkinFrame_LoadExternal(const char *name, int textureflags, qboolean complain, qboolean fallbacknotexture);
skinframe_t *R_SkinFrame_LoadExternal_SkinFrame(skinframe_t *skinframe, const char *name, int textureflags, qboolean complain, qboolean fallbacknotexture);
-skinframe_t *R_SkinFrame_LoadInternalBGRA(const char *name, int textureflags, const unsigned char *skindata, int width, int height, qboolean sRGB);
+skinframe_t *R_SkinFrame_LoadInternalBGRA(const char *name, int textureflags, const unsigned char *skindata, int width, int height, int comparewidth, int compareheight, int comparecrc, qboolean sRGB);
skinframe_t *R_SkinFrame_LoadInternalQuake(const char *name, int textureflags, int loadpantsandshirt, int loadglowtexture, const unsigned char *skindata, int width, int height);
skinframe_t *R_SkinFrame_LoadInternal8bit(const char *name, int textureflags, const unsigned char *skindata, int width, int height, const unsigned int *palette, const unsigned int *alphapalette);
skinframe_t *R_SkinFrame_LoadMissing(void);
extern cvar_t r_glsl_deluxemapping;
extern cvar_t gl_polyblend;
-extern cvar_t gl_dither;
extern cvar_t cl_deathfade;
void RSurf_ActiveCustomEntity(const matrix4x4_t *matrix, const matrix4x4_t *inversematrix, int entflags, double shadertime, float r, float g, float b, float a, int numvertices, const float *vertex3f, const float *texcoord2f, const float *normal3f, const float *svector3f, const float *tvector3f, const float *color4f, int numtriangles, const int *element3i, const unsigned short *element3s, qboolean wantnormals, qboolean wanttangents);
void RSurf_SetupDepthAndCulling(void);
+extern int r_textureframe; ///< used only by R_GetCurrentTexture, incremented per view and per UI render
texture_t *R_GetCurrentTexture(texture_t *t);
-void R_DrawModelSurfaces(entity_render_t *ent, qboolean skysurfaces, qboolean writedepth, qboolean depthonly, qboolean debug, qboolean prepass);
-void R_DrawCustomSurface(skinframe_t *skinframe, const matrix4x4_t *texmatrix, int materialflags, int firstvertex, int numvertices, int firsttriangle, int numtriangles, qboolean writedepth, qboolean prepass);
-void R_DrawCustomSurface_Texture(texture_t *texture, const matrix4x4_t *texmatrix, int materialflags, int firstvertex, int numvertices, int firsttriangle, int numtriangles, qboolean writedepth, qboolean prepass);
+void R_DrawModelSurfaces(entity_render_t *ent, qboolean skysurfaces, qboolean writedepth, qboolean depthonly, qboolean debug, qboolean prepass, qboolean ui);
+void R_DrawCustomSurface(skinframe_t *skinframe, const matrix4x4_t *texmatrix, int materialflags, int firstvertex, int numvertices, int firsttriangle, int numtriangles, qboolean writedepth, qboolean prepass, qboolean ui);
+void R_DrawCustomSurface_Texture(texture_t *texture, const matrix4x4_t *texmatrix, int materialflags, int firstvertex, int numvertices, int firsttriangle, int numtriangles, qboolean writedepth, qboolean prepass, qboolean ui);
#define BATCHNEED_ARRAY_VERTEX (1<< 0) // set up rsurface.batchvertex3f
#define BATCHNEED_ARRAY_NORMAL (1<< 1) // set up rsurface.batchnormal3f
#define BATCHNEED_ALWAYSCOPY (1<< 9) // force vertex copying unconditionally - useful if you want to modify colors
#define BATCHNEED_ALLOWMULTIDRAW (1<<10) // allow multiple draws
void RSurf_PrepareVerticesForBatch(int batchneed, int texturenumsurfaces, const msurface_t **texturesurfacelist);
+void RSurf_UploadBuffersForBatch(void);
void RSurf_DrawBatch(void);
void R_DecalSystem_SplatEntities(const vec3_t org, const vec3_t normal, float r, float g, float b, float a, float s1, float t1, float s2, float t2, float size);
void Font_Init(void);
qboolean R_CompileShader_CheckStaticParms(void);
-void R_GLSL_Restart_f(void);
+void R_GLSL_Restart_f(cmd_state_t *cmd);
#endif