From b9adea7df00135eda35e98a5610b69b22dc3cf29 Mon Sep 17 00:00:00 2001 From: blackbeard334 Date: Sat, 20 Oct 2018 22:53:29 +0200 Subject: [PATCH] -fixed some lights -fixed some shadows -fixed the heads(*sigh*..they kind of looked better all fucked up) ***drum roll -fixed LOTS of texture mapping issues(look at them beautiful levels bitches!) --- .../java/neo/Game/Animation/Anim_Blend.java | 6 +- src/main/java/neo/Game/Mover.java | 2 +- src/main/java/neo/Renderer/Model_md5.java | 2 +- .../java/neo/Renderer/RenderWorld_local.java | 6 +- src/main/java/neo/Renderer/draw_common.java | 2 +- src/main/java/neo/Renderer/tr_light.java | 17 +++-- src/main/java/neo/Renderer/tr_lightrun.java | 14 ++-- src/main/java/neo/Renderer/tr_render.java | 8 +- .../java/neo/Renderer/tr_rendertools.java | 14 ++-- .../neo/Tools/Compilers/DMap/usurface.java | 2 +- src/main/java/neo/framework/DeclParticle.java | 6 +- src/main/java/neo/framework/File_h.java | 2 +- .../neo/idlib/geometry/JointTransform.java | 4 + src/main/java/neo/idlib/math/Plane.java | 1 + .../java/neo/idlib/math/Simd_Generic.java | 74 ++++--------------- src/misc/debug_report_08.txt | 15 +++- src/misc/debug_report_09.txt | 54 ++++++++++++++ 17 files changed, 130 insertions(+), 99 deletions(-) create mode 100644 src/misc/debug_report_09.txt diff --git a/src/main/java/neo/Game/Animation/Anim_Blend.java b/src/main/java/neo/Game/Animation/Anim_Blend.java index 20f8bc33..61bdf6af 100644 --- a/src/main/java/neo/Game/Animation/Anim_Blend.java +++ b/src/main/java/neo/Game/Animation/Anim_Blend.java @@ -1944,9 +1944,9 @@ private void CallFrameCommands(idEntity ent, int fromtime, int totime) { if (fromFrameTime <= 0) { // make sure first frame is called - CallFrameCommands(ent, -1, frame2.frame1); + anim.CallFrameCommands(ent, -1, frame2.frame1); } else { - CallFrameCommands(ent, frame1.frame1, frame2.frame1); + anim.CallFrameCommands(ent, frame1.frame1, frame2.frame1); } } @@ -4065,7 +4065,7 @@ public boolean GetJointLocalTransform(int/*jointHandle_t*/ jointHandle, int curr CreateFrame(currentTime, false); if (jointHandle > 0) { - idJointMat m = joints[ jointHandle]; + idJointMat m = new idJointMat(joints[ jointHandle]); m.oDivSet(joints[ modelJoints.oGet(jointHandle).parentNum]); offset.oSet(m.ToVec3()); axis.oSet(m.ToMat3()); diff --git a/src/main/java/neo/Game/Mover.java b/src/main/java/neo/Game/Mover.java index fe01ba8d..a6aab814 100644 --- a/src/main/java/neo/Game/Mover.java +++ b/src/main/java/neo/Game/Mover.java @@ -816,7 +816,7 @@ protected void BeginMove(idThread thread) { move.acceleration = at; move.movetime = move_time - at - dt; move.deceleration = dt; - move.dir = move_delta; + move.dir = new idVec3(move_delta); ProcessEvent(EV_ReachedPos); } diff --git a/src/main/java/neo/Renderer/Model_md5.java b/src/main/java/neo/Renderer/Model_md5.java index 084a53cf..e3f68451 100644 --- a/src/main/java/neo/Renderer/Model_md5.java +++ b/src/main/java/neo/Renderer/Model_md5.java @@ -324,7 +324,7 @@ public void UpdateSurface(final renderEntity_s ent, final idJointMat[] entJoints R_AllocStaticTriSurfVerts(tri, tri.numVerts); for (i = 0; i < deformInfo.numSourceVerts; i++) { tri.verts[i].Clear(); - tri.verts[i].st = texCoords.oGet(i); + tri.verts[i].st.oSet(texCoords.oGet(i)); } } diff --git a/src/main/java/neo/Renderer/RenderWorld_local.java b/src/main/java/neo/Renderer/RenderWorld_local.java index c88da8a9..5f4eca64 100644 --- a/src/main/java/neo/Renderer/RenderWorld_local.java +++ b/src/main/java/neo/Renderer/RenderWorld_local.java @@ -984,7 +984,7 @@ public int NumAreas() { =============== */ @Override - public int PointInArea(idVec3 point) { + public int PointInArea(final idVec3 point) { areaNode_t node; int nodeNum; float d; @@ -2863,7 +2863,7 @@ public boolean CullLightByPortals(final idRenderLightLocal light, final portalSt int i, j; srfTriangles_s tri; float d; - idFixedWinding w; // we won't overflow because MAX_PORTAL_PLANES = 20 + idFixedWinding w = new idFixedWinding(); // we won't overflow because MAX_PORTAL_PLANES = 20 if (r_useLightCulling.GetInteger() == 0) { return false; @@ -2888,7 +2888,7 @@ public boolean CullLightByPortals(final idRenderLightLocal light, final portalSt continue; } - w = new idFixedWinding(ow); + w.oSet(ow); // now check the winding against each of the portalStack planes for (j = 0; j < ps.numPortalPlanes - 1; j++) { diff --git a/src/main/java/neo/Renderer/draw_common.java b/src/main/java/neo/Renderer/draw_common.java index 58d64394..e7a907e7 100644 --- a/src/main/java/neo/Renderer/draw_common.java +++ b/src/main/java/neo/Renderer/draw_common.java @@ -223,7 +223,7 @@ public class draw_common { ===================== */ - public static void RB_BakeTextureMatrixIntoTexgen(idPlane[] lightProject/*[3]*/, final float[] textureMatrix) { + public static void RB_BakeTextureMatrixIntoTexgen(idVec4[]/*idPlane[]*/ lightProject/*[3]*/, final float[] textureMatrix) { float[] genMatrix = new float[16]; float[] finale = new float[16]; diff --git a/src/main/java/neo/Renderer/tr_light.java b/src/main/java/neo/Renderer/tr_light.java index 75c57b89..5facd459 100644 --- a/src/main/java/neo/Renderer/tr_light.java +++ b/src/main/java/neo/Renderer/tr_light.java @@ -619,7 +619,7 @@ public static idScreenRect R_ClippedLightScissorRectangle(viewLight_s vLight) { int i, j; idRenderLightLocal light = vLight.lightDef; idScreenRect r = new idScreenRect(); - idFixedWinding w; + idFixedWinding w = new idFixedWinding(); r.Clear(); @@ -639,7 +639,7 @@ public static idScreenRect R_ClippedLightScissorRectangle(viewLight_s vLight) { continue; } - w = new idFixedWinding(ow); + w.oSet(ow); // now check the winding against each of the frustum planes for (j = 0; j < 5; j++) { @@ -780,11 +780,12 @@ public static idScreenRect R_CalcLightScissorRectangle(viewLight_s vLight) { public static void R_AddLightSurfaces() throws idException { viewLight_s vLight; idRenderLightLocal light; - viewLight_s ptr; + viewLight_s ptr, prevPtr; int z = 0; // go through each visible light, possibly removing some from the list ptr = tr.viewDef.viewLights; + prevPtr = null; while (ptr != null) { z++; vLight = ptr; @@ -799,13 +800,15 @@ public static void R_AddLightSurfaces() throws idException { if (!r_skipSuppress.GetBool()) { if (light.parms.suppressLightInViewID != 0 && light.parms.suppressLightInViewID == tr.viewDef.renderView.viewID) { - ptr = vLight.next; + if (vLight == tr.viewDef.viewLights) tr.viewDef.viewLights = ptr = vLight.next; + else prevPtr.next = ptr = vLight.next; light.viewCount = -1; continue; } if (light.parms.allowLightInViewID != 0 && light.parms.allowLightInViewID != tr.viewDef.renderView.viewID) { - ptr = vLight.next; + if (vLight == tr.viewDef.viewLights) tr.viewDef.viewLights = ptr = vLight.next; + else prevPtr.next = ptr = vLight.next; light.viewCount = -1; continue; } @@ -857,7 +860,8 @@ public static void R_AddLightSurfaces() throws idException { // remove the light from the viewLights list, and change its frame marker // so interaction generation doesn't think the light is visible and // create a shadow for it - ptr = vLight.next; + if (vLight == tr.viewDef.viewLights) tr.viewDef.viewLights = ptr = vLight.next; + else prevPtr.next = ptr = vLight.next; light.viewCount = -1; continue; } @@ -885,6 +889,7 @@ public static void R_AddLightSurfaces() throws idException { // } // } // this one stays on the list + prevPtr = ptr; ptr = vLight.next; // if we are doing a soft-shadow novelty test, regenerate the light with diff --git a/src/main/java/neo/Renderer/tr_lightrun.java b/src/main/java/neo/Renderer/tr_lightrun.java index a43291b7..2a588561 100644 --- a/src/main/java/neo/Renderer/tr_lightrun.java +++ b/src/main/java/neo/Renderer/tr_lightrun.java @@ -426,22 +426,22 @@ public static void R_DeriveLightData(idRenderLightLocal light) throws idExceptio R_AxisToModelMatrix(light.parms.axis, light.parms.origin, light.modelMatrix); for (i = 0; i < 6; i++) { - idPlane temp; - temp = light.frustum[i]; + idPlane temp = new idPlane(); + temp.oSet(light.frustum[i]); R_LocalPlaneToGlobal(light.modelMatrix, temp, light.frustum[i]); } for (i = 0; i < 4; i++) { - idPlane temp; - temp = light.lightProject[i]; + idPlane temp = new idPlane(); + temp.oSet(light.lightProject[i]); R_LocalPlaneToGlobal(light.modelMatrix, temp, light.lightProject[i]); } // adjust global light origin for off center projections and parallel projections // we are just faking parallel by making it a very far off center for now if (light.parms.parallel) { - idVec3 dir; + idVec3 dir = new idVec3(); - dir = light.parms.lightCenter; + dir.oSet(light.parms.lightCenter); if (0 == dir.Normalize()) { // make point straight up if not specified dir.oSet(2, 1); @@ -449,7 +449,7 @@ public static void R_DeriveLightData(idRenderLightLocal light) throws idExceptio light.globalLightOrigin = light.parms.origin.oPlus(dir.oMultiply(100000)); } else { light.globalLightOrigin = light.parms.origin.oPlus(light.parms.axis.oMultiply(light.parms.lightCenter)); - } + } R_FreeLightDefFrustum(light); diff --git a/src/main/java/neo/Renderer/tr_render.java b/src/main/java/neo/Renderer/tr_render.java index 9381959a..256bdba6 100644 --- a/src/main/java/neo/Renderer/tr_render.java +++ b/src/main/java/neo/Renderer/tr_render.java @@ -868,13 +868,7 @@ public static void RB_CreateSingleDrawInteractions(final drawSurf_s surf, DrawIn // now multiply the texgen by the light texture matrix if (lightStage.texture.hasMatrix) { RB_GetShaderTextureMatrix(lightRegs, lightStage.texture, backEnd.lightTextureMatrix); - { - idPlane[] planes = new idPlane[inter.lightProjection.length]; - for (int a = 0; a < planes.length; a++) { - planes[a] = new idPlane(inter.lightProjection[a]); - } - RB_BakeTextureMatrixIntoTexgen( /*reinterpret_cast*/planes, backEnd.lightTextureMatrix); - } + RB_BakeTextureMatrixIntoTexgen( /*reinterpret_cast*/inter.lightProjection, backEnd.lightTextureMatrix); } inter.bumpImage = null; diff --git a/src/main/java/neo/Renderer/tr_rendertools.java b/src/main/java/neo/Renderer/tr_rendertools.java index c8ae4d59..7841cd98 100644 --- a/src/main/java/neo/Renderer/tr_rendertools.java +++ b/src/main/java/neo/Renderer/tr_rendertools.java @@ -389,7 +389,7 @@ public static void RB_CountStencilBuffer() { int i; ByteBuffer stencilReadback; - stencilReadback = ByteBuffer.allocate(glConfig.vidWidth * glConfig.vidHeight);// R_StaticAlloc(glConfig.vidWidth * glConfig.vidHeight); + stencilReadback = BufferUtils.createByteBuffer(glConfig.vidWidth * glConfig.vidHeight);// R_StaticAlloc(glConfig.vidWidth * glConfig.vidHeight); qglReadPixels(0, 0, glConfig.vidWidth, glConfig.vidHeight, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, stencilReadback); count = 0; @@ -820,8 +820,8 @@ public static void RB_ShowShadowCount() { } } - shadowCache_s cache = new shadowCache_s(vertexCache.Position(tri.shadowCache));//TODO:figure out how to work these damn casts. - qglVertexPointer(4, GL_FLOAT, 0/*sizeof(cache)*/, cache.xyz.ToFloatPtr()); + ByteBuffer cache = vertexCache.Position(tri.shadowCache);//TODO:figure out how to work these damn casts. + qglVertexPointer(4, GL_FLOAT, shadowCache_s.BYTES/*sizeof(cache)*/, cache); RB_DrawElementsWithCounters(tri); } } @@ -1466,6 +1466,8 @@ public static void RB_ShowTextureVectors(drawSurf_s[] drawSurfs, int numDrawSurf for (i = 0; i < numDrawSurfs; i++) { drawSurf = drawSurfs[i]; + if(i!=101)continue; + tri = drawSurf.geo; if (null == tri.verts) { @@ -1485,7 +1487,7 @@ public static void RB_ShowTextureVectors(drawSurf_s[] drawSurfs, int numDrawSurf idVec3 temp = new idVec3(); float[] d0 = new float[5], d1 = new float[5]; idVec3 mid; - idVec3[] tangents = new idVec3[2]; + idVec3[] tangents = {new idVec3(), new idVec3()}; a = tri.verts[tri.indexes[j + 0]]; b = tri.verts[tri.indexes[j + 1]]; @@ -1513,13 +1515,13 @@ public static void RB_ShowTextureVectors(drawSurf_s[] drawSurfs, int numDrawSurf temp.oSet(1, (d0[1] * d1[4] - d0[4] * d1[1]) * inva); temp.oSet(2, (d0[2] * d1[4] - d0[4] * d1[2]) * inva); temp.Normalize(); - tangents[0] = temp; + tangents[0].oSet(temp); temp.oSet(0, (d0[3] * d1[0] - d0[0] * d1[3]) * inva); temp.oSet(1, (d0[3] * d1[1] - d0[1] * d1[3]) * inva); temp.oSet(2, (d0[3] * d1[2] - d0[2] * d1[3]) * inva); temp.Normalize(); - tangents[1] = temp; + tangents[1].oSet(temp); // draw the tangents tangents[0] = mid.oPlus(tangents[0].oMultiply(r_showTextureVectors.GetFloat())); diff --git a/src/main/java/neo/Tools/Compilers/DMap/usurface.java b/src/main/java/neo/Tools/Compilers/DMap/usurface.java index f6fadf93..df760f55 100644 --- a/src/main/java/neo/Tools/Compilers/DMap/usurface.java +++ b/src/main/java/neo/Tools/Compilers/DMap/usurface.java @@ -821,7 +821,7 @@ static void BuildLightShadows(uEntity_t e, mapLight_t light) { // shadowers will contain all the triangles that will contribute to the // shadow volume shadowerGroups = null; - lightOrigin = light.def.globalLightOrigin; + lightOrigin = new idVec3(light.def.globalLightOrigin); // if the light is no-shadows, don't add any surfaces // to the beam tree at all diff --git a/src/main/java/neo/framework/DeclParticle.java b/src/main/java/neo/framework/DeclParticle.java index 732a1238..17db5c5e 100644 --- a/src/main/java/neo/framework/DeclParticle.java +++ b/src/main/java/neo/framework/DeclParticle.java @@ -799,10 +799,10 @@ public int ParticleVerts(particleGen_t g, final idVec3 origin, idDrawVert[] vert left.oMulSet(width); up.oMulSet(height); - verts[0].xyz = origin.oMinus(left).oPluSet(up); - verts[1].xyz = origin.oPluSet(left).oPluSet(up); + verts[0].xyz = origin.oMinus(left).oPlus(up); + verts[1].xyz = origin.oPlus(left).oPlus(up); verts[2].xyz = origin.oMinus(left).oMinus(up); - verts[3].xyz = origin.oPluSet(left).oMinus(up); + verts[3].xyz = origin.oPlus(left).oMinus(up); return 4; } diff --git a/src/main/java/neo/framework/File_h.java b/src/main/java/neo/framework/File_h.java index ea06a6a3..25e98b63 100644 --- a/src/main/java/neo/framework/File_h.java +++ b/src/main/java/neo/framework/File_h.java @@ -351,7 +351,7 @@ public int WriteFloatString(final String fmt, final Object... args)/* id_attribu public int ReadInt(int[] value) { ByteBuffer intBytes = ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN); int result = Read(intBytes); - value[0] = LittleLong(intBytes.getInt()); + value[0] = LittleLong(intBytes.getInt(0)); return result; } diff --git a/src/main/java/neo/idlib/geometry/JointTransform.java b/src/main/java/neo/idlib/geometry/JointTransform.java index 77353c58..12e147f1 100644 --- a/src/main/java/neo/idlib/geometry/JointTransform.java +++ b/src/main/java/neo/idlib/geometry/JointTransform.java @@ -67,6 +67,10 @@ public idJointMat(final float[] mat) { System.arraycopy(mat, 0, this.mat, 0, this.mat.length); } + public idJointMat(final idJointMat mat) { + this(mat.mat); + } + public void SetRotation(final idMat3 m) { // NOTE: idMat3 is transposed because it is column-major mat[0 * 4 + 0] = m.oGet(0).oGet(0); diff --git a/src/main/java/neo/idlib/math/Plane.java b/src/main/java/neo/idlib/math/Plane.java index 9621977a..878e1078 100644 --- a/src/main/java/neo/idlib/math/Plane.java +++ b/src/main/java/neo/idlib/math/Plane.java @@ -51,6 +51,7 @@ public static class idPlane { private final idVec3 abc = new idVec3(); private float d; + // // diff --git a/src/main/java/neo/idlib/math/Simd_Generic.java b/src/main/java/neo/idlib/math/Simd_Generic.java index 7e4eb394..ed0c8701 100644 --- a/src/main/java/neo/idlib/math/Simd_Generic.java +++ b/src/main/java/neo/idlib/math/Simd_Generic.java @@ -326,14 +326,8 @@ public void MulSub(float[] dst, float[] src0, float[] src1, int count) { */ @Override public void Dot(float[] dst, idVec3 constant, idVec3[] src, int count) { - int _IX, _NM = count & 0xfffffffc; - for (_IX = 0; _IX < _NM; _IX += 4) { - dst[_IX + 0] = src[_IX + 0].oMultiply(constant); - dst[_IX + 1] = src[_IX + 1].oMultiply(constant); - dst[_IX + 2] = src[_IX + 2].oMultiply(constant); - dst[_IX + 3] = src[_IX + 3].oMultiply(constant); - } - for (; _IX < count; _IX++) { + int _IX; + for (_IX = 0; _IX < count; _IX++) { dst[_IX] = src[_IX].oMultiply(constant); } } @@ -347,15 +341,9 @@ public void Dot(float[] dst, idVec3 constant, idVec3[] src, int count) { */ @Override public void Dot(float[] dst, idVec3 constant, idPlane[] src, int count) { - int _IX, _NM = count & 0xfffffffc; - for (_IX = 0; _IX < _NM; _IX += 4) { - dst[_IX + 0] = src[_IX + 0].Normal().oPlus(src[_IX + 0].oGet(3)).oMultiply(constant); - dst[_IX + 1] = src[_IX + 1].Normal().oPlus(src[_IX + 1].oGet(3)).oMultiply(constant); - dst[_IX + 2] = src[_IX + 2].Normal().oPlus(src[_IX + 2].oGet(3)).oMultiply(constant); - dst[_IX + 3] = src[_IX + 3].Normal().oPlus(src[_IX + 3].oGet(3)).oMultiply(constant); - } - for (; _IX < count; _IX++) { - dst[_IX] = src[_IX].Normal().oPlus(src[_IX].oGet(3)).oMultiply(constant); + int _IX; + for (_IX = 0; _IX < count; _IX++) { + dst[_IX] = constant.oMultiply(src[_IX].Normal()) + src[_IX].oGet(3);//NB I'm not saying operator overloading would have prevented this bug, but....!@#$%$@#^&#$^%^#%^&#$*^& } } @@ -368,14 +356,8 @@ public void Dot(float[] dst, idVec3 constant, idPlane[] src, int count) { */ @Override public void Dot(float[] dst, idVec3 constant, idDrawVert[] src, int count) { - int _IX, _NM = count & 0xfffffffc; - for (_IX = 0; _IX < _NM; _IX += 4) { - dst[_IX + 0] = src[_IX + 0].xyz.oMultiply(constant); - dst[_IX + 0] = src[_IX + 1].xyz.oMultiply(constant); - dst[_IX + 0] = src[_IX + 2].xyz.oMultiply(constant); - dst[_IX + 0] = src[_IX + 3].xyz.oMultiply(constant); - } - for (; _IX < count; _IX++) { + int _IX; + for (_IX = 0; _IX < count; _IX++) { dst[_IX + 0] = src[_IX].xyz.oMultiply(constant); } } @@ -389,14 +371,8 @@ public void Dot(float[] dst, idVec3 constant, idDrawVert[] src, int count) { */ @Override public void Dot(float[] dst, idPlane constant, idVec3[] src, int count) { - int _IX, _NM = count & 0xfffffffc; - for (_IX = 0; _IX < _NM; _IX += 4) { - dst[_IX + 0] = constant.Normal().oMultiply(src[_IX + 0]) + constant.oGet(3); - dst[_IX + 1] = constant.Normal().oMultiply(src[_IX + 1]) + constant.oGet(3); - dst[_IX + 2] = constant.Normal().oMultiply(src[_IX + 2]) + constant.oGet(3); - dst[_IX + 3] = constant.Normal().oMultiply(src[_IX + 3]) + constant.oGet(3); - } - for (; _IX < count; _IX++) { + int _IX; + for (_IX = 0; _IX < count; _IX++) { dst[_IX] = constant.Normal().oMultiply(src[_IX]) + constant.oGet(3); } } @@ -410,14 +386,8 @@ public void Dot(float[] dst, idPlane constant, idVec3[] src, int count) { */ @Override public void Dot(float[] dst, idPlane constant, idPlane[] src, int count) { - int _IX, _NM = count & 0xfffffffc; - for (_IX = 0; _IX < _NM; _IX += 4) { - dst[_IX + 0] = constant.Normal().oMultiply(src[_IX + 0].Normal()) + src[_IX + 0].oGet(3) * constant.oGet(3); - dst[_IX + 1] = constant.Normal().oMultiply(src[_IX + 1].Normal()) + src[_IX + 1].oGet(3) * constant.oGet(3); - dst[_IX + 2] = constant.Normal().oMultiply(src[_IX + 2].Normal()) + src[_IX + 2].oGet(3) * constant.oGet(3); - dst[_IX + 3] = constant.Normal().oMultiply(src[_IX + 3].Normal()) + src[_IX + 3].oGet(3) * constant.oGet(3); - } - for (; _IX < count; _IX++) { + int _IX; + for (_IX = 0; _IX < count; _IX++) { dst[_IX] = constant.Normal().oMultiply(src[_IX].Normal()) + src[_IX].oGet(3) * constant.oGet(3); } } @@ -431,15 +401,9 @@ public void Dot(float[] dst, idPlane constant, idPlane[] src, int count) { */ @Override public void Dot(float[] dst, idPlane constant, idDrawVert[] src, int count) { - int _IX, _NM = count & 0xfffffffc; - for (_IX = 0; _IX < _NM; _IX += 4) { - dst[_IX + 0] = constant.Normal().oMultiply(src[_IX + 0].xyz) * constant.oGet(3); - dst[_IX + 0] = constant.Normal().oMultiply(src[_IX + 1].xyz) * constant.oGet(3); - dst[_IX + 0] = constant.Normal().oMultiply(src[_IX + 2].xyz) * constant.oGet(3); - dst[_IX + 0] = constant.Normal().oMultiply(src[_IX + 3].xyz) * constant.oGet(3); - } - for (; _IX < count; _IX++) { - dst[_IX + 0] = constant.Normal().oMultiply(src[_IX].xyz) * constant.oGet(3); + int _IX; + for (_IX = 0; _IX < count; _IX++) { + dst[_IX] = constant.Normal().oMultiply(src[_IX].xyz) + constant.oGet(3); } } @@ -452,14 +416,8 @@ public void Dot(float[] dst, idPlane constant, idDrawVert[] src, int count) { */ @Override public void Dot(float[] dst, idVec3[] src0, idVec3[] src1, int count) { - int _IX, _NM = count & ~3;//TODO:check chekc checks - for (_IX = 0; _IX < _NM; _IX += 4) { - dst[_IX + 0] = src0[_IX + 0].oMultiply(src1[_IX + 0]); - dst[_IX + 1] = src0[_IX + 1].oMultiply(src1[_IX + 1]); - dst[_IX + 2] = src0[_IX + 2].oMultiply(src1[_IX + 2]); - dst[_IX + 3] = src0[_IX + 3].oMultiply(src1[_IX + 3]); - } - for (; _IX < count; _IX++) { + int _IX; + for (_IX = 0; _IX < count; _IX++) { dst[_IX] = src0[_IX].oMultiply(src1[_IX]); } } diff --git a/src/misc/debug_report_08.txt b/src/misc/debug_report_08.txt index 9348a780..270d5855 100644 --- a/src/misc/debug_report_08.txt +++ b/src/misc/debug_report_08.txt @@ -56,4 +56,17 @@ R_AddLightSurfaces() idRenderWorldLocal::CreateLightDefInteractions() inter.numSurfaces is changed the first couple of iterations to 0, then no more viewFrustrum -entityDef->index==1091 \ No newline at end of file +entityDef->index==1091 + + +tri->indexes + idGuiModel::EmitSurface() + + glDepthRange + + surf.shaderRegisters + +RB_ARB2_DrawInteractions() + RB_T_Shadow() tri->numIndexes != + R_SetLightDefViewLight() + idInteraction::AddActiveInteraction() vLight->globalShadows \ No newline at end of file diff --git a/src/misc/debug_report_09.txt b/src/misc/debug_report_09.txt new file mode 100644 index 00000000..4bf36c4d --- /dev/null +++ b/src/misc/debug_report_09.txt @@ -0,0 +1,54 @@ +-lights are not shining... r_singleLight 16 light_5254-->hanger_fog_mover-->map_marscity1::move_hangar_fog +-too few/many shadows r_showShadows +-too FEW textures r_showTextureVectors + + +RB_CreateSingleDrawInteractions() + RB_BakeTextureMatrixIntoTexgen() + RB_STD_DrawShaderPasses() :: drawSurf 221 vs 228 (big light on the top right) <--rhymes + :: surf->space->modelViewMatrix + idGameLocal::CallFrameCommand() + +916.0 -1712.0 -1072.0 ++ globalLightOrigin {x=916.000000 y=-1712.00000 z=-752.000000 } idVec3 + light.params.origin + +frustum[5] +idPlane{a=0.0, b=0.0, c=1.0, d=-728.0} +- [5] {a=0.000000000 b=0.000000000 c=1.00000000 ...} idPlane + a 0.000000000 float + b 0.000000000 float + c 1.00000000 float + d -1048.00000 float + +ligt.viewLight.shaderRegisters[5] +-12.816001f + [5] -51.4880028 const float + + + +-interesting: r_singleLight 16 && r_singleEntity 1 && r_showLights 3 + shows the same results on cpp when we add r_showShadowCount + +RB_ShowTextureVectors() ???? <---are we drawing all them textures? + R_AddModelSurfaces() models/md5/characters/npcs/heads/goggles.md5mesh + R_EntityDefDynamicModel() + idRenderModelMD5::InstantiateDynamicModel() + idAnimatedEntity::SetModel() + idAnimator::CreateFrame() marscity_security_goggles_pda_2_head + idSIMD_Generic::ConvertJointQuatsToJointMats() + idSIMD_Generic::TransformJoints() + idActor::CopyJointsFromBodyToHead() + ????idAnimBlend::BlendAnim +<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + 101 + idRenderModelStatic::ConvertLWOToModelSurfaces() + R_DuplicateMirroredVertexes() + facePlanes[0].DBG=473620 + R_DeriveFacePlanes() + R_AddModelSurfaces() + R_CreateLightTris() + + R_AddAmbientDrawsurfs \ No newline at end of file