From: Holger Z. <hz...@us...> - 2004-07-12 22:08:18
|
Update of /cvsroot/jake2/jake2/src/jake2/render/fastjogl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28123/src/jake2/render/fastjogl Modified Files: Image.java Mesh.java Warp.java Model.java Light.java Log Message: small optimizations Index: Light.java =================================================================== RCS file: /cvsroot/jake2/jake2/src/jake2/render/fastjogl/Light.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Light.java 9 Jul 2004 16:44:01 -0000 1.3 --- Light.java 12 Jul 2004 22:08:02 -0000 1.4 *************** *** 224,234 **** float[] lightspot = {0, 0, 0}; // vec3_t - // TODO sync with jogl renderer. hoz int RecursiveLightPoint (mnode_t node, float[] start, float[] end) { ! float front, back, frac; ! boolean side; ! int sideIndex; ! cplane_t plane; msurface_t surf; int s, t, ds, dt; --- 224,232 ---- float[] lightspot = {0, 0, 0}; // vec3_t int RecursiveLightPoint (mnode_t node, float[] start, float[] end) { ! if (node.contents != -1) ! return -1; // didn't hit anything ! msurface_t surf; int s, t, ds, dt; *************** *** 237,259 **** ByteBuffer lightmap; int maps; - int r; float[] mid = {0, 0, 0}; - - if (node.contents != -1) - return -1; // didn't hit anything // calculate mid point // FIXME: optimize for axial ! plane = node.plane; ! front = Math3D.DotProduct (start, plane.normal) - plane.dist; ! back = Math3D.DotProduct (end, plane.normal) - plane.dist; ! side = (front < 0); ! sideIndex = (side) ? 1 : 0; if ( (back < 0) == side) return RecursiveLightPoint (node.children[sideIndex], start, end); ! frac = front / (front-back); mid[0] = start[0] + (end[0] - start[0])*frac; mid[1] = start[1] + (end[1] - start[1])*frac; --- 235,253 ---- ByteBuffer lightmap; int maps; float[] mid = {0, 0, 0}; // calculate mid point // FIXME: optimize for axial ! cplane_t plane = node.plane; ! float front = Math3D.DotProduct (start, plane.normal) - plane.dist; ! float back = Math3D.DotProduct (end, plane.normal) - plane.dist; ! boolean side = (front < 0); ! int sideIndex = (side) ? 1 : 0; if ( (back < 0) == side) return RecursiveLightPoint (node.children[sideIndex], start, end); ! float frac = front / (front-back); mid[0] = start[0] + (end[0] - start[0])*frac; mid[1] = start[1] + (end[1] - start[1])*frac; *************** *** 261,265 **** // go down front side ! r = RecursiveLightPoint (node.children[sideIndex], start, mid); if (r >= 0) return r; // hit something --- 255,259 ---- // go down front side ! int r = RecursiveLightPoint (node.children[sideIndex], start, mid); if (r >= 0) return r; // hit something *************** *** 342,350 **** float[] end = {0, 0, 0}; - float r; - int lnum; dlight_t dl; - float light; - float[] dist = {0, 0, 0}; float add; --- 336,340 ---- *************** *** 359,363 **** end[2] = p[2] - 2048; ! r = RecursiveLightPoint(r_worldmodel.nodes[0], p, end); if (r == -1) --- 349,353 ---- end[2] = p[2] - 2048; ! float r = RecursiveLightPoint(r_worldmodel.nodes[0], p, end); if (r == -1) *************** *** 373,383 **** // add dynamic lights // ! light = 0; ! for (lnum=0 ; lnum<r_newrefdef.num_dlights ; lnum++) { dl = r_newrefdef.dlights[lnum]; ! Math3D.VectorSubtract (currententity.origin, dl.origin, dist); ! add = dl.intensity - Math3D.VectorLength(dist); add *= (1.0f/256); if (add > 0) --- 363,372 ---- // add dynamic lights // ! for (int lnum=0 ; lnum<r_newrefdef.num_dlights ; lnum++) { dl = r_newrefdef.dlights[lnum]; ! Math3D.VectorSubtract (currententity.origin, dl.origin, end); ! add = dl.intensity - Math3D.VectorLength(end); add *= (1.0f/256); if (add > 0) *************** *** 390,394 **** } - // =================================================================== --- 379,382 ---- Index: Warp.java =================================================================== RCS file: /cvsroot/jake2/jake2/src/jake2/render/fastjogl/Warp.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Warp.java 9 Jul 2004 06:50:49 -0000 1.1 --- Warp.java 12 Jul 2004 22:08:02 -0000 1.2 *************** *** 26,38 **** package jake2.render.fastjogl; - import java.nio.FloatBuffer; - import jake2.Defines; import jake2.Globals; ! import jake2.game.GameBase; ! import jake2.render.glpoly_t; ! import jake2.render.image_t; ! import jake2.render.msurface_t; import jake2.util.Math3D; import net.java.games.jogl.GL; --- 26,36 ---- package jake2.render.fastjogl; import jake2.Defines; import jake2.Globals; ! import jake2.render.*; import jake2.util.Math3D; + + import java.nio.FloatBuffer; + import net.java.games.jogl.GL; *************** *** 126,130 **** float[] dist = new float[64]; float frac; - glpoly_t poly; float s, t; float[] total = {0, 0, 0}; --- 124,127 ---- *************** *** 195,199 **** // init polys ! poly = new glpoly_t(numverts + 2); poly.next = warpface.polys; --- 192,196 ---- // init polys ! glpoly_t poly = new glpoly_t(numverts + 2); poly.next = warpface.polys; Index: Mesh.java =================================================================== RCS file: /cvsroot/jake2/jake2/src/jake2/render/fastjogl/Mesh.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Mesh.java 9 Jul 2004 10:25:29 -0000 1.2 --- Mesh.java 12 Jul 2004 22:08:02 -0000 1.3 *************** *** 68,78 **** float[] shadedots = r_avertexnormal_dots[0]; ! void GL_LerpVerts( int nverts, qfiles.dtrivertx_t[] v, qfiles.dtrivertx_t[] ov, qfiles.dtrivertx_t[] verts, FloatBuffer lerp, float[] move, float[] frontv, float[] backv ) { - int i; int lerpIndex = 0; int[] ovv; int[] vv; //PMM -- added RF_SHELL_DOUBLE, RF_SHELL_HALF_DAM --- 68,78 ---- float[] shadedots = r_avertexnormal_dots[0]; ! void GL_LerpVerts( int nverts, qfiles.dtrivertx_t[] v, qfiles.dtrivertx_t[] ov, qfiles.dtrivertx_t[] verts, float[] move, float[] frontv, float[] backv ) { int lerpIndex = 0; int[] ovv; int[] vv; + FloatBuffer lerp = vertexArrayBuf; //PMM -- added RF_SHELL_DOUBLE, RF_SHELL_HALF_DAM *************** *** 81,85 **** float[] normal; int j = 0; ! for (i=0 ; i < nverts; i++/* , v++, ov++, lerp+=4 */) { normal = r_avertexnormals[verts[i].lightnormalindex]; --- 81,85 ---- float[] normal; int j = 0; ! for (int i=0 ; i < nverts; i++/* , v++, ov++, lerp+=4 */) { normal = r_avertexnormals[verts[i].lightnormalindex]; *************** *** 96,100 **** { int j = 0; ! for (i=0 ; i < nverts; i++ /* , v++, ov++, lerp+=4 */) { ovv = ov[i].v; --- 96,100 ---- { int j = 0; ! for (int i=0 ; i < nverts; i++ /* , v++, ov++, lerp+=4 */) { ovv = ov[i].v; *************** *** 141,145 **** float[] move = {0, 0, 0}; // vec3_t - float[] delta = {0, 0, 0}; // vec3_t float[] frontv = {0, 0, 0}; // vec3_t --- 141,144 ---- *************** *** 169,178 **** // move should be the delta back to the previous frame * backlerp ! Math3D.VectorSubtract (currententity.oldorigin, currententity.origin, delta); Math3D.AngleVectors (currententity.angles, vectors[0], vectors[1], vectors[2]); ! move[0] = Math3D.DotProduct (delta, vectors[0]); // forward ! move[1] = -Math3D.DotProduct (delta, vectors[1]); // left ! move[2] = Math3D.DotProduct (delta, vectors[2]); // up Math3D.VectorAdd (move, oldframe.translate, move); --- 168,177 ---- // move should be the delta back to the previous frame * backlerp ! Math3D.VectorSubtract (currententity.oldorigin, currententity.origin, frontv); Math3D.AngleVectors (currententity.angles, vectors[0], vectors[1], vectors[2]); ! move[0] = Math3D.DotProduct (frontv, vectors[0]); // forward ! move[1] = -Math3D.DotProduct (frontv, vectors[1]); // left ! move[2] = Math3D.DotProduct (frontv, vectors[2]); // up Math3D.VectorAdd (move, oldframe.translate, move); *************** *** 181,188 **** { move[i] = backlerp*move[i] + frontlerp*frame.translate[i]; - } - - for (i=0 ; i<3 ; i++) - { frontv[i] = frontlerp*frame.scale[i]; backv[i] = backlerp*oldframe.scale[i]; --- 180,183 ---- *************** *** 191,195 **** // ab hier wird optimiert ! GL_LerpVerts( paliashdr.num_xyz, v, ov, verts, vertexArrayBuf, move, frontv, backv ); //gl.glEnableClientState( GL.GL_VERTEX_ARRAY ); --- 186,190 ---- // ab hier wird optimiert ! GL_LerpVerts( paliashdr.num_xyz, v, ov, verts, move, frontv, backv ); //gl.glEnableClientState( GL.GL_VERTEX_ARRAY ); Index: Image.java =================================================================== RCS file: /cvsroot/jake2/jake2/src/jake2/render/fastjogl/Image.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Image.java 9 Jul 2004 10:22:28 -0000 1.2 --- Image.java 12 Jul 2004 22:08:02 -0000 1.3 *************** *** 751,755 **** } // TODO check this: R_FloodFillSkin( byte[] skin, int skinwidth, int skinheight) - // TODO sync with jogl renderer. hoz void R_FloodFillSkin(byte[] skin, int skinwidth, int skinheight) { // byte fillcolor = *skin; // assume this is the pixel to fill --- 751,754 ---- Index: Model.java =================================================================== RCS file: /cvsroot/jake2/jake2/src/jake2/render/fastjogl/Model.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Model.java 9 Jul 2004 06:50:49 -0000 1.1 --- Model.java 12 Jul 2004 22:08:02 -0000 1.2 *************** *** 561,567 **** float val; ! int i, j, e; mvertex_t v; - mtexinfo_t tex; int[] bmins = {0, 0}; int[] bmaxs = {0, 0}; --- 561,566 ---- float val; ! int j, e; mvertex_t v; int[] bmins = {0, 0}; int[] bmaxs = {0, 0}; *************** *** 570,576 **** maxs[0] = maxs[1] = -99999; ! tex = s.texinfo; ! for (i=0 ; i<s.numedges ; i++) { e = loadmodel.surfedges[s.firstedge+i]; --- 569,575 ---- maxs[0] = maxs[1] = -99999; ! mtexinfo_t tex = s.texinfo; ! for (int i=0 ; i<s.numedges ; i++) { e = loadmodel.surfedges[s.firstedge+i]; *************** *** 593,597 **** } ! for (i=0 ; i<2 ; i++) { bmins[i] = (int)Math.floor(mins[i]/16); --- 592,596 ---- } ! for (int i=0 ; i<2 ; i++) { bmins[i] = (int)Math.floor(mins[i]/16); |