aboutsummaryrefslogtreecommitdiff
path: root/src/renderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer.cpp')
-rw-r--r--src/renderer.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/renderer.cpp b/src/renderer.cpp
index 9447119..3cd721d 100644
--- a/src/renderer.cpp
+++ b/src/renderer.cpp
@@ -51,8 +51,8 @@ enum class TriangleSide { top, bottom };
template<FrameBufferConcept FrameBuffer, ShadersConcept Shaders>
void Renderer<FrameBuffer, Shaders>::draw_triangle(const Triangle& triangle) {
- const auto& polygon = engine::o3d::polygon::div_by_w(engine::o3d::polygon::from_triangle_derived(triangle.to_derived()).clip_z(0.f, 1.f));
- if (engine::o3d::polygon::signed_area_xy(polygon) >= 0) return;
+ const auto& polygon = (triangle.to_derived() | engine::o3d::polygon::ToPolygon()).clip_z(0.f, 1.f) | engine::o3d::polygon::DivByW();
+ if ((polygon | engine::o3d::polygon::SignedAreaXY()) >= 0) return;
const auto& [final_triangles_count, final_triangles]
= polygon.clip_xy(-1.f, -1.f, 1.f, 1.f)
.map_xy({ -1.f, -1.f }, { 1.f, 1.f }, { -.5f, -.5f }, { static_cast<float>(fb.width()) - .5f, static_cast<float>(fb.height()) - .5f })