// vis stuff
extern cvar_t r_novis;
+extern cvar_t r_trippy;
+
extern cvar_t r_lerpsprites;
extern cvar_t r_lerpmodels;
extern cvar_t r_lerplightstyles;
extern cvar_t r_nearclip;
// forces all rendering to draw triangle outlines
+extern cvar_t r_showoverdraw;
extern cvar_t r_showtris;
extern cvar_t r_shownormals;
extern cvar_t r_showlighting;
extern cvar_t r_showcollisionbrushes_polygonoffset;
extern cvar_t r_showdisabledepthtest;
-//
-// view origin
-//
extern cvar_t r_drawentities;
extern cvar_t r_draw2d;
extern qboolean r_draw2d_force;
skinframe_t *R_SkinFrame_FindNextByName( skinframe_t *last, const char *name );
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);
-skinframe_t *R_SkinFrame_LoadInternalBGRA(const char *name, int textureflags, const unsigned char *skindata, int width, int height);
+skinframe_t *R_SkinFrame_LoadInternalBGRA(const char *name, int textureflags, const unsigned char *skindata, int width, int height, 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_offsetmapping;
extern cvar_t r_glsl_offsetmapping_reliefmapping;
extern cvar_t r_glsl_offsetmapping_scale;
+extern cvar_t r_glsl_offsetmapping_lod;
+extern cvar_t r_glsl_offsetmapping_lod_distance;
extern cvar_t r_glsl_deluxemapping;
extern cvar_t gl_polyblend;
extern cvar_t r_test;
-extern cvar_t r_texture_convertsRGB_2d;
-extern cvar_t r_texture_convertsRGB_skin;
-extern cvar_t r_texture_convertsRGB_cubemap;
-extern cvar_t r_texture_convertsRGB_skybox;
-extern cvar_t r_texture_convertsRGB_particles;
-
#include "gl_backend.h"
extern rtexture_t *r_texture_blanknormalmap;
int ent_skinnum;
int ent_qwskin;
int ent_flags;
- float ent_shadertime;
int ent_alttextures; // used by q1bsp animated textures (pressed buttons)
+ double shadertime; // r_refdef.scene.time - ent->shadertime
// transform matrices to render this entity and effects on this entity
matrix4x4_t matrix;
matrix4x4_t inversematrix;
}
rsurfacepass_t;
-void R_SetupShader_Generic(rtexture_t *first, rtexture_t *second, int texturemode, int rgbscale);
-void R_SetupShader_DepthOrShadow(void);
-void R_SetupShader_ShowDepth(void);
-void R_SetupShader_Surface(const vec3_t lightcolorbase, qboolean modellighting, float ambientscale, float diffusescale, float specularscale, rsurfacepass_t rsurfacepass, int texturenumsurfaces, const msurface_t **texturesurfacelist, void *waterplane);
+void R_SetupShader_Generic(rtexture_t *first, rtexture_t *second, int texturemode, int rgbscale, qboolean usegamma, qboolean notrippy);
+void R_SetupShader_DepthOrShadow(qboolean notrippy);
+void R_SetupShader_ShowDepth(qboolean notrippy);
+void R_SetupShader_Surface(const vec3_t lightcolorbase, qboolean modellighting, float ambientscale, float diffusescale, float specularscale, rsurfacepass_t rsurfacepass, int texturenumsurfaces, const msurface_t **texturesurfacelist, void *waterplane, qboolean notrippy);
void R_SetupShader_DeferredLight(const rtlight_t *rtlight);
-void R_SetupShader_DeferredBounceLight(void);
typedef struct r_waterstate_waterplane_s
{
- rtexture_t *texture_refraction;
- rtexture_t *texture_reflection;
- rtexture_t *texture_camera;
+ rtexture_t *texture_refraction; // MATERIALFLAG_WATERSHADER or MATERIALFLAG_REFRACTION
+ rtexture_t *texture_reflection; // MATERIALFLAG_WATERSHADER or MATERIALFLAG_REFLECTION
+ rtexture_t *texture_camera; // MATERIALFLAG_CAMERA
+ int fbo_refraction;
+ int fbo_reflection;
+ int fbo_camera;
mplane_t plane;
int materialflags; // combined flags of all water surfaces on this plane
unsigned char pvsbits[(MAX_MAP_LEAFS+7)>>3]; // FIXME: buffer overflow on huge maps
qboolean enabled;
qboolean renderingscene; // true while rendering a refraction or reflection texture, disables water surfaces
- qboolean renderingrefraction;
+ qboolean hideplayer;
int waterwidth, waterheight;
int texturewidth, textureheight;
int camerawidth, cameraheight;
+ rtexture_t *depthtexture;
int maxwaterplanes; // same as MAX_WATERPLANES
int numwaterplanes;
}
r_waterstate_t;
-extern r_waterstate_t r_waterstate;
+typedef struct r_framebufferstate_s
+{
+ int viewfbo; // copy of r_viewfbo cvar (to cause reallocation of textures if needed)
+
+ textype_t textype; // type of color buffer we're using (dependent on r_viewfbo cvar)
+ int fbo; // non-zero if r_viewfbo is enabled and working
+ int screentexturewidth, screentextureheight; // dimensions of texture
+
+ rtexture_t *colortexture; // non-NULL if fbo is non-zero
+ rtexture_t *depthtexture; // non-NULL if fbo is non-zero
+ rtexture_t *ghosttexture; // for r_motionblur (not recommended on multi-GPU hardware!)
+ rtexture_t *bloomtexture[2]; // for r_bloom, multi-stage processing
+ int bloomfbo[2]; // fbos for rendering into bloomtexture[]
+ int bloomindex; // which bloomtexture[] contains the final image
+
+ int bloomwidth, bloomheight;
+ int bloomtexturewidth, bloomtextureheight;
+
+ // arrays for rendering the screen passes
+ float screentexcoord2f[8]; // texcoords for colortexture or ghosttexture
+ float bloomtexcoord2f[8]; // texcoords for bloomtexture[]
+ float offsettexcoord2f[8]; // temporary use while updating bloomtexture[]
+
+ r_viewport_t bloomviewport;
+
+ r_waterstate_t water;
+}
+r_framebufferstate_t;
+
+extern r_framebufferstate_t r_fb;
+
+void R_ResetViewRendering2D(int fbo, rtexture_t *depthtexture, rtexture_t *colortexture);
+void R_ResetViewRendering3D(int fbo, rtexture_t *depthtexture, rtexture_t *colortexture);
+void R_SetupView(qboolean allowwaterclippingplane, int fbo, rtexture_t *depthtexture, rtexture_t *colortexture);
+extern const float r_screenvertex3f[12];
+extern cvar_t r_shadows;
+extern cvar_t r_shadows_darken;
+extern cvar_t r_shadows_drawafterrtlighting;
+extern cvar_t r_shadows_castfrombmodels;
+extern cvar_t r_shadows_throwdistance;
+extern cvar_t r_shadows_throwdirection;
+extern cvar_t r_shadows_focus;
+extern cvar_t r_shadows_shadowmapscale;
#endif