]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - render.h
init/shutdown thread system in dedicated server as well
[xonotic/darkplaces.git] / render.h
index 79b1198bbf74dd88769bd1bf12cbd4cd39db4662..46c0c658ee502e556aa92453e858dbc0c2d4cfc4 100644 (file)
--- a/render.h
+++ b/render.h
@@ -113,9 +113,6 @@ extern cvar_t r_showcollisionbrushes_polygonfactor;
 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;
@@ -191,6 +188,8 @@ extern cvar_t r_textureunits;
 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;
@@ -441,7 +440,8 @@ typedef enum rsurfacepass_e
 }
 rsurfacepass_t;
 
-void R_SetupShader_Generic(rtexture_t *first, rtexture_t *second, int texturemode, int rgbscale, qboolean usegamma, qboolean notrippy);
+void R_SetupShader_Generic(rtexture_t *first, rtexture_t *second, int texturemode, int rgbscale, qboolean usegamma, qboolean notrippy, qboolean suppresstexalpha);
+void R_SetupShader_Generic_NoTexture(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);
@@ -449,9 +449,12 @@ void R_SetupShader_DeferredLight(const rtlight_t *rtlight);
 
 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
@@ -463,14 +466,10 @@ r_waterstate_waterplane_t;
 
 typedef struct r_waterstate_s
 {
-       qboolean enabled;
-
-       qboolean renderingscene; // true while rendering a refraction or reflection texture, disables water surfaces
-       qboolean renderingrefraction;
-
        int waterwidth, waterheight;
        int texturewidth, textureheight;
        int camerawidth, cameraheight;
+       rtexture_t *depthtexture;
 
        int maxwaterplanes; // same as MAX_WATERPLANES
        int numwaterplanes;
@@ -478,10 +477,57 @@ typedef struct r_waterstate_s
 
        float screenscale[2];
        float screencenter[2];
+
+       qboolean enabled;
+
+       qboolean renderingscene; // true while rendering a refraction or reflection texture, disables water surfaces
+       qboolean hideplayer;
 }
 r_waterstate_t;
 
-extern r_waterstate_t r_waterstate;
+typedef struct r_framebufferstate_s
+{
+       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;
+
+       qboolean ghosttexture_valid; // don't draw garbage on first frame with motionblur
+}
+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