by CARPEDIEM » Feb 24, 2001 @ 5:36pm
Here Dan, see if you like it, it's an optimization "A la argentina"<br><br>void D_PolysetCalcGradients (int skinwidth)<br>{<br><br> int xstepdenominv, ystepdenominv;<br> int p01_minus_p21, p11_minus_p21, p00_minus_p20, p10_minus_p20, t0, t1;;<br> p00_minus_p20 = (r_p0[0] - r_p2[0]);<br> p01_minus_p21 = (r_p0[1] - r_p2[1]);<br> p10_minus_p20 = (r_p1[0] - r_p2[0]);<br> p11_minus_p21 = (r_p1[1] - r_p2[1]);<br> xstepdenominv = (1000 / d_xdenom);<br> ystepdenominv = -xstepdenominv;<br> t0 = (r_p0[4] - r_p2[4]);<br> t1 = (r_p1[4] - r_p2[4]);<br> r_lstepx = ((t1 * p01_minus_p21 - t0 * p11_minus_p21) * xstepdenominv) / 1000;<br> r_lstepy = ((t1 * p00_minus_p20 - t0 * p10_minus_p20) * ystepdenominv) / 1000;<br> t0 = (r_p0[2] - r_p2[2]);<br> t1 = (r_p1[2] - r_p2[2]);<br> r_sstepx = ((t1 * p01_minus_p21 - t0 * p11_minus_p21) * xstepdenominv) / 1000;<br> r_sstepy = ((t1 * p00_minus_p20 - t0* p10_minus_p20) * ystepdenominv) / 1000;<br> t0 = (r_p0[3] - r_p2[3]);<br> t1 = (r_p1[3] - r_p2[3]);<br> r_tstepx = ((t1 * p01_minus_p21 - t0 * p11_minus_p21) * xstepdenominv) / 1000;<br> r_tstepy = ((t1 * p00_minus_p20 - t0 * p10_minus_p20) * ystepdenominv) / 1000;<br> t0 = (r_p0[5] - r_p2[5]);<br> t1 = (r_p1[5] - r_p2[5]);<br> r_zistepx = ((t1 * p01_minus_p21 - t0 * p11_minus_p21) * xstepdenominv) / 1000;<br> r_zistepy = ((t1 * p00_minus_p20 - t0 * p10_minus_p20) * ystepdenominv) / 1000;<br> a_sstepxfrac = r_sstepx & 0xFFFF;<br> a_tstepxfrac = r_tstepx & 0xFFFF;<br> a_ststepxwhole = skinwidth * (r_tstepx >> 16) + (r_sstepx >> 16);<br><br>}<br><br>that funcion is found in d_polyse.c Try it and you'll notice a neat increase in performance.<br>about 0.13 fps faster on the timerefresh test and the graphics glitches are not very big, the gun isn't as good as it should when you are shooting but hey. 0.13 is 0.13 right?<br><br>