]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - client.h
client: Move r_refdef structs and renderer prototypes to render.h
[xonotic/darkplaces.git] / client.h
index 823d8b46db680f9cc65463ee7eef6ab99009a4a6..e3be51c729d9e1a456c850dc11fd7f90a4a5cd02 100644 (file)
--- a/client.h
+++ b/client.h
@@ -1734,264 +1734,11 @@ void CL_ParticleRain (const vec3_t mins, const vec3_t maxs, const vec3_t dir, in
 void CL_EntityParticles (const entity_t *ent);
 void CL_ParticleExplosion (const vec3_t org);
 void CL_ParticleExplosion2 (const vec3_t org, int colorStart, int colorLength);
-void R_NewExplosion(const vec3_t org);
 
 #include "cl_screen.h"
 
 extern qbool sb_showscores;
 
-float RSurf_FogVertex(const vec3_t p);
-float RSurf_FogPoint(const vec3_t p);
-
-typedef enum r_viewport_type_e
-{
-       R_VIEWPORTTYPE_ORTHO,
-       R_VIEWPORTTYPE_PERSPECTIVE,
-       R_VIEWPORTTYPE_PERSPECTIVE_INFINITEFARCLIP,
-       R_VIEWPORTTYPE_PERSPECTIVECUBESIDE,
-       R_VIEWPORTTYPE_TOTAL
-}
-r_viewport_type_t;
-
-typedef struct r_viewport_s
-{
-       matrix4x4_t cameramatrix; // from entity (transforms from camera entity to world)
-       matrix4x4_t viewmatrix; // actual matrix for rendering (transforms to viewspace)
-       matrix4x4_t projectmatrix; // actual projection matrix (transforms from viewspace to screen)
-       int x;
-       int y;
-       int z;
-       int width;
-       int height;
-       int depth;
-       r_viewport_type_t type;
-       float screentodepth[2]; // used by deferred renderer to calculate linear depth from device depth coordinates
-}
-r_viewport_t;
-
-typedef struct r_refdef_view_s
-{
-       // view information (changes multiple times per frame)
-       // if any of these variables change then r_refdef.viewcache must be regenerated
-       // by calling R_View_Update
-       // (which also updates viewport, scissor, colormask)
-
-       // it is safe and expected to copy this into a structure on the stack and
-       // call the renderer recursively, then restore from the stack afterward
-       // (as long as R_View_Update is called)
-
-       // eye position information
-       matrix4x4_t matrix, inverse_matrix;
-       vec3_t origin;
-       vec3_t forward;
-       vec3_t left;
-       vec3_t right;
-       vec3_t up;
-       int numfrustumplanes;
-       mplane_t frustum[6];
-       qbool useclipplane;
-       qbool usecustompvs; // uses r_refdef.viewcache.pvsbits as-is rather than computing it
-       mplane_t clipplane;
-       float frustum_x, frustum_y;
-       vec3_t frustumcorner[4];
-       // if turned off it renders an ortho view
-       int useperspective;
-       // allows visibility culling based on the view origin (e.g. pvs and R_CanSeeBox)
-       // this is turned off by:
-       // r_trippy
-       // !r_refdef.view.useperspective
-       // (sometimes) r_refdef.view.useclipplane
-       int usevieworiginculling;
-       float ortho_x, ortho_y;
-
-       // screen area to render in
-       int x;
-       int y;
-       int z;
-       int width;
-       int height;
-       int depth;
-       r_viewport_t viewport; // note: if r_viewscale is used, the viewport.width and viewport.height may be less than width and height
-
-       // which color components to allow (for anaglyph glasses)
-       int colormask[4];
-
-       // global RGB color multiplier for rendering
-       float colorscale;
-
-       // whether to call R_ClearScreen before rendering stuff
-       qbool clear;
-       // if true, don't clear or do any post process effects (bloom, etc)
-       qbool isoverlay;
-       // if true, this is the MAIN view (which is, after CSQC, copied into the scene for use e.g. by r_speeds 1, showtex, prydon cursor)
-       qbool ismain;
-
-       // whether to draw r_showtris and such, this is only true for the main
-       // view render, all secondary renders (mirrors, portals, cameras,
-       // distortion effects, etc) omit such debugging information
-       qbool showdebug;
-
-       // these define which values to use in GL_CullFace calls to request frontface or backface culling
-       int cullface_front;
-       int cullface_back;
-
-       // render quality (0 to 1) - affects r_drawparticles_drawdistance and others
-       float quality;
-}
-r_refdef_view_t;
-
-typedef struct r_refdef_viewcache_s
-{
-       // updated by gl_main_newmap()
-       int maxentities;
-       int world_numclusters;
-       int world_numclusterbytes;
-       int world_numleafs;
-       int world_numsurfaces;
-
-       // these properties are generated by R_View_Update()
-
-       // which entities are currently visible for this viewpoint
-       // (the used range is 0...r_refdef.scene.numentities)
-       unsigned char *entityvisible;
-
-       // flag arrays used for visibility checking on world model
-       // (all other entities have no per-surface/per-leaf visibility checks)
-       unsigned char *world_pvsbits;
-       unsigned char *world_leafvisible;
-       unsigned char *world_surfacevisible;
-       // if true, the view is currently in a leaf without pvs data
-       qbool world_novis;
-}
-r_refdef_viewcache_t;
-
-// TODO: really think about which fields should go into scene and which one should stay in refdef [1/7/2008 Black]
-// maybe also refactor some of the functions to support different setting sources (ie. fogenabled, etc.) for different scenes
-typedef struct r_refdef_scene_s {
-       // whether to call S_ExtraUpdate during render to reduce sound chop
-       qbool extraupdate;
-
-       // (client gameworld) time for rendering time based effects
-       double time;
-
-       // the world
-       entity_render_t *worldentity;
-
-       // same as worldentity->model
-       dp_model_t *worldmodel;
-
-       // renderable entities (excluding world)
-       entity_render_t **entities;
-       int numentities;
-       int maxentities;
-
-       // field of temporary entities that is reset each (client) frame
-       entity_render_t *tempentities;
-       int numtempentities;
-       int maxtempentities;
-       qbool expandtempentities;
-
-       // renderable dynamic lights
-       rtlight_t *lights[MAX_DLIGHTS];
-       rtlight_t templights[MAX_DLIGHTS];
-       int numlights;
-
-       // intensities for light styles right now, controls rtlights
-       float rtlightstylevalue[MAX_LIGHTSTYLES];       // float fraction of base light value
-       // 8.8bit fixed point intensities for light styles
-       // controls intensity lightmap layers
-       unsigned short lightstylevalue[MAX_LIGHTSTYLES];        // 8.8 fraction of base light value
-
-       // adds brightness to the whole scene, separate from lightmapintensity
-       // see CL_UpdateEntityShading
-       float ambientintensity;
-       // brightness of lightmap and modellight lighting on materials
-       // see CL_UpdateEntityShading
-       float lightmapintensity;
-
-       qbool rtworld;
-       qbool rtworldshadows;
-       qbool rtdlight;
-       qbool rtdlightshadows;
-} r_refdef_scene_t;
-
-typedef struct r_refdef_s
-{
-       // these fields define the basic rendering information for the world
-       // but not the view, which could change multiple times in one rendered
-       // frame (for example when rendering textures for certain effects)
-
-       // these are set for water warping before
-       // frustum_x/frustum_y are calculated
-       float frustumscale_x, frustumscale_y;
-
-       // current view settings (these get reset a few times during rendering because of water rendering, reflections, etc)
-       r_refdef_view_t view;
-       r_refdef_viewcache_t viewcache;
-
-       // minimum visible distance (pixels closer than this disappear)
-       double nearclip;
-       // maximum visible distance (pixels further than this disappear in 16bpp modes,
-       // in 32bpp an infinite-farclip matrix is used instead)
-       double farclip;
-
-       // fullscreen color blend
-       float viewblend[4];
-
-       r_refdef_scene_t scene;
-
-       float fogplane[4];
-       float fogplaneviewdist;
-       qbool fogplaneviewabove;
-       float fogheightfade;
-       float fogcolor[3];
-       float fogrange;
-       float fograngerecip;
-       float fogmasktabledistmultiplier;
-#define FOGMASKTABLEWIDTH 1024
-       float fogmasktable[FOGMASKTABLEWIDTH];
-       float fogmasktable_start, fogmasktable_alpha, fogmasktable_range, fogmasktable_density;
-       float fog_density;
-       float fog_red;
-       float fog_green;
-       float fog_blue;
-       float fog_alpha;
-       float fog_start;
-       float fog_end;
-       float fog_height;
-       float fog_fadedepth;
-       qbool fogenabled;
-       qbool oldgl_fogenable;
-
-       // new flexible texture height fog (overrides normal fog)
-       char fog_height_texturename[64]; // note: must be 64 for the sscanf code
-       unsigned char *fog_height_table1d;
-       unsigned char *fog_height_table2d;
-       int fog_height_tablesize; // enable
-       float fog_height_tablescale;
-       float fog_height_texcoordscale;
-       char fogheighttexturename[64]; // detects changes to active fog height texture
-
-       int draw2dstage; // 0 = no, 1 = yes, other value = needs setting up again
-
-       // true during envmap command capture
-       qbool envmap;
-
-       // whether to draw world lights realtime, dlights realtime, and their shadows
-       float polygonfactor;
-       float polygonoffset;
-
-       // how long R_RenderView took on the previous frame
-       double lastdrawscreentime;
-
-       // rendering stats for r_speeds display
-       // (these are incremented in many places)
-       int stats[r_stat_count];
-}
-r_refdef_t;
-
-extern r_refdef_t r_refdef;
-
 typedef enum waterlevel_e
 {
        WATERLEVEL_NONE,