From: Carsten W. <ca...@us...> - 2005-05-07 23:44:47
|
Update of /cvsroot/jake2/jake2/src/jake2/render/lwjgl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31831/src/jake2/render/lwjgl Modified Files: Model.java Mesh.java Log Message: model frame animation is now stored in an int[]; an int value contains the x, y, z, lightnormal (8bit for each element) this reduces the memory footprint massive and performs better Index: Model.java =================================================================== RCS file: /cvsroot/jake2/jake2/src/jake2/render/lwjgl/Model.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Model.java 7 May 2005 18:00:03 -0000 1.8 --- Model.java 7 May 2005 23:44:37 -0000 1.9 *************** *** 1070,1076 **** poutframe[i] = new qfiles.daliasframe_t(buffer); // verts are all 8 bit, so no swapping needed ! poutframe[i].verts = new qfiles.dtrivertx_t[pheader.num_xyz]; for (int k=0; k < pheader.num_xyz; k++) { ! poutframe[i].verts[k] = new qfiles.dtrivertx_t(buffer); } } --- 1070,1076 ---- poutframe[i] = new qfiles.daliasframe_t(buffer); // verts are all 8 bit, so no swapping needed ! poutframe[i].verts = new int[pheader.num_xyz]; for (int k=0; k < pheader.num_xyz; k++) { ! poutframe[i].verts[k] = buffer.getInt(); } } Index: Mesh.java =================================================================== RCS file: /cvsroot/jake2/jake2/src/jake2/render/lwjgl/Mesh.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Mesh.java 7 May 2005 22:15:05 -0000 1.6 --- Mesh.java 7 May 2005 23:44:37 -0000 1.7 *************** *** 77,88 **** * @param backv */ ! void GL_LerpVerts(int nverts, qfiles.dtrivertx_t[] ov, qfiles.dtrivertx_t[] verts, float[] move, float[] frontv, float[] backv ) { FloatBuffer lerp = vertexArrayBuf; lerp.limit((nverts << 2) - nverts); // nverts * 3 ! qfiles.dtrivertx_t ovv, vv; ! ! //PMM -- added RF_SHELL_DOUBLE, RF_SHELL_HALF_DAM if ( (currententity.flags & ( Defines.RF_SHELL_RED | Defines.RF_SHELL_GREEN | Defines.RF_SHELL_BLUE | Defines.RF_SHELL_DOUBLE | Defines.RF_SHELL_HALF_DAM)) != 0 ) { --- 77,87 ---- * @param backv */ ! void GL_LerpVerts(int nverts, int[] ov, int[] v, float[] move, float[] frontv, float[] backv ) { FloatBuffer lerp = vertexArrayBuf; lerp.limit((nverts << 2) - nverts); // nverts * 3 ! int ovv, vv; ! //PMM -- added RF_SHELL_DOUBLE, RF_SHELL_HALF_DAM if ( (currententity.flags & ( Defines.RF_SHELL_RED | Defines.RF_SHELL_GREEN | Defines.RF_SHELL_BLUE | Defines.RF_SHELL_DOUBLE | Defines.RF_SHELL_HALF_DAM)) != 0 ) { *************** *** 91,101 **** for (int i=0 ; i < nverts; i++/* , v++, ov++, lerp+=4 */) { ! normal = r_avertexnormals[verts[i].lightnormalindex()]; ovv = ov[i]; ! vv = verts[i]; ! ! lerp.put(++j, move[0] + ovv.v0() * backv[0] + vv.v0() * frontv[0] + normal[0] * Defines.POWERSUIT_SCALE); ! lerp.put(++j, move[1] + ovv.v1() * backv[1] + vv.v1() * frontv[1] + normal[1] * Defines.POWERSUIT_SCALE); ! lerp.put(++j, move[2] + ovv.v2() * backv[2] + vv.v2() * frontv[2] + normal[2] * Defines.POWERSUIT_SCALE); } } --- 90,99 ---- for (int i=0 ; i < nverts; i++/* , v++, ov++, lerp+=4 */) { ! vv = v[i]; ! normal = r_avertexnormals[(vv >>> 24 ) & 0xFF]; ovv = ov[i]; ! lerp.put(++j, move[0] + (ovv & 0xFF)* backv[0] + (vv & 0xFF) * frontv[0] + normal[0] * Defines.POWERSUIT_SCALE); ! lerp.put(++j, move[1] + ((ovv >>> 8) & 0xFF) * backv[1] + ((vv >>> 8) & 0xFF) * frontv[1] + normal[1] * Defines.POWERSUIT_SCALE); ! lerp.put(++j, move[2] + ((ovv >>> 16) & 0xFF) * backv[2] + ((vv >>> 16) & 0xFF) * frontv[2] + normal[2] * Defines.POWERSUIT_SCALE); } } *************** *** 106,114 **** { ovv = ov[i]; ! vv = verts[i]; ! lerp.put(++j, move[0] + ovv.v0()* backv[0] + vv.v0()*frontv[0]); ! lerp.put(++j, move[1] + ovv.v1()* backv[1] + vv.v1()*frontv[1]); ! lerp.put(++j, move[2] + ovv.v2()* backv[2] + vv.v2()*frontv[2]); } } --- 104,112 ---- { ovv = ov[i]; ! vv = v[i]; ! lerp.put(++j, move[0] + (ovv & 0xFF)* backv[0] + (vv & 0xFF)*frontv[0]); ! lerp.put(++j, move[1] + ((ovv >>> 8) & 0xFF)* backv[1] + ((vv >>> 8) & 0xFF)*frontv[1]); ! lerp.put(++j, move[2] + ((ovv >>> 16) & 0xFF)* backv[2] + ((vv >>> 16) & 0xFF)*frontv[2]); } } *************** *** 138,146 **** qfiles.daliasframe_t frame = paliashdr.aliasFrames[currententity.frame]; ! qfiles.dtrivertx_t[] verts = frame.verts; qfiles.daliasframe_t oldframe = paliashdr.aliasFrames[currententity.oldframe]; ! qfiles.dtrivertx_t[] ov = oldframe.verts; float alpha; --- 136,144 ---- qfiles.daliasframe_t frame = paliashdr.aliasFrames[currententity.frame]; ! int[] verts = frame.verts; qfiles.daliasframe_t oldframe = paliashdr.aliasFrames[currententity.oldframe]; ! int[] ov = oldframe.verts; float alpha; *************** *** 199,203 **** for (int i = 0; i < size; i++ ) { ! l = shadedots[verts[i].lightnormalindex()]; color.put(++j, l * shadelight[0]); color.put(++j, l * shadelight[1]); --- 197,201 ---- for (int i = 0; i < size; i++ ) { ! l = shadedots[(verts[i] >>> 24) & 0xFF]; color.put(++j, l * shadelight[0]); color.put(++j, l * shadelight[1]); *************** *** 265,269 **** float lheight = currententity.origin[2] - lightspot[2]; qfiles.daliasframe_t frame = paliashdr.aliasFrames[currententity.frame]; - qfiles.dtrivertx_t[] verts = frame.verts; int[] order = paliashdr.glCmds; float height = -lheight + 1.0f; --- 263,266 ---- |