From 091586fb9501d613f621fceb70fa21ff97c4898e Mon Sep 17 00:00:00 2001 From: John Tsiombikas Date: Sat, 1 Dec 2018 07:54:15 +0200 Subject: [PATCH] theoretically added texture matrices. untested. --- src/3dgfx.c | 8 ++++++++ src/3dgfx.h | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/3dgfx.c b/src/3dgfx.c index c852736..083f507 100644 --- a/src/3dgfx.c +++ b/src/3dgfx.c @@ -442,6 +442,14 @@ void g3d_draw_indexed(int prim, const struct g3d_vertex *varr, int varr_size, v[i].u = v[i].nx * 0.5 + 0.5; v[i].v = v[i].ny * 0.5 + 0.5; } + if(st->opt & G3D_TEXTURE_MAT) { + float *mat = st->mat[G3D_TEXTURE][st->mtop[G3D_TEXTURE]]; + float x = mat[0] * v[i].u + mat[4] * v[i].v + mat[12]; + float y = mat[1] * v[i].u + mat[5] * v[i].v + mat[13]; + float w = mat[3] * v[i].u + mat[7] * v[i].v + mat[15]; + v[i].u = x / w; + v[i].v = y / w; + } xform4_vec3(st->mat[G3D_PROJECTION][ptop], &v[i].x); } diff --git a/src/3dgfx.h b/src/3dgfx.h index 366912f..363a1b2 100644 --- a/src/3dgfx.h +++ b/src/3dgfx.h @@ -26,7 +26,7 @@ enum { G3D_LIGHT1 = 0x000010, G3D_LIGHT2 = 0x000020, G3D_LIGHT3 = 0x000040, - G3D_TEXTURE = 0x000080, + G3D_TEXTURE_2D = 0x000080, /* XXX doesn't affect anything, use g3d_polygon_mode */ G3D_BLEND = 0x000100, G3D_TEXTURE_GEN = 0x000200, G3D_CLIP_FRUSTUM = 0x000800,/* when disabled, don't clip against the frustum */ @@ -35,6 +35,8 @@ enum { G3D_CLIP_PLANE2 = 0x004000, G3D_CLIP_PLANE3 = 0x008000, + G3D_TEXTURE_MAT = 0x010000, + G3D_ALL = 0x7fffffff }; @@ -54,6 +56,7 @@ enum { enum { G3D_MODELVIEW, G3D_PROJECTION, + G3D_TEXTURE, G3D_NUM_MATRICES }; -- 1.7.10.4