Browse Source

Add weird_triangle_bug

rexim 2 years ago
parent
commit
d29a66b452
3 changed files with 13 additions and 0 deletions
  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;
     return 0;
 }
 }
 
 
+// NOTE: we imply u3 = det - u1 - u2
 OLIVECDEF void barycentric(int x1, int y1, int x2, int y2, int x3, int y3,
 OLIVECDEF void barycentric(int x1, int y1, int x2, int y2, int x3, int y3,
                            int xp, int yp,
                            int xp, int yp,
                            int *u1, int *u2, int *det)
                            int *u1, int *u2, int *det)

+ 12 - 0
test.c

@@ -564,6 +564,16 @@ Olivec_Canvas test_sprite_blend_vs_copy(void)
     return dst;
     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)
 Olivec_Canvas test_triangle_order_flip(void)
 {
 {
     size_t w = 256;
     size_t w = 256;
@@ -603,6 +613,8 @@ Test_Case test_cases[] = {
     DEFINE_TEST_CASE(sprite_blend_null),
     DEFINE_TEST_CASE(sprite_blend_null),
     DEFINE_TEST_CASE(sprite_blend_vs_copy),
     DEFINE_TEST_CASE(sprite_blend_vs_copy),
     DEFINE_TEST_CASE(triangle_order_flip),
     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]))
 #define TEST_CASES_COUNT (sizeof(test_cases)/sizeof(test_cases[0]))
 
 

BIN
test/weird_triangle_bug_expected.png