1
0
Fork 0
mirror of https://git.coom.tech/drummyfish/small3dlib.git synced 2024-11-21 20:39:57 +01:00

Parametrize texture coords

This commit is contained in:
Miloslav Číž 2019-05-11 23:51:16 +02:00
parent 420bbc3aa6
commit 509ebce56c
2 changed files with 20 additions and 20 deletions

26
s3l.h
View file

@ -198,19 +198,19 @@ typedef int32_t S3L_Unit; /**< Units of measurement in 3D space. There is
/** Predefined texture coordinates of a cube, corresponding to triangles (NOT /** Predefined texture coordinates of a cube, corresponding to triangles (NOT
vertices), to be used with S3L_CUBE_VERTICES and S3L_CUBE_TRIANGLES. */ vertices), to be used with S3L_CUBE_VERTICES and S3L_CUBE_TRIANGLES. */
#define S3L_CUBE_TEXCOORDS\ #define S3L_CUBE_TEXCOORDS(m)\
1,1, 0,0, 1,0,\ m,m, 0,0, m,0,\
1,1, 0,1, 0,0,\ m,m, 0,m, 0,0,\
1,0, 1,1, 0,1,\ m,0, m,m, 0,m,\
1,0, 0,1, 0,0,\ m,0, 0,m, 0,0,\
0,0, 1,0, 1,1,\ 0,0, m,0, m,m,\
1,1, 0,1, 0,0,\ m,m, 0,m, 0,0,\
0,1, 0,0, 1,0,\ 0,m, 0,0, m,0,\
0,1, 1,0, 1,1,\ 0,m, m,0, m,m,\
1,1, 0,0, 1,0,\ m,m, 0,0, m,0,\
1,1, 0,1, 0,0,\ m,m, 0,m, 0,0,\
0,1, 1,0, 1,1,\ 0,m, m,0, m,m,\
0,1, 0,0, 1,0 0,m, 0,0, m,0
#define S3L_SIN_TABLE_LENGTH 128 #define S3L_SIN_TABLE_LENGTH 128
static const S3L_Unit S3L_sinTable[S3L_SIN_TABLE_LENGTH] = static const S3L_Unit S3L_sinTable[S3L_SIN_TABLE_LENGTH] =

View file

@ -32,7 +32,7 @@ const int16_t test_coords[] =
const S3L_Unit ver[] = { S3L_CUBE_VERTICES }; const S3L_Unit ver[] = { S3L_CUBE_VERTICES };
const S3L_Index tri[] = { S3L_CUBE_TRIANGLES }; const S3L_Index tri[] = { S3L_CUBE_TRIANGLES };
const S3L_Unit tex_coords[] = { S3L_CUBE_TEXCOORDS }; const S3L_Unit tex_coords[] = { S3L_CUBE_TEXCOORDS(16) };
int8_t keys[256]; int8_t keys[256];
@ -103,15 +103,15 @@ void drawPixel(S3L_PixelInfo *p)
coords = tex_coords + p->triangleID * 6; coords = tex_coords + p->triangleID * 6;
u = S3L_interpolateBarycentric( u = S3L_interpolateBarycentric(
coords[0] * 16, coords[0],
coords[2] * 16, coords[2],
coords[4] * 16, coords[4],
p->barycentric0, p->barycentric1, p->barycentric2); p->barycentric0, p->barycentric1, p->barycentric2);
v = S3L_interpolateBarycentric( v = S3L_interpolateBarycentric(
coords[1] * 16, coords[1],
coords[3] * 16, coords[3],
coords[5] * 16, coords[5],
p->barycentric0, p->barycentric1, p->barycentric2); p->barycentric0, p->barycentric1, p->barycentric2);
uint8_t col = texturePixel(u,v); uint8_t col = texturePixel(u,v);