mirror of
https://git.coom.tech/drummyfish/small3dlib.git
synced 2024-11-21 20:39:57 +01:00
Expand tests
This commit is contained in:
parent
9e3de8c157
commit
9c60d2584b
1 changed files with 100 additions and 3 deletions
103
test.c
103
test.c
|
@ -9,7 +9,7 @@ uint8_t testRaster[TEST_BUFFER_W * TEST_BUFFER_H];
|
||||||
|
|
||||||
void pixelFunc(S3L_PixelInfo *p)
|
void pixelFunc(S3L_PixelInfo *p)
|
||||||
{
|
{
|
||||||
testRaster[p->y * TEST_BUFFER_W + p->x] = 1;
|
testRaster[p->y * TEST_BUFFER_W + p->x] += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t testTriangleRasterization(
|
uint16_t testTriangleRasterization(
|
||||||
|
@ -22,7 +22,7 @@ uint16_t testTriangleRasterization(
|
||||||
uint8_t *expectedPixels
|
uint8_t *expectedPixels
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
printf(" --- testing tringle rasterization (|: expected, -: rasterized) ----\n");
|
printf(" --- testing tringle rasterization [%d,%d] [%d,%d] [%d,%d] (|: expected, -: rasterized) ----\n",x0,y0,x1,y1,x2,y2);
|
||||||
|
|
||||||
S3L_DrawConfig conf;
|
S3L_DrawConfig conf;
|
||||||
|
|
||||||
|
@ -81,7 +81,8 @@ uint16_t testRasterization()
|
||||||
numErrors += testTriangleRasterization(5,3, 3,3, 9,3, pixelsEmpty);
|
numErrors += testTriangleRasterization(5,3, 3,3, 9,3, pixelsEmpty);
|
||||||
numErrors += testTriangleRasterization(9,4, 9,0, 9,9, pixelsEmpty);
|
numErrors += testTriangleRasterization(9,4, 9,0, 9,9, pixelsEmpty);
|
||||||
numErrors += testTriangleRasterization(3,3, 6,6, 7,7, pixelsEmpty);
|
numErrors += testTriangleRasterization(3,3, 6,6, 7,7, pixelsEmpty);
|
||||||
numErrors += testTriangleRasterization(5,5, 3,7, 9,1, pixelsEmpty);
|
numErrors += testTriangleRasterization(7,0, 3,3, 0,7, pixelsEmpty);
|
||||||
|
numErrors += testTriangleRasterization(7,7, 7,7, 7,7, pixelsEmpty);
|
||||||
|
|
||||||
uint8_t pixels1[TEST_BUFFER_W * TEST_BUFFER_H] =
|
uint8_t pixels1[TEST_BUFFER_W * TEST_BUFFER_H] =
|
||||||
{
|
{
|
||||||
|
@ -221,6 +222,102 @@ uint16_t testRasterization()
|
||||||
|
|
||||||
numErrors += testTriangleRasterization(0,2, 6,0, 4,4, pixels6);
|
numErrors += testTriangleRasterization(0,2, 6,0, 4,4, pixels6);
|
||||||
|
|
||||||
|
printf("cover test (each pixel should be covered exactly once):\n\n");
|
||||||
|
|
||||||
|
S3L_DrawConfig conf;
|
||||||
|
|
||||||
|
conf.backfaceCulling = S3L_BACKFACE_CULLING_NONE;
|
||||||
|
conf.mode = S3L_MODE_TRIANGLES;
|
||||||
|
|
||||||
|
S3L_ScreenCoord coords[] =
|
||||||
|
{
|
||||||
|
0,0,
|
||||||
|
6,0,
|
||||||
|
13,0,
|
||||||
|
15,0,
|
||||||
|
14,1,
|
||||||
|
11,2,
|
||||||
|
3,3,
|
||||||
|
11,4,
|
||||||
|
14,5,
|
||||||
|
0,6,
|
||||||
|
6,6,
|
||||||
|
13,8,
|
||||||
|
8,9,
|
||||||
|
3,12,
|
||||||
|
9,12,
|
||||||
|
11,13,
|
||||||
|
9,14,
|
||||||
|
0,15,
|
||||||
|
15,15
|
||||||
|
};
|
||||||
|
|
||||||
|
memset(testRaster,0,TEST_BUFFER_W * TEST_BUFFER_H);
|
||||||
|
|
||||||
|
#define dt(i1,i2,i3) S3L_drawTriangle(coords[2*i1],coords[2*i1 + 1],coords[2*i2],coords[2*i2+1],coords[2*i3],coords[2*i3+1],conf,0)
|
||||||
|
dt(0,1,6); // 0
|
||||||
|
dt(1,2,5); // 1
|
||||||
|
dt(2,4,5); // 2
|
||||||
|
dt(2,3,4); // 3
|
||||||
|
dt(0,6,9); // 4
|
||||||
|
dt(1,10,6); // 5
|
||||||
|
dt(1,5,10); // 6
|
||||||
|
dt(5,4,8); // 7
|
||||||
|
dt(4,3,8); // 8
|
||||||
|
dt(9,6,10); // 9
|
||||||
|
dt(10,5,12); // 10
|
||||||
|
dt(5,7,12); // 11
|
||||||
|
dt(5,7,11); // 12
|
||||||
|
dt(5,8,11); // 13
|
||||||
|
dt(8,3,18); // 14
|
||||||
|
dt(9,10,13); // 15
|
||||||
|
dt(10,12,13); // 16
|
||||||
|
dt(12,7,11); // 17
|
||||||
|
dt(11,8,18); // 18
|
||||||
|
dt(9,13,17); // 19
|
||||||
|
dt(13,12,14); // 20
|
||||||
|
dt(12,11,14); // 21
|
||||||
|
dt(11,14,15); // 22
|
||||||
|
dt(15,11,18); // 23
|
||||||
|
dt(13,14,16); // 24
|
||||||
|
dt(14,15,16); // 25
|
||||||
|
dt(17,13,16); // 26
|
||||||
|
dt(16,15,18); // 27
|
||||||
|
dt(16,17,18); // 28
|
||||||
|
|
||||||
|
// extra empty triangles
|
||||||
|
dt(12,12,12);
|
||||||
|
dt(9,10,10);
|
||||||
|
dt(1,10,10);
|
||||||
|
// dt(9,6,1);
|
||||||
|
dt(0,6,10);
|
||||||
|
|
||||||
|
#undef dt
|
||||||
|
|
||||||
|
uint16_t numErrors2 = 0;
|
||||||
|
|
||||||
|
for (uint8_t y = 0; y < TEST_BUFFER_H - 1; ++y)
|
||||||
|
{
|
||||||
|
printf(" ");
|
||||||
|
|
||||||
|
for (uint8_t x = 0; x < TEST_BUFFER_W - 1; ++x)
|
||||||
|
{
|
||||||
|
uint8_t count = testRaster[y * TEST_BUFFER_W + x];
|
||||||
|
|
||||||
|
printf("%d",count);
|
||||||
|
|
||||||
|
if (count != 1)
|
||||||
|
numErrors2++;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf(" errors: %d\n",numErrors2);
|
||||||
|
|
||||||
|
numErrors += numErrors2;
|
||||||
|
|
||||||
|
|
||||||
printf("total rasterization errors: %d\n",numErrors);
|
printf("total rasterization errors: %d\n",numErrors);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue