X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=render.h;h=3663834ad08c6aa8c1a3fa894d352ee6081ea685;hb=3307772b098f1831642177bc53c975b402d57c4f;hp=742eaecc519f408a9eed8514b316f46533fce00c;hpb=fb52dfb48cce4eb85fd934852ecb2eab8ee58120;p=xonotic%2Fdarkplaces.git diff --git a/render.h b/render.h index 742eaecc..3663834a 100644 --- a/render.h +++ b/render.h @@ -33,7 +33,10 @@ void FOG_clear(void); extern cvar_t r_sky; extern cvar_t r_skyscroll1; extern cvar_t r_skyscroll2; +extern cvar_t r_sky_scissor; +extern cvar_t r_q3bsp_renderskydepth; extern int skyrenderlater, skyrendermasked; +extern int skyscissor[4]; int R_SetSkyBox(const char *sky); void R_SkyStartFrame(void); void R_Sky(void); @@ -55,6 +58,7 @@ extern cvar_t gl_flashblend; extern cvar_t r_novis; extern cvar_t r_trippy; +extern cvar_t r_fxaa; extern cvar_t r_lerpsprites; extern cvar_t r_lerpmodels; @@ -91,7 +95,6 @@ rmesh_t; // useful functions for rendering void R_ModulateColors(float *in, float *out, int verts, float r, float g, float b); void R_FillColors(float *out, int verts, float r, float g, float b, float a); -int R_Mesh_AddVertex3f(rmesh_t *mesh, const float *v); void R_Mesh_AddPolygon3f(rmesh_t *mesh, int numvertices, float *vertex3f); void R_Mesh_AddBrushMeshFromPlanes(rmesh_t *mesh, int numplanes, mplane_t *planes); @@ -123,9 +126,8 @@ extern cvar_t r_fullbright; extern cvar_t r_wateralpha; extern cvar_t r_dynamic; -void R_Init(void); void R_UpdateVariables(void); // must call after setting up most of r_refdef, but before calling R_RenderView -void R_RenderView(void); // must set r_refdef and call R_UpdateVariables first +void R_RenderView(void); // must set r_refdef and call R_UpdateVariables and CL_UpdateEntityShading first void R_RenderView_UpdateViewVectors(void); // just updates r_refdef.view.{forward,left,up,origin,right,inverse_matrix} typedef enum r_refdef_scene_type_s { @@ -139,15 +141,18 @@ r_refdef_scene_t * R_GetScenePointer( r_refdef_scene_type_t scenetype ); void R_SkinFrame_PrepareForPurge(void); void R_SkinFrame_MarkUsed(skinframe_t *skinframe); +void R_SkinFrame_PurgeSkinFrame(skinframe_t *skinframe); void R_SkinFrame_Purge(void); // set last to NULL to start from the beginning 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_LoadExternal(const char *name, int textureflags, qboolean complain, qboolean fallbacknotexture); 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); +skinframe_t *R_SkinFrame_LoadNoTexture(void); +skinframe_t *R_SkinFrame_LoadInternalUsingTexture(const char *name, int textureflags, rtexture_t *tex, int width, int height, qboolean sRGB); rtexture_t *R_GetCubemap(const char *basename); @@ -161,6 +166,7 @@ void R_DrawExplosions(void); int R_CullBox(const vec3_t mins, const vec3_t maxs); int R_CullBoxCustomPlanes(const vec3_t mins, const vec3_t maxs, int numplanes, const mplane_t *planes); +qboolean R_CanSeeBox(int numsamples, vec_t eyejitter, vec_t entboxenlarge, vec3_t eye, vec3_t entboxmins, vec3_t entboxmaxs); #include "r_modules.h" @@ -180,7 +186,7 @@ void R_FrameData_SetMark(void); void R_FrameData_ReturnToMark(void); /// enum of the various types of hardware buffer object used in rendering -/// note that the r_bufferdatasize[] array must be maintained to match this +/// note that the r_buffermegs[] array must be maintained to match this typedef enum r_bufferdata_type_e { R_BUFFERDATA_VERTEX, /// vertex buffer @@ -196,7 +202,7 @@ void R_BufferData_Reset(void); /// begin a new frame (recycle old buffers) void R_BufferData_NewFrame(void); /// request space in a vertex/index/uniform buffer for the chosen data, returns the buffer pointer and offset, always successful -r_meshbuffer_t *R_BufferData_Store(size_t size, void *data, r_bufferdata_type_t type, int *returnbufferoffset); +r_meshbuffer_t *R_BufferData_Store(size_t size, const void *data, r_bufferdata_type_t type, int *returnbufferoffset); /// free all R_AnimCache memory void R_AnimCache_Free(void); @@ -400,18 +406,6 @@ typedef struct rsurfacestate_s // animation blending state from entity frameblend_t frameblend[MAX_FRAMEBLENDS]; skeleton_t *skeleton; - // directional model shading state from entity - vec3_t modellight_ambient; - vec3_t modellight_diffuse; - vec3_t modellight_lightdir; - // 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 - float glowmod[3]; // view location in model space vec3_t localvieworigin; // polygon offset data for submodels @@ -450,8 +444,8 @@ typedef struct rsurfacestate_s float userwavefunc_param[Q3WAVEFUNC_USER_COUNT]; // pointer to an entity_render_t used only by R_GetCurrentTexture and - // RSurf_ActiveWorldEntity/RSurf_ActiveModelEntity as a unique id within - // each frame (see r_frame also) + // RSurf_ActiveModelEntity as a unique id within each frame (see r_frame + // also) entity_render_t *entity; } rsurfacestate_t; @@ -460,7 +454,6 @@ extern rsurfacestate_t rsurface; void R_HDR_UpdateIrisAdaptation(const vec3_t point); -void RSurf_ActiveWorldEntity(void); 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); @@ -468,7 +461,6 @@ 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, 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, qboolean prepass); @@ -507,7 +499,7 @@ rsurfacepass_t; 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, qboolean depthrgb, qboolean skeletal); -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_Surface(const float ambientcolor[3], const float diffusecolor[3], const float specularcolor[3], rsurfacepass_t rsurfacepass, int texturenumsurfaces, const msurface_t **texturesurfacelist, void *waterplane, qboolean notrippy); void R_SetupShader_DeferredLight(const rtlight_t *rtlight); typedef struct r_waterstate_waterplane_s @@ -607,16 +599,13 @@ void R_Model_Sprite_Draw(entity_render_t *ent); struct prvm_prog_s; void R_UpdateFog(void); -qboolean CL_VM_UpdateView(void); +qboolean CL_VM_UpdateView(double frametime); void SCR_DrawConsole(void); void R_Shadow_EditLights_DrawSelectedLightProperties(void); void R_DecalSystem_Reset(decalsystem_t *decalsystem); void R_Shadow_UpdateBounceGridTexture(void); -void R_DrawLightningBeams(void); void VM_CL_AddPolygonsToMeshQueue(struct prvm_prog_s *prog); void R_DrawPortals(void); -void R_DrawModelShadows(int fbo, rtexture_t *depthtexture, rtexture_t *colortexture); -void R_DrawModelShadowMaps(int fbo, rtexture_t *depthtexture, rtexture_t *colortexture); void R_BuildLightMap(const entity_render_t *ent, msurface_t *surface); void R_Water_AddWaterPlane(msurface_t *surface, int entno); int R_Shadow_GetRTLightInfo(unsigned int lightindex, float *origin, float *radius, float *color);