Pārlūkot izejas kodu

Add weird_triangle_bug

rexim 2 gadi atpakaļ
vecāks
revīzija
d29a66b452
3 mainītis faili ar 13 papildinājumiem un 0 dzēšanām
  1. 1 0
      olive.c
  2. 12 0
      test.c
  3. BIN
      test/weird_triangle_bug_expected.png

+ 1 - 0
olive.c

@@ -605,6 +605,7 @@ OLIVECDEF uint32_t mix_colors3(uint32_t c1, uint32_t c2, uint32_t c3, int u1, in
     return 0;
 }
 
+// NOTE: we imply u3 = det - u1 - u2
 OLIVECDEF void barycentric(int x1, int y1, int x2, int y2, int x3, int y3,
                            int xp, int yp,
                            int *u1, int *u2, int *det)

+ 12 - 0
test.c

@@ -564,6 +564,16 @@ Olivec_Canvas test_sprite_blend_vs_copy(void)
     return dst;
 }
 
+Olivec_Canvas test_weird_triangle_bug(void)
+{
+    size_t w = 256;
+    size_t h = 256;
+    Olivec_Canvas dst = canvas_alloc(w, h);
+    olivec_fill(dst, 0xFF181818);
+    olivec_triangle3c(dst, w/4, h/4, w/2, 0, 0, h, 0xFF0000FF, 0xFF00FF00, 0xFFFF0000);
+    return dst;
+}
+
 Olivec_Canvas test_triangle_order_flip(void)
 {
     size_t w = 256;
@@ -603,6 +613,8 @@ Test_Case test_cases[] = {
     DEFINE_TEST_CASE(sprite_blend_null),
     DEFINE_TEST_CASE(sprite_blend_vs_copy),
     DEFINE_TEST_CASE(triangle_order_flip),
+    // TODO: fix weird_triangle_bug
+    DEFINE_TEST_CASE(weird_triangle_bug)
 };
 #define TEST_CASES_COUNT (sizeof(test_cases)/sizeof(test_cases[0]))
 

BIN
test/weird_triangle_bug_expected.png