diff --git a/src/Core/RenderData/Triangle.h b/src/Core/RenderData/Triangle.h index dae9c99..555a1f2 100644 --- a/src/Core/RenderData/Triangle.h +++ b/src/Core/RenderData/Triangle.h @@ -3,13 +3,18 @@ #include "BoundingBox.h" #include "Vertex.h" #include -#include #include #include #include namespace RenderData { + namespace detail + { + inline float min3f(float a, float b, float c) { return a < b ? (a < c ? a : c) : (b < c ? b : c); } + inline float max3f(float a, float b, float c) { return a > b ? (a > c ? a : c) : (b > c ? b : c); } + } + struct Triangle { Scene::Vertex v0; @@ -22,10 +27,10 @@ namespace RenderData { using namespace Math; - int32_t minX = static_cast(std::floor(std::min({ v0.position.x, v1.position.x, v2.position.x }))); - int32_t maxX = static_cast(std::ceil(std::max({ v0.position.x, v1.position.x, v2.position.x }))); - int32_t minY = static_cast(std::floor(std::min({ v0.position.y, v1.position.y, v2.position.y }))); - int32_t maxY = static_cast(std::ceil(std::max({ v0.position.y, v1.position.y, v2.position.y }))); + int32_t minX = static_cast(std::floor(detail::min3f(v0.position.x, v1.position.x, v2.position.x))); + int32_t maxX = static_cast(std::ceil(detail::max3f(v0.position.x, v1.position.x, v2.position.x))); + int32_t minY = static_cast(std::floor(detail::min3f(v0.position.y, v1.position.y, v2.position.y))); + int32_t maxY = static_cast(std::ceil(detail::max3f(v0.position.y, v1.position.y, v2.position.y))); Vector2Int min(minX, minY); Vector2Int max(maxX, maxY);