X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=r_lightning.c;h=15ac59335db2684f2278cd548d9658b2e6589f44;hb=aa33d8f8642530f7f266d6cde1422f95aa74b2be;hp=e80216ee434206ace92b13d27c9cb33e3dad0a90;hpb=32d2ef1df7b629964fa7871f98460afbca3367c1;p=xonotic%2Fdarkplaces.git diff --git a/r_lightning.c b/r_lightning.c index e80216ee..15ac5933 100644 --- a/r_lightning.c +++ b/r_lightning.c @@ -114,9 +114,9 @@ void r_lightningbeams_setuptexture(void) int x, y; qbyte *data, *noise1, *noise2; - data = Mem_Alloc(tempmempool, BEAMWIDTH * BEAMHEIGHT * 4); - noise1 = Mem_Alloc(tempmempool, BEAMHEIGHT * BEAMHEIGHT); - noise2 = Mem_Alloc(tempmempool, BEAMHEIGHT * BEAMHEIGHT); + data = (qbyte *)Mem_Alloc(tempmempool, BEAMWIDTH * BEAMHEIGHT * 4); + noise1 = (qbyte *)Mem_Alloc(tempmempool, BEAMHEIGHT * BEAMHEIGHT); + noise2 = (qbyte *)Mem_Alloc(tempmempool, BEAMHEIGHT * BEAMHEIGHT); fractalnoise(noise1, BEAMHEIGHT, BEAMHEIGHT / 8); fractalnoise(noise2, BEAMHEIGHT, BEAMHEIGHT / 16); @@ -229,7 +229,7 @@ float beamrepeatscale; void R_DrawLightningBeamCallback(const void *calldata1, int calldata2) { - const beam_t *b = calldata1; + const beam_t *b = (beam_t *)calldata1; rmeshstate_t m; vec3_t beamdir, right, up, offset; float length, t1, t2; @@ -253,14 +253,14 @@ void R_DrawLightningBeamCallback(const void *calldata1, int calldata2) // (this leaves only a vector pointing directly away from the beam) t1 = -DotProduct(up, beamdir); VectorMA(up, t1, beamdir, up); - // now we have a vector pointing away from the beam, now we need to normalize it - VectorNormalizeFast(up); - // generate right vector from forward and up, the result is already normalized - // (CrossProduct returns a vector of multiplied length of the two inputs) + // generate right vector from forward and up, the result is unnormalized CrossProduct(beamdir, up, right); + // now normalize the right vector and up vector + VectorNormalize(right); + VectorNormalize(up); // calculate T coordinate scrolling (start and end texcoord along the beam) - t1 = cl.time * -r_lightningbeam_scroll.value;// + beamrepeatscale * DotProduct(b->start, beamdir); + t1 = r_refdef.time * -r_lightningbeam_scroll.value;// + beamrepeatscale * DotProduct(b->start, beamdir); t1 = t1 - (int) t1; t2 = t1 + beamrepeatscale * length; @@ -321,7 +321,7 @@ void R_DrawLightningBeamCallback(const void *calldata1, int calldata2) // draw the 3 polygons as one batch of 6 triangles using the 12 vertices GL_LockArrays(0, 12); - R_Mesh_Draw(12, 6, r_lightningbeamelements); + R_Mesh_Draw(0, 12, 6, r_lightningbeamelements); GL_LockArrays(0, 0); } @@ -337,7 +337,7 @@ void R_DrawLightningBeams(void) beamrepeatscale = 1.0f / r_lightningbeam_repeatdistance.value; for (i = 0, b = cl_beams;i < cl_max_beams;i++, b++) { - if (b->model && b->endtime >= cl.time && b->lightning) + if (b->model && b->endtime >= r_refdef.time && b->lightning) { VectorAdd(b->start, b->end, org); VectorScale(org, 0.5f, org);