8 PN_stdfloat xsize = v->xsize * (s->right - s->left);
9 PN_stdfloat xmin = v->xmin + v->xsize * s->left;
10 PN_stdfloat ysize = v->ysize * (s->top - s->bottom);
11 PN_stdfloat ymin = v->ymin + v->ysize * (1.0f - s->top);
12 PN_stdfloat zsize = (PN_stdfloat)(1 << (ZB_Z_BITS + ZB_POINT_Z_FRAC_BITS));
14 v->trans.v[0] = ((xsize - 0.5f) / 2.0f) + xmin;
15 v->trans.v[1] = ((ysize - 0.5f) / 2.0f) + ymin;
16 v->trans.v[2] = ((zsize - 0.5f) / 2.0f) + ((1 << ZB_POINT_Z_FRAC_BITS)) / 2;
18 v->scale.v[0] = (xsize - 0.5f) / 2.0f;
19 v->scale.v[1] = -(ysize - 0.5f) / 2.0f;
20 v->scale.v[2] = -((zsize - 0.5f) / 2.0f);
30 if (c->lighting_enabled) {
33 m = &c->matrix_model_view.m[0][0];
34 v->ec.v[0] = (v->coord.v[0] * m[0] + v->coord.v[1] * m[1] +
35 v->coord.v[2] * m[2] + m[3]);
36 v->ec.v[1] = (v->coord.v[0] * m[4] + v->coord.v[1] * m[5] +
37 v->coord.v[2] * m[6] + m[7]);
38 v->ec.v[2] = (v->coord.v[0] * m[8] + v->coord.v[1] * m[9] +
39 v->coord.v[2] * m[10] + m[11]);
40 v->ec.v[3] = (v->coord.v[0] * m[12] + v->coord.v[1] * m[13] +
41 v->coord.v[2] * m[14] + m[15]);
44 m = &c->matrix_projection.m[0][0];
45 v->pc.v[0] = (v->ec.v[0] * m[0] + v->ec.v[1] * m[1] +
46 v->ec.v[2] * m[2] + v->ec.v[3] * m[3]);
47 v->pc.v[1] = (v->ec.v[0] * m[4] + v->ec.v[1] * m[5] +
48 v->ec.v[2] * m[6] + v->ec.v[3] * m[7]);
49 v->pc.v[2] = (v->ec.v[0] * m[8] + v->ec.v[1] * m[9] +
50 v->ec.v[2] * m[10] + v->ec.v[3] * m[11]);
51 v->pc.v[3] = (v->ec.v[0] * m[12] + v->ec.v[1] * m[13] +
52 v->ec.v[2] * m[14] + v->ec.v[3] * m[15]);
54 m = &c->matrix_model_view_inv.m[0][0];
55 n = &c->current_normal;
57 v->normal.v[0] = (n->v[0] * m[0] + n->v[1] * m[1] + n->v[2] * m[2]) * c->normal_scale;
58 v->normal.v[1] = (n->v[0] * m[4] + n->v[1] * m[5] + n->v[2] * m[6]) * c->normal_scale;
59 v->normal.v[2] = (n->v[0] * m[8] + n->v[1] * m[9] + n->v[2] * m[10]) * c->normal_scale;
61 if (c->normalize_enabled) {
62 gl_V3_Norm(&v->normal);
67 m = &c->matrix_model_projection.m[0][0];
69 v->pc.v[0] = (v->coord.v[0] * m[0] + v->coord.v[1] * m[1] +
70 v->coord.v[2] * m[2] + m[3]);
71 v->pc.v[1] = (v->coord.v[0] * m[4] + v->coord.v[1] * m[5] +
72 v->coord.v[2] * m[6] + m[7]);
73 v->pc.v[2] = (v->coord.v[0] * m[8] + v->coord.v[1] * m[9] +
74 v->coord.v[2] * m[10] + m[11]);
75 if (c->matrix_model_projection_no_w_transform) {
78 v->pc.v[3] = (v->coord.v[0] * m[12] + v->coord.v[1] * m[13] +
79 v->coord.v[2] * m[14] + m[15]);
83 v->clip_code = gl_clipcode(v->pc.v[0], v->pc.v[1], v->pc.v[2], v->pc.v[3]);