if (ent->model == NULL)
return;
if (ent == r_refdef.scene.worldentity)
- R_DrawWorldSurfaces(true, true, false, false);
+ R_DrawWorldSurfaces(true, true, false, false, false);
else
- R_DrawModelSurfaces(ent, true, true, false, false);
+ R_DrawModelSurfaces(ent, true, true, false, false, false);
}
extern void R_Water_AddWaterPlane(msurface_t *surface);
if (ent == r_refdef.scene.worldentity)
RSurf_ActiveWorldEntity();
else
- RSurf_ActiveModelEntity(ent, false, false);
+ RSurf_ActiveModelEntity(ent, false, false, false);
surfaces = model->data_surfaces;
flagsmask = MATERIALFLAG_WATERSHADER | MATERIALFLAG_REFRACTION | MATERIALFLAG_REFLECTION;
if (model == NULL)
return;
if (ent == r_refdef.scene.worldentity)
- R_DrawWorldSurfaces(false, true, false, false);
+ R_DrawWorldSurfaces(false, true, false, false, false);
else
- R_DrawModelSurfaces(ent, false, true, false, false);
+ R_DrawModelSurfaces(ent, false, true, false, false, false);
}
void R_Q1BSP_DrawDepth(entity_render_t *ent)
R_Mesh_ResetTextureState();
R_SetupDepthOrShadowShader();
if (ent == r_refdef.scene.worldentity)
- R_DrawWorldSurfaces(false, false, true, false);
+ R_DrawWorldSurfaces(false, false, true, false, false);
else
- R_DrawModelSurfaces(ent, false, false, true, false);
+ R_DrawModelSurfaces(ent, false, false, true, false, false);
GL_ColorMask(r_refdef.view.colormask[0], r_refdef.view.colormask[1], r_refdef.view.colormask[2], 1);
}
if (ent->model == NULL)
return;
if (ent == r_refdef.scene.worldentity)
- R_DrawWorldSurfaces(false, false, false, true);
+ R_DrawWorldSurfaces(false, false, false, true, false);
else
- R_DrawModelSurfaces(ent, false, false, false, true);
+ R_DrawModelSurfaces(ent, false, false, false, true, false);
+}
+
+void R_Q1BSP_DrawPrepass(entity_render_t *ent)
+{
+ dp_model_t *model = ent->model;
+ if (model == NULL)
+ return;
+ if (ent == r_refdef.scene.worldentity)
+ R_DrawWorldSurfaces(false, true, false, false, true);
+ else
+ R_DrawModelSurfaces(ent, false, true, false, false, true);
}
typedef struct r_q1bsp_getlightinfo_s
const unsigned char *pvs;
qboolean svbsp_active;
qboolean svbsp_insertoccluder;
+ int numfrustumplanes;
+ const mplane_t *frustumplanes;
}
r_q1bsp_getlightinfo_t;
// return;
if (!plane)
break;
- //if (!r_shadow_compilingrtlight && R_CullBoxCustomPlanes(node->mins, node->maxs, rsurface.rtlight_numfrustumplanes, rsurface.rtlight_frustumplanes))
+ //if (!r_shadow_compilingrtlight && R_CullBoxCustomPlanes(node->mins, node->maxs, rtlight->cached_numfrustumplanes, rtlight->cached_frustumplanes))
// return;
if (plane->type < 3)
{
node = node->children[sides - 1];
}
}
- if (!r_shadow_compilingrtlight && R_CullBoxCustomPlanes(node->mins, node->maxs, rsurface.rtlight_numfrustumplanes, rsurface.rtlight_frustumplanes))
+ if (!r_shadow_compilingrtlight && R_CullBoxCustomPlanes(node->mins, node->maxs, info->numfrustumplanes, info->frustumplanes))
return;
leaf = (mleaf_t *)node;
if (info->svbsp_active)
{
int i;
mportal_t *portal;
- double points[128][3];
+ static double points[128][3];
for (portal = leaf->portals;portal;portal = portal->next)
{
for (i = 0;i < portal->numpoints;i++)
}
}
-void R_Q1BSP_GetLightInfo(entity_render_t *ent, vec3_t relativelightorigin, float lightradius, vec3_t outmins, vec3_t outmaxs, int *outleaflist, unsigned char *outleafpvs, int *outnumleafspointer, int *outsurfacelist, unsigned char *outsurfacepvs, int *outnumsurfacespointer, unsigned char *outshadowtrispvs, unsigned char *outlighttrispvs, unsigned char *visitingleafpvs)
+void R_Q1BSP_GetLightInfo(entity_render_t *ent, vec3_t relativelightorigin, float lightradius, vec3_t outmins, vec3_t outmaxs, int *outleaflist, unsigned char *outleafpvs, int *outnumleafspointer, int *outsurfacelist, unsigned char *outsurfacepvs, int *outnumsurfacespointer, unsigned char *outshadowtrispvs, unsigned char *outlighttrispvs, unsigned char *visitingleafpvs, int numfrustumplanes, const mplane_t *frustumplanes)
{
r_q1bsp_getlightinfo_t info;
VectorCopy(relativelightorigin, info.relativelightorigin);
info.outshadowtrispvs = outshadowtrispvs;
info.outlighttrispvs = outlighttrispvs;
info.outnumsurfaces = 0;
+ info.numfrustumplanes = numfrustumplanes;
+ info.frustumplanes = frustumplanes;
VectorCopy(info.relativelightorigin, info.outmins);
VectorCopy(info.relativelightorigin, info.outmaxs);
memset(visitingleafpvs, 0, (info.model->brush.num_leafs + 7) >> 3);
#define RSURF_MAX_BATCHSURFACES 8192
+extern qboolean r_shadow_usingdeferredprepass;
void R_Q1BSP_DrawLight(entity_render_t *ent, int numsurfaces, const int *surfacelist, const unsigned char *trispvs)
{
dp_model_t *model = ent->model;
int i, k, kend, l, m, mend, endsurface, batchnumsurfaces, batchnumtriangles, batchfirstvertex, batchlastvertex, batchfirsttriangle;
qboolean usebufferobject, culltriangles;
const int *element3i;
- msurface_t *batchsurfacelist[RSURF_MAX_BATCHSURFACES];
- int batchelements[BATCHSIZE*3];
+ static msurface_t *batchsurfacelist[RSURF_MAX_BATCHSURFACES];
+ static int batchelements[BATCHSIZE*3];
texture_t *tex;
CHECKGLERROR
culltriangles = r_shadow_culltriangles.integer && !(ent->flags & RENDER_NOSELFSHADOW);
}
continue;
}
+ if (r_shadow_usingdeferredprepass)
+ continue;
batchnumtriangles = 0;
batchfirsttriangle = surface->num_firsttriangle;
m = 0; // hush warning