X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=r_light.c;h=e233ff7e188c4ffdc98a77cd539fa62f2e8c7f1c;hb=279f0872533dc81f28514584be5e41481fc106da;hp=d2ae578d4c516ee09f7e69e477c321610a025f4c;hpb=7653d161643a1e8ed9640d445a5a13d9248d4939;p=xonotic%2Fdarkplaces.git diff --git a/r_light.c b/r_light.c index d2ae578d..e233ff7e 100644 --- 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