From 6fe4684102e3b2a58a730ee92d2692f7d0c0191f Mon Sep 17 00:00:00 2001 From: Matt Larsen Date: Thu, 23 Apr 2020 12:56:46 -0700 Subject: [PATCH] add normalization bypass for nodal scalars --- .../raytracing/TriangleIntersector.cxx | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/vtkm/rendering/raytracing/TriangleIntersector.cxx b/vtkm/rendering/raytracing/TriangleIntersector.cxx index 56cc42a5e..e85cef0a7 100644 --- a/vtkm/rendering/raytracing/TriangleIntersector.cxx +++ b/vtkm/rendering/raytracing/TriangleIntersector.cxx @@ -307,18 +307,30 @@ public: private: Precision MinScalar; Precision invDeltaScalar; + bool Normalize; public: VTKM_CONT NodalScalar(const vtkm::Float32& minScalar, const vtkm::Float32& maxScalar) : MinScalar(minScalar) { - //Make sure the we don't divide by zero on - //something like an iso-surface - if (maxScalar - MinScalar != 0.f) - invDeltaScalar = 1.f / (maxScalar - MinScalar); + Normalize = true; + if (minScalar > maxScalar) + { + // support the scalar renderer + Normalize = false; + MinScalar = 0; + invDeltaScalar = 1; + } else - invDeltaScalar = 1.f / minScalar; + { + //Make sure the we don't divide by zero on + //something like an iso-surface + if (maxScalar - MinScalar != 0.f) + invDeltaScalar = 1.f / (maxScalar - MinScalar); + else + invDeltaScalar = 1.f / minScalar; + } } typedef void ControlSignature(FieldIn, FieldOut, WholeArrayIn, WholeArrayIn); @@ -338,8 +350,10 @@ public: //Todo: one normalization scalar = Precision(scalars.Get(indices[0])); - //normalize - scalar = (scalar - MinScalar) * invDeltaScalar; + if (Normalize) + { + scalar = (scalar - MinScalar) * invDeltaScalar; + } } }; //class LerpScalar