- for (lnum = 0, sl = cl.worldmodel->lights;lnum < cl.worldmodel->numlights;lnum++, sl++)
- {
- if (d_lightstylevalue[sl->style] <= 0)
- continue;
- /*
- mins[0] = sl->origin[0] - sl->cullradius;
- maxs[0] = sl->origin[0] + sl->cullradius;
- mins[1] = sl->origin[1] - sl->cullradius;
- maxs[1] = sl->origin[1] + sl->cullradius;
- mins[2] = sl->origin[2] - sl->cullradius;
- maxs[2] = sl->origin[2] + sl->cullradius;
- if (R_CullBox(mins, maxs))
- continue;
- */
- if (R_CullBox(sl->mins, sl->maxs))
- continue;
- memset(&m, 0, sizeof(m));
- m.blendfunc1 = GL_ONE;
- m.blendfunc2 = GL_ONE;
- R_Mesh_State(&m);
- GL_Color(0.0 * r_colorscale, 0.0125 * r_colorscale, 0.1 * r_colorscale, 1);
- if (sl->shadowvolume && r_staticworldlights.integer)
- R_DrawWorldLightShadowVolume(sl, true);
- else
- {
- ent = &cl_entities[0].render;
- R_TestAndDrawShadowVolume(ent, sl->origin, sl->cullradius, true);
- }
- /*
- ent = &cl_entities[0].render;
- if (ent->model && ent->model->DrawShadowVolume && ent->maxs[0] >= mins[0] && ent->mins[0] <= maxs[0] && ent->maxs[1] >= mins[1] && ent->mins[1] <= maxs[1] && ent->maxs[2] >= mins[2] && ent->mins[2] <= maxs[2])
- {
- Matrix4x4_Transform(&ent->inversematrix, sl->origin, relativelightorigin);
- R_Mesh_Matrix(&ent->matrix);
- ent->model->DrawShadowVolume (ent, relativelightorigin, sl->cullradius, true);
- }
- */
- if (r_drawentities.integer)
- {
- for (i = 0;i < r_refdef.numentities;i++)
- {
- ent = r_refdef.entities[i];
- /*
- if (ent->mins[0] <= sl->maxs[0]
- && ent->maxs[0] >= sl->mins[0]
- && ent->mins[1] <= sl->maxs[1]
- && ent->maxs[1] >= sl->mins[1]
- && ent->mins[2] <= sl->maxs[2]
- && ent->maxs[2] >= sl->mins[2])
- */
- R_TestAndDrawShadowVolume(ent, sl->origin, sl->cullradius, true);
- /*
- ent = r_refdef.entities[i];
- if (ent->model && ent->model->DrawShadowVolume && ent->maxs[0] >= mins[0] && ent->mins[0] <= maxs[0] && ent->maxs[1] >= mins[1] && ent->mins[1] <= maxs[1] && ent->maxs[2] >= mins[2] && ent->mins[2] <= maxs[2])
- {
- Matrix4x4_Transform(&ent->inversematrix, sl->origin, relativelightorigin);
- R_Mesh_Matrix(&ent->matrix);
- ent->model->DrawShadowVolume (ent, relativelightorigin, sl->cullradius, true);
- }
- */
- }
- }
- }
-
- for (lnum = 0, rd = r_dlight;lnum < r_numdlights;lnum++, rd++)
- {
- mins[0] = rd->origin[0] - rd->cullradius;
- maxs[0] = rd->origin[0] + rd->cullradius;
- mins[1] = rd->origin[1] - rd->cullradius;
- maxs[1] = rd->origin[1] + rd->cullradius;
- mins[2] = rd->origin[2] - rd->cullradius;
- maxs[2] = rd->origin[2] + rd->cullradius;
- if (R_CullBox(mins, maxs))
- continue;
- memset(&m, 0, sizeof(m));
- m.blendfunc1 = GL_ONE;
- m.blendfunc2 = GL_ONE;
- R_Mesh_State(&m);
- GL_Color(0.1 * r_colorscale, 0.0125 * r_colorscale, 0.0 * r_colorscale, 1);
- ent = &cl_entities[0].render;
- if (ent != rd->ent)
- R_TestAndDrawShadowVolume(ent, rd->origin, rd->cullradius, true);
- /*
- ent = &cl_entities[0].render;
- if (ent != rd->ent && ent->model && ent->model->DrawShadowVolume && ent->maxs[0] >= mins[0] && ent->mins[0] <= maxs[0] && ent->maxs[1] >= mins[1] && ent->mins[1] <= maxs[1] && ent->maxs[2] >= mins[2] && ent->mins[2] <= maxs[2])
- {
- Matrix4x4_Transform(&ent->inversematrix, rd->origin, relativelightorigin);
- R_Mesh_Matrix(&ent->matrix);
- ent->model->DrawShadowVolume (ent, relativelightorigin, rd->cullradius, true);
- }
- */
- if (r_drawentities.integer)
- {
- for (i = 0;i < r_refdef.numentities;i++)
- {
- ent = r_refdef.entities[i];
- if (ent != rd->ent)
- R_TestAndDrawShadowVolume(ent, rd->origin, rd->cullradius, true);
- /*
- ent = r_refdef.entities[i];
- if (ent != rd->ent && ent->model && ent->model->DrawShadowVolume && ent->maxs[0] >= mins[0] && ent->mins[0] <= maxs[0] && ent->maxs[1] >= mins[1] && ent->mins[1] <= maxs[1] && ent->maxs[2] >= mins[2] && ent->mins[2] <= maxs[2])
- {
- Matrix4x4_Transform(&ent->inversematrix, rd->origin, relativelightorigin);
- R_Mesh_Matrix(&ent->matrix);
- ent->model->DrawShadowVolume (ent, relativelightorigin, rd->cullradius, true);
- }
- */
- }
- }
- }
-}
-
-#define SHADOWSPHERE_SEGMENTS 16
-
-shadowmesh_t *shadowsphere;
-void R_CreateShadowSphere(void)
-{
- int i, j;
- vec3_t angles, angles2, angles3, angles4;
- float verts[12];
- shadowsphere = Mod_ShadowMesh_Begin(zonemempool);
- for (i = 0;i < SHADOWSPHERE_SEGMENTS;i++)
- {
- for (j = 0;j < SHADOWSPHERE_SEGMENTS;j++)
- {
- angles[0] = i * 360.0f / SHADOWSPHERE_SEGMENTS;
- angles[1] = j * 360.0f / SHADOWSPHERE_SEGMENTS;
- angles[2] = 0;
- VectorCopy(angles, angles2);
- VectorCopy(angles, angles3);
- VectorCopy(angles, angles4);
- angles2[1] += 360.0f / SHADOWSPHERE_SEGMENTS;
- angles3[0] += 360.0f / SHADOWSPHERE_SEGMENTS;
- angles3[1] += 360.0f / SHADOWSPHERE_SEGMENTS;
- angles4[0] += 360.0f / SHADOWSPHERE_SEGMENTS;
- AngleVectorsFLU(angles, verts, NULL, NULL);
- AngleVectorsFLU(angles2, verts + 9, NULL, NULL);
- AngleVectorsFLU(angles3, verts + 6, NULL, NULL);
- AngleVectorsFLU(angles4, verts + 3, NULL, NULL);
- VectorScale(&verts[0], 64.0f, &verts[0]);
- VectorScale(&verts[3], 64.0f, &verts[3]);
- VectorScale(&verts[6], 64.0f, &verts[6]);
- VectorScale(&verts[9], 64.0f, &verts[9]);
- Mod_ShadowMesh_AddPolygon(zonemempool, shadowsphere, 4, verts);
- AngleVectorsFLU(angles, verts, NULL, NULL);
- AngleVectorsFLU(angles2, verts + 3, NULL, NULL);
- AngleVectorsFLU(angles3, verts + 6, NULL, NULL);
- AngleVectorsFLU(angles4, verts + 9, NULL, NULL);
- VectorScale(&verts[0], 128.0f, &verts[0]);
- VectorScale(&verts[3], 128.0f, &verts[3]);
- VectorScale(&verts[6], 128.0f, &verts[6]);
- VectorScale(&verts[9], 128.0f, &verts[9]);
- Mod_ShadowMesh_AddPolygon(zonemempool, shadowsphere, 4, verts);
- }
- }
- shadowsphere = Mod_ShadowMesh_Finish(zonemempool, shadowsphere);
-}
-