From 385849e3b2e70c9a819b66fe973d63905bf1ce04 Mon Sep 17 00:00:00 2001 From: h4570 Date: Thu, 18 Aug 2022 23:06:07 +0200 Subject: [PATCH] fixed problem with compiler overoptimization --- .../inc/renderer/3d/renderer_3d_utility.hpp | 3 +- .../dynamic/core/dynpip_vu1_program.cpp | 9 +++--- .../static/core/stapip_vu1_program.cpp | 9 +++--- .../src/renderer/3d/renderer_3d_utility.cpp | 28 +++++++------------ 4 files changed, 19 insertions(+), 30 deletions(-) diff --git a/engine/inc/renderer/3d/renderer_3d_utility.hpp b/engine/inc/renderer/3d/renderer_3d_utility.hpp index 7acd6e4..5229cba 100644 --- a/engine/inc/renderer/3d/renderer_3d_utility.hpp +++ b/engine/inc/renderer/3d/renderer_3d_utility.hpp @@ -45,7 +45,6 @@ class Renderer3DUtility { std::array clipInput; RendererCore* core; - prim_t prim; Vec4 convertVertices(const Vec4& v, const Vec4& scale); @@ -60,7 +59,7 @@ class Renderer3DUtility { * @return false - To skip (outside view frustum) */ bool calcLineVertices(xyz_t* outputArray, const Vec4& a, const Vec4& b, - const u8& displayOffset); + const Vec4& scale); PlanesClipAlgorithm planesClipAlgorithm; }; diff --git a/engine/src/renderer/3d/pipeline/dynamic/core/dynpip_vu1_program.cpp b/engine/src/renderer/3d/pipeline/dynamic/core/dynpip_vu1_program.cpp index a313807..a368a87 100644 --- a/engine/src/renderer/3d/pipeline/dynamic/core/dynpip_vu1_program.cpp +++ b/engine/src/renderer/3d/pipeline/dynamic/core/dynpip_vu1_program.cpp @@ -48,11 +48,10 @@ void DynPipVU1Program::addStandardBufferDataToPacket(packet2_t* packet, packet2_utils_vu_open_unpack(packet, 0, true); { - packet2_add_float(packet, 2048.0F); // scale - packet2_add_float(packet, 2048.0F); // scale - packet2_add_float(packet, - static_cast(0xFFFFFF) / 32.0F); // scale - packet2_add_u32(packet, bag->count); // vertex count + packet2_add_float(packet, 2048.0F); // scale + packet2_add_float(packet, 2048.0F); // scale + packet2_add_float(packet, static_cast(0xFFFFFF) / 32.0F); // scale + packet2_add_u32(packet, bag->count); // vertex count packet2_utils_gs_add_prim_giftag(packet, prim, bag->count, reglist, reglistCount, 0); diff --git a/engine/src/renderer/3d/pipeline/static/core/stapip_vu1_program.cpp b/engine/src/renderer/3d/pipeline/static/core/stapip_vu1_program.cpp index deab2e4..9908a66 100644 --- a/engine/src/renderer/3d/pipeline/static/core/stapip_vu1_program.cpp +++ b/engine/src/renderer/3d/pipeline/static/core/stapip_vu1_program.cpp @@ -49,11 +49,10 @@ void StaPipVU1Program::addStandardBufferDataToPacket(packet2_t* packet, packet2_utils_vu_open_unpack(packet, 0, true); { - packet2_add_float(packet, 2048.0F); // scale - packet2_add_float(packet, 2048.0F); // scale - packet2_add_float(packet, - static_cast(0xFFFFFF) / 32.0F); // scale - packet2_add_u32(packet, buffer->size); // vertex count + packet2_add_float(packet, 2048.0F); // scale + packet2_add_float(packet, 2048.0F); // scale + packet2_add_float(packet, static_cast(0xFFFFFF) / 32.0F); // scale + packet2_add_u32(packet, buffer->size); // vertex count packet2_utils_gs_add_prim_giftag(packet, prim, buffer->size, reglist, reglistCount, 0); diff --git a/engine/src/renderer/3d/renderer_3d_utility.cpp b/engine/src/renderer/3d/renderer_3d_utility.cpp index f14389f..62a90d9 100644 --- a/engine/src/renderer/3d/renderer_3d_utility.cpp +++ b/engine/src/renderer/3d/renderer_3d_utility.cpp @@ -80,8 +80,11 @@ void Renderer3DUtility::drawLine(const Vec4& from, const Vec4& to, packet2_update(packet, draw_prim_start(packet->next, 0, &prim, &gsColor)); for (s8 i = 0; i < thickness; i++) { - auto draw = - calcLineVertices(outputVerts.data(), inputVerts[0], inputVerts[1], i); + Vec4 scale(2048.0F + i, 2048.0F + i, static_cast(0xFFFFFF) / 32.0F, + 1.0F); + + auto draw = calcLineVertices(outputVerts.data(), inputVerts[0], + inputVerts[1], scale); if (!draw) { packet2_free(packet); @@ -126,6 +129,9 @@ void Renderer3DUtility::drawBBox(const CoreBBox& v, const Color& color) { bool drawedSomething = false; for (s8 i = 0; i < thickness; i++) { + Vec4 scale(2048.0F + i, 2048.0F + i, static_cast(0xFFFFFF) / 32.0F, + 1.0F); + for (s8 j = 0; j < stripsCount; j++) { for (s8 k = 0; k < vertCount; k++) { auto index1 = k; @@ -133,7 +139,7 @@ void Renderer3DUtility::drawBBox(const CoreBBox& v, const Color& color) { std::array outputVerts; auto draw = calcLineVertices(outputVerts.data(), inputVerts[j][index1], - inputVerts[j][index2], i); + inputVerts[j][index2], scale); if (!draw) { continue; @@ -274,11 +280,8 @@ Vec4 Renderer3DUtility::convertVertices(const Vec4& v, const Vec4& scale) { return output; } -int counter = 0; // TODO: Remove - bool Renderer3DUtility::calcLineVertices(xyz_t* outputArray, const Vec4& a, - const Vec4& b, - const u8& displayOffset) { + const Vec4& b, const Vec4& scale) { const auto& mvp = core->renderer3D.getViewProj(); Vec4 tmpA = mvp * a; Vec4 tmpB = mvp * b; @@ -295,20 +298,9 @@ bool Renderer3DUtility::calcLineVertices(xyz_t* outputArray, const Vec4& a, } // To screen space - Vec4 scale(2048.0F + displayOffset, 2048.0F + displayOffset, - static_cast(0xFFFFFF) / 32.0F, 1.0F); - auto converted1 = convertVertices(clippedVerts[0].position, scale); auto converted2 = convertVertices(clippedVerts[1].position, scale); - // TODO1: Czemu jak to usune to nie dziala? - // TODO2: Z index tutaj i w 2D! - if (counter++ > 50) { - counter = 0; - converted1.print("Test1"); - converted2.print("Test2"); - } - outputArray[0].x = static_cast(ftoi4(converted1.x)); outputArray[0].y = static_cast(ftoi4(converted1.y)); outputArray[0].z = static_cast(ftoi4(converted1.z));