]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - r_light.c
Added back "turn left" and "turn right" to the Transfusion bind list. Added 2 new...
[xonotic/darkplaces.git] / r_light.c
index d2ae578d4c516ee09f7e69e477c321610a025f4c..e233ff7e188c4ffdc98a77cd539fa62f2e8c7f1c 100644 (file)
--- a/r_light.c
+++ b/r_light.c
@@ -53,7 +53,7 @@ void r_light_start(void)
                        pixels[y][x][3] = 255;
                }
        }
-       lightcorona = R_LoadTexture (lighttexturepool, "lightcorona", 32, 32, &pixels[0][0][0], TEXTYPE_RGBA, TEXF_PRECACHE);
+       lightcorona = R_LoadTexture2D(lighttexturepool, "lightcorona", 32, 32, &pixels[0][0][0], TEXTYPE_RGBA, TEXF_PRECACHE, NULL);
 }
 
 void r_light_shutdown(void)
@@ -132,7 +132,7 @@ void R_BuildLightList(void)
                        rd->cullradius2 = (2048.0f * 2048.0f);
                rd->cullradius = sqrt(rd->cullradius2);
                rd->subtract = 1.0f / rd->cullradius2;
-               //rd->ent = cd->ent;
+               rd->ent = cd->ent;
                c_dlights++; // count every dlight in use
        }
 }
@@ -153,6 +153,10 @@ void R_DrawCoronas(void)
        R_Mesh_Matrix(&r_identitymatrix);
        R_Mesh_State(&m);
        viewdist = DotProduct(r_origin, vpn);
+       varray_texcoord[0][ 0] = 0;varray_texcoord[0][ 1] = 0;
+       varray_texcoord[0][ 4] = 0;varray_texcoord[0][ 5] = 1;
+       varray_texcoord[0][ 8] = 1;varray_texcoord[0][ 9] = 1;
+       varray_texcoord[0][12] = 1;varray_texcoord[0][13] = 0;
        for (i = 0;i < r_numdlights;i++)
        {
                rd = r_dlight + i;
@@ -167,18 +171,7 @@ void R_DrawCoronas(void)
                                VectorSubtract(rd->origin, r_origin, diff);
                                scale *= 1 - exp(fogdensity/DotProduct(diff,diff));
                        }
-                       varray_color[ 0] = varray_color[ 4] = varray_color[ 8] = varray_color[12] = rd->light[0] * scale;
-                       varray_color[ 1] = varray_color[ 5] = varray_color[ 9] = varray_color[13] = rd->light[1] * scale;
-                       varray_color[ 2] = varray_color[ 6] = varray_color[10] = varray_color[14] = rd->light[2] * scale;
-                       varray_color[ 3] = varray_color[ 7] = varray_color[11] = varray_color[15] = 1;
-                       varray_texcoord[0][0] = 0;
-                       varray_texcoord[0][1] = 0;
-                       varray_texcoord[0][2] = 0;
-                       varray_texcoord[0][3] = 1;
-                       varray_texcoord[0][4] = 1;
-                       varray_texcoord[0][5] = 1;
-                       varray_texcoord[0][6] = 1;
-                       varray_texcoord[0][7] = 0;
+                       GL_Color(rd->light[0] * scale, rd->light[1] * scale, rd->light[2] * scale, 1);
                        scale = rd->cullradius * 0.25f;
                        if (gl_flashblend.integer)
                                scale *= 2.0f;
@@ -212,7 +205,6 @@ DYNAMIC LIGHTS
 R_MarkLights
 =============
 */
-extern int r_pvsframecount;
 static void R_OldMarkLights (entity_render_t *ent, vec3_t lightorigin, rdlight_t *rd, int bit, int bitindex, mnode_t *node)
 {
        float ndist, maxdist;
@@ -249,7 +241,7 @@ loc0:
        surf = ent->model->surfaces + node->firstsurface;
        for (i = 0;i < node->numsurfaces;i++, surf++)
        {
-               if (surfacepvsframes[surf->number] != r_pvsframecount)
+               if (surfacepvsframes[surf->number] != ent->model->pvsframecount)
                        continue;
                dist = ndist;
                if (surf->flags & SURF_PLANEBACK)
@@ -389,7 +381,7 @@ static void R_VisMarkLights (entity_render_t *ent, rdlight_t *rd, int bit, int b
                                                        if (surf->lightframe == lightframe)
                                                                continue;
                                                        surf->lightframe = lightframe;
-                                                       if (surfacepvsframes[surf->number] != r_pvsframecount)
+                                                       if (surfacepvsframes[surf->number] != model->pvsframecount)
                                                                continue;
                                                        dist = PlaneDiff(lightorigin, surf->plane);
                                                        if (surf->flags & SURF_PLANEBACK)
@@ -670,7 +662,7 @@ void R_ModelLightPoint (const entity_render_t *ent, vec3_t color, const vec3_t p
                RecursiveLightPoint (color, cl.worldmodel->nodes, p[0], p[1], p[2], p[2] - 65536);
 }
 
-void R_LightModel(const entity_render_t *ent, int numverts, float colorr, float colorg, float colorb, int worldcoords)
+void R_LightModel(const entity_render_t *ent, int numverts, float *vertices, float *normals, float *colors, float colorr, float colorg, float colorb, int worldcoords)
 {
        int i, j, nearlights = 0, maxnearlights = r_modellights.integer;
        float color[3], basecolor[3], v[3], t, *av, *avn, *avc, a, f, dist2, mscale, dot, stylescale, intensity, ambientcolor[3];
@@ -828,11 +820,11 @@ void R_LightModel(const entity_render_t *ent, int numverts, float colorr, float
        basecolor[0] *= colorr;
        basecolor[1] *= colorg;
        basecolor[2] *= colorb;
-       avc = aliasvertcolor;
+       avc = colors;
        if (nearlights)
        {
-               av = aliasvert;
-               avn = aliasvertnorm;
+               av = vertices;
+               avn = normals;
                for (i = 0;i < numverts;i++)
                {
                        VectorCopy(basecolor, color);
@@ -874,7 +866,7 @@ void R_LightModel(const entity_render_t *ent, int numverts, float colorr, float
                        avc[3] = a;
                        avc += 4;
                        av += 4;
-                       avn += 3;
+                       avn += 4;
                }
        }
        else