From 9649fda1504b6d8d3db55ff3dbabf3e2b44ee745 Mon Sep 17 00:00:00 2001 From: Przemek Date: Thu, 19 Dec 2024 16:18:43 +0100 Subject: [PATCH] Fixes --- 62_CAD/main.cpp | 3 ++- 62_CAD/shaders/globals.hlsl | 5 ++--- 64_EmulatedFloatTest/main.cpp | 25 +++++-------------------- 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/62_CAD/main.cpp b/62_CAD/main.cpp index ca655dc69..9e106a0b2 100644 --- a/62_CAD/main.cpp +++ b/62_CAD/main.cpp @@ -66,7 +66,7 @@ constexpr std::array cameraExtents = 600.0, // CASE_8 }; -constexpr ExampleMode mode = ExampleMode::CASE_4; +constexpr ExampleMode mode = ExampleMode::CASE_8; class Camera2D { @@ -640,6 +640,7 @@ class ComputerAidedDesign final : public examples::SimpleWindowedApplication, pu // TODO: delete all quick tests { + using ef64_t = hlsl::emulated_float64_t; nbl::hlsl::array_get, ef64_t> getter; nbl::hlsl::array_set, ef64_t> setter; diff --git a/62_CAD/shaders/globals.hlsl b/62_CAD/shaders/globals.hlsl index f8a56d93a..1dd743a9d 100644 --- a/62_CAD/shaders/globals.hlsl +++ b/62_CAD/shaders/globals.hlsl @@ -66,7 +66,7 @@ static_assert(offsetof(Globals, miterLimit) == 116u); #endif #ifdef __HLSL_VERSION -pfloat64_t2 transformPointNdc(pfloat64_t3x3 transformation, pfloat64_t2 point2d) +pfloat64_t2 transformPointNdc(NBL_CONST_REF_ARG(pfloat64_t3x3) transformation, NBL_CONST_REF_ARG(pfloat64_t2) point2d) { pfloat64_t3 point3d; point3d.x = point2d.x; @@ -78,11 +78,10 @@ pfloat64_t2 transformPointNdc(pfloat64_t3x3 transformation, pfloat64_t2 point2d) pfloat64_t2 output; output.x = transformationResult.x; output.y = transformationResult.y; - printf("intput: %f, %f output: %f, %f", _static_cast(point2d.x), _static_cast(point2d.y), _static_cast(output.x), _static_cast(output.y)); return output; } -pfloat64_t2 transformVectorNdc(pfloat64_t3x3 transformation, pfloat64_t2 vector2d) +pfloat64_t2 transformVectorNdc(NBL_CONST_REF_ARG(pfloat64_t3x3) transformation, NBL_CONST_REF_ARG(pfloat64_t2) vector2d) { pfloat64_t3 vector3d; vector3d.x = vector2d.x; diff --git a/64_EmulatedFloatTest/main.cpp b/64_EmulatedFloatTest/main.cpp index 7ac821b66..a9ff5fde6 100644 --- a/64_EmulatedFloatTest/main.cpp +++ b/64_EmulatedFloatTest/main.cpp @@ -39,20 +39,6 @@ class CompatibilityTest final : public MonoDeviceApplication, public MonoAssetMa // since emulated_float64_t rounds to zero std::fesetround(FE_TOWARDZERO); - nbl::hlsl::emulated_float64_t c = nbl::hlsl::emulated_float64_t::create(1.0f); - nbl::hlsl::emulated_float64_t a = nbl::hlsl::emulated_float64_t::create(-59981.1); - nbl::hlsl::emulated_float64_t b = nbl::hlsl::emulated_float64_t::create(-78853.9); - - double correctOutput = -59981.1 - (-78853.9); - auto output = a - b; - - std::cout << "correct: " << reinterpret_cast(correctOutput) << std::endl; - std::cout << "my: " << reinterpret_cast(output) << std::endl; - - std::cout << "seeeeeeeeeeemmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm\n"; - std::cout << std::bitset<64>(reinterpret_cast(correctOutput)) << " - correct" << std::endl; - std::cout << std::bitset<64>(output.data) << std::endl; - // Remember to call the base class initialization! if (!device_base_t::onAppInitialized(smart_refctd_ptr(system))) return false; @@ -468,12 +454,11 @@ class CompatibilityTest final : public MonoDeviceApplication, public MonoAssetMa printTestOutput("emulatedFloat64RandomValuesTest", emulatedFloat64RandomValuesTest(submitter)); printTestOutput("emulatedFloat64RandomValuesTestContrastingExponents", emulatedFloat64RandomValuesTestContrastingExponents(submitter)); printTestOutput("emulatedFloat64NegAndPosZeroTest", emulatedFloat64NegAndPosZeroTest(submitter)); - // TODO: what is up with substraction for inf? - //printTestOutput("emulatedFloat64BothValuesInfTest", emulatedFloat64BothValuesInfTest(submitter)); - //printTestOutput("emulatedFloat64BothValuesNegInfTest", emulatedFloat64BothValuesNegInfTest(submitter)); - //printTestOutput("emulatedFloat64OneValIsInfOtherIsNegInfTest", emulatedFloat64OneValIsInfOtherIsNegInfTest(submitter)); - //printTestOutput("emulatedFloat64OneValIsInfTest", emulatedFloat64OneValIsInfTest(submitter)); - //printTestOutput("emulatedFloat64OneValIsNegInfTest", emulatedFloat64OneValIsNegInfTest(submitter)); + printTestOutput("emulatedFloat64BothValuesInfTest", emulatedFloat64BothValuesInfTest(submitter)); + printTestOutput("emulatedFloat64BothValuesNegInfTest", emulatedFloat64BothValuesNegInfTest(submitter)); + printTestOutput("emulatedFloat64OneValIsInfOtherIsNegInfTest", emulatedFloat64OneValIsInfOtherIsNegInfTest(submitter)); + printTestOutput("emulatedFloat64OneValIsInfTest", emulatedFloat64OneValIsInfTest(submitter)); + printTestOutput("emulatedFloat64OneValIsNegInfTest", emulatedFloat64OneValIsNegInfTest(submitter)); if(false) // doesn't work for some reason + fast math is enabled by default printTestOutput("emulatedFloat64BNaNTest", emulatedFloat64BNaNTest(submitter)); printTestOutput("emulatedFloat64BInfTest", emulatedFloat64OneValIsZeroTest(submitter));