int ent_qwskin;
int ent_flags;
float ent_shadertime;
- float ent_color[4];
int ent_alttextures; // used by q1bsp animated textures (pressed buttons)
// transform matrices to render this entity and effects on this entity
matrix4x4_t matrix;
// colormapping state from entity (these are black if colormapping is off)
vec3_t colormap_pantscolor;
vec3_t colormap_shirtcolor;
+ // special coloring of ambient/diffuse textures (gloss not affected)
+ // colormod[3] is the alpha of the entity
+ float colormod[4];
// special coloring of glow textures
- vec3_t glowmod;
+ float glowmod[3];
// view location in model space
vec3_t localvieworigin;
// polygon offset data for submodels
extern rsurfacestate_t rsurface;
void RSurf_ActiveWorldEntity(void);
-void RSurf_ActiveModelEntity(const entity_render_t *ent, qboolean wantnormals, qboolean wanttangents);
+void RSurf_ActiveModelEntity(const entity_render_t *ent, qboolean wantnormals, qboolean wanttangents, qboolean prepass);
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);
void R_Mesh_ResizeArrays(int newvertices);
texture_t *R_GetCurrentTexture(texture_t *t);
-void R_DrawWorldSurfaces(qboolean skysurfaces, qboolean writedepth, qboolean depthonly, qboolean debug);
-void R_DrawModelSurfaces(entity_render_t *ent, qboolean skysurfaces, qboolean writedepth, qboolean depthonly, qboolean debug);
+void R_DrawWorldSurfaces(qboolean skysurfaces, qboolean writedepth, qboolean depthonly, qboolean debug, qboolean prepass);
+void R_DrawModelSurfaces(entity_render_t *ent, qboolean skysurfaces, qboolean writedepth, qboolean depthonly, qboolean debug, qboolean prepass);
void R_AddWaterPlanes(entity_render_t *ent);
-void R_DrawCustomSurface(skinframe_t *skinframe, const matrix4x4_t *texmatrix, int materialflags, int firstvertex, int numvertices, int firsttriangle, int numtriangles, qboolean writedepth);
+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 RSurf_PrepareVerticesForBatch(qboolean generatenormals, qboolean generatetangents, int texturenumsurfaces, const msurface_t **texturesurfacelist);
void RSurf_DrawBatch_Simple(int texturenumsurfaces, const msurface_t **texturesurfacelist);
{
RSURFPASS_BASE,
RSURFPASS_BACKGROUND,
- RSURFPASS_RTLIGHT
+ RSURFPASS_RTLIGHT,
+ RSURFPASS_DEFERREDGEOMETRY,
}
rsurfacepass_t;
GL20TU_SHADOWMAPRECT = 11,
GL20TU_SHADOWMAPCUBE = 11,
GL20TU_SHADOWMAP2D = 11,
- GL20TU_CUBEPROJECTION = 12
+ GL20TU_CUBEPROJECTION = 12,
+ // rtlight prepass data (screenspace depth and normalmap)
+ GL20TU_SCREENDEPTH = 13,
+ GL20TU_SCREENNORMALMAP = 14,
+ // lightmap prepass data (screenspace diffuse and specular from lights)
+ GL20TU_SCREENDIFFUSE = 11,
+ GL20TU_SCREENSPECULAR = 12,
}
gl20_texunit;
void R_SetupDepthOrShadowShader(void);
void R_SetupShowDepthShader(void);
void R_SetupSurfaceShader(const vec3_t lightcolorbase, qboolean modellighting, float ambientscale, float diffusescale, float specularscale, rsurfacepass_t rsurfacepass);
+void R_SetupDeferredLightShader(const rtlight_t *rtlight);
typedef struct r_waterstate_waterplane_s
{