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);
}
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 */
G3D_CLIP_PLANE2 = 0x004000,
G3D_CLIP_PLANE3 = 0x008000,
+ G3D_TEXTURE_MAT = 0x010000,
+
G3D_ALL = 0x7fffffff
};
enum {
G3D_MODELVIEW,
G3D_PROJECTION,
+ G3D_TEXTURE,
G3D_NUM_MATRICES
};