- cd = cl_dlights + i;
- if (cd->radius <= 0)
- continue;
- rd = &r_dlight[r_numdlights++];
- VectorCopy(cd->origin, rd->origin);
- VectorScale(cd->color, d_lightstylevalue[cd->style] * (1.0f / 256.0f), rd->color);
- rd->radius = bound(0, cd->radius, 2048.0f);
- VectorScale(rd->color, rd->radius * 64.0f, rd->light);
-#if 0
- rd->cullradius2 = DotProduct(rd->light, rd->light) * (0.25f / (64.0f * 64.0f)) + 4096.0f;
- // clamp radius to avoid overflowing division table in lightmap code
- rd->cullradius2 = bound(0, rd->cullradius2, 2048.0f*2048.0f);
- rd->cullradius = sqrt(rd->cullradius2);
-#else
- rd->cullradius = rd->radius;
- rd->cullradius2 = rd->cullradius * rd->cullradius;
-#endif
- rd->subtract = 1.0f / rd->cullradius2;
- rd->ent = cd->ent;
- rd->cubemapnum = cd->cubemapnum;
- rd->shadow = cd->shadow;
- rd->corona = cd->corona;
-
- rd->matrix_lighttoworld = cd->matrix;
- Matrix4x4_ConcatScale(&rd->matrix_lighttoworld, rd->cullradius);
- Matrix4x4_Invert_Simple(&rd->matrix_worldtolight, &rd->matrix_lighttoworld);
- Matrix4x4_Concat(&rd->matrix_worldtoattenuationxyz, &matrix_attenuationxyz, &rd->matrix_worldtolight);
- Matrix4x4_Concat(&rd->matrix_worldtoattenuationz, &matrix_attenuationz, &rd->matrix_worldtolight);
-
- c_dlights++; // count every dlight in use
+ if (cl_dlights[i].radius > 0)
+ {
+ R_RTLight_UpdateFromDLight(&cl_dlights[i].rtlight, &cl_dlights[i], false);
+ // FIXME: use pointer instead of copy
+ r_dlight[r_numdlights++] = cl_dlights[i];
+ c_dlights++; // count every dlight in use
+ }