X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=render.h;h=830666f7ce5f4dc48d9b5942c0bacfde73b32b7b;hb=8688df8a88c8f14d8f11fe73a151e5b53f94407c;hp=fa024207b144bc2d0c0de8c1da46c4c90ff187ae;hpb=a8bce569c8a82f5cffacaadea1f5ee9a972f6fda;p=xonotic%2Fdarkplaces.git diff --git a/render.h b/render.h index fa024207..830666f7 100644 --- a/render.h +++ b/render.h @@ -43,7 +43,6 @@ extern void R_ResetSkyBox(void); extern void SHOWLMP_decodehide(void); extern void SHOWLMP_decodeshow(void); extern void SHOWLMP_drawall(void); -extern void SHOWLMP_clear(void); // render profiling stuff extern char r_speeds_string[1024]; @@ -313,8 +312,6 @@ typedef struct rsurfacestate_s qboolean uselightmaptexture; // one of the RSURFMODE_ values rsurfmode_t mode; - // type of vertex lighting being used on this batch - int lightmode; // 0 = lightmap or fullbright, 1 = color array from q3bsp, 2 = vertex shaded model // rtlight rendering // light currently being rendered @@ -359,86 +356,15 @@ void R_DrawModelSurfaces(entity_render_t *ent, qboolean skysurfaces, qboolean wr void RSurf_PrepareVerticesForBatch(qboolean generatenormals, qboolean generatetangents, int texturenumsurfaces, msurface_t **texturesurfacelist); void RSurf_DrawBatch_Simple(int texturenumsurfaces, msurface_t **texturesurfacelist); -#define SHADERPERMUTATION_MODE_LIGHTMAP (1<<0) // (lightmap) use directional pixel shading from fixed light direction (q3bsp) -#define SHADERPERMUTATION_MODE_LIGHTDIRECTIONMAP_MODELSPACE (1<<1) // (lightmap) use directional pixel shading from texture containing modelspace light directions (deluxemap) -#define SHADERPERMUTATION_MODE_LIGHTDIRECTIONMAP_TANGENTSPACE (1<<2) // (lightmap) use directional pixel shading from texture containing tangentspace light directions (deluxemap) -#define SHADERPERMUTATION_MODE_LIGHTDIRECTION (1<<3) // (lightmap) use directional pixel shading from fixed light direction (q3bsp) -#define SHADERPERMUTATION_MODE_LIGHTSOURCE (1<<4) // (lightsource) use directional pixel shading from light source (rtlight) -#define SHADERPERMUTATION_WATER (1<<5) // normalmap-perturbed refraction of the background, performed behind the surface (the texture or material must be transparent to see it) -#define SHADERPERMUTATION_REFLECTION (1<<6) // normalmap-perturbed reflection of the scene infront of the surface, preformed as an overlay on the surface -#define SHADERPERMUTATION_GLOW (1<<7) // (lightmap) blend in an additive glow texture -#define SHADERPERMUTATION_FOG (1<<8) // tint the color by fog color or black if using additive blend mode -#define SHADERPERMUTATION_COLORMAPPING (1<<9) // indicates this is a colormapped skin -#define SHADERPERMUTATION_DIFFUSE (1<<10) // (lightsource) whether to use directional shading -#define SHADERPERMUTATION_CONTRASTBOOST (1<<11) // r_glsl_contrastboost boosts the contrast at low color levels (similar to gamma) -#define SHADERPERMUTATION_SPECULAR (1<<12) // (lightsource or deluxemapping) render specular effects -#define SHADERPERMUTATION_CUBEFILTER (1<<13) // (lightsource) use cubemap light filter -#define SHADERPERMUTATION_OFFSETMAPPING (1<<14) // adjust texcoords to roughly simulate a displacement mapped surface -#define SHADERPERMUTATION_OFFSETMAPPING_RELIEFMAPPING (1<<15) // adjust texcoords to accurately simulate a displacement mapped surface (requires OFFSETMAPPING to also be set!) - -#define SHADERPERMUTATION_MAX (1<<16) // how many permutations are possible -#define SHADERPERMUTATION_MASK (SHADERPERMUTATION_MAX - 1) // mask of valid indexing bits for r_glsl_permutations[] array - -// these are additional flags used only by R_GLSL_CompilePermutation -#define SHADERPERMUTATION_USES_VERTEXSHADER (1<<29) -#define SHADERPERMUTATION_USES_GEOMETRYSHADER (1<<30) -#define SHADERPERMUTATION_USES_FRAGMENTSHADER (1<<31) - -typedef struct r_glsl_permutation_s +typedef enum rsurfacepass_e { - // indicates if we have tried compiling this permutation already - qboolean compiled; - // 0 if compilation failed - int program; - int loc_Texture_Normal; - int loc_Texture_Color; - int loc_Texture_Gloss; - int loc_Texture_Cube; - int loc_Texture_Attenuation; - int loc_Texture_FogMask; - int loc_Texture_Pants; - int loc_Texture_Shirt; - int loc_Texture_Lightmap; - int loc_Texture_Deluxemap; - int loc_Texture_Glow; - int loc_Texture_Refraction; - int loc_Texture_Reflection; - int loc_FogColor; - int loc_LightPosition; - int loc_EyePosition; - int loc_LightColor; - int loc_Color_Pants; - int loc_Color_Shirt; - int loc_FogRangeRecip; - int loc_AmbientScale; - int loc_DiffuseScale; - int loc_SpecularScale; - int loc_SpecularPower; - int loc_GlowScale; - int loc_SceneBrightness; // or: Scenebrightness * ContrastBoost - int loc_OffsetMapping_Scale; - int loc_AmbientColor; - int loc_DiffuseColor; - int loc_SpecularColor; - int loc_LightDir; - int loc_ContrastBoostCoeff; // 1 - 1/ContrastBoost - int loc_DistortScaleRefractReflect; - int loc_ScreenScaleRefractReflect; - int loc_ScreenCenterRefractReflect; - int loc_RefractColor; - int loc_ReflectColor; - int loc_ReflectFactor; + RSURFPASS_BASE, + RSURFPASS_BACKGROUND, + RSURFPASS_RTLIGHT } -r_glsl_permutation_t; +rsurfacepass_t; -// information about each possible shader permutation -extern r_glsl_permutation_t r_glsl_permutations[SHADERPERMUTATION_MAX]; -// currently selected permutation -extern r_glsl_permutation_t *r_glsl_permutation; - -void R_GLSL_CompilePermutation(const char *shaderfilename, int permutation); -int R_SetupSurfaceShader(const vec3_t lightcolorbase, qboolean modellighting, float ambientscale, float diffusescale, float specularscale); -void R_SwitchSurfaceShader(int permutation); +int R_SetupSurfaceShader(const vec3_t lightcolorbase, qboolean modellighting, float ambientscale, float diffusescale, float specularscale, rsurfacepass_t pass); #endif