Cube  Diff

Differences From Artifact [d20e5d1984]:

To Artifact [ee90f3d4f5]:


27
28
29
30
31
32
33
34
35
36
37




38
39
40
41
42
43
44
45
46
47
48
49
50
51












52
53
54
55


56
57
58
59
60
61
62
27
28
29
30
31
32
33




34
35
36
37
38
39












40
41
42
43
44
45
46
47
48
49
50
51
52
53


54
55
56
57
58
59
60
61
62







-
-
-
-
+
+
+
+


-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+


-
-
+
+







	setarraypointers();
}

// generating the actual vertices is done dynamically every frame and sits at
// the leaves of all these functions, and are part of the cpu bottleneck on
// really slow machines, hence the macros.

#define vertcheck()                         \
	{                                   \
		if (curvert >= curmaxverts) \
			reallocv();         \
#define vertcheck()				\
	{					\
		if (curvert >= curmaxverts)	\
			reallocv();		\
	}

#define vertf(v1, v2, v3, ls, t1, t2)                 \
	{                                             \
		struct vertex *v = &verts[curvert++]; \
		v->u = t1;                            \
		v->v = t2;                            \
		v->x = v1;                            \
		v->y = v2;                            \
		v->z = v3;                            \
		v->r = ls->r;                         \
		v->g = ls->g;                         \
		v->b = ls->b;                         \
		v->a = 255;                           \
#define vertf(v1, v2, v3, ls, t1, t2)			\
	{						\
		struct vertex *v = &verts[curvert++];	\
		v->u = t1;				\
		v->v = t2;				\
		v->x = v1;				\
		v->y = v2;				\
		v->z = v3;				\
		v->r = ls->r;				\
		v->g = ls->g;				\
		v->b = ls->b;				\
		v->a = 255;				\
	}

#define vert(v1, v2, v3, ls, t1, t2)                                      \
	{                                                                 \
#define vert(v1, v2, v3, ls, t1, t2)					  \
	{								  \
		vertf((float)(v1), (float)(v2), (float)(v3), ls, t1, t2); \
	}

int nquads;
const float TEXTURESCALE = 32.0f;
bool floorstrip = false, deltastrip = false;
int oh, oy, ox, ogltex; // the o* vars are used by the stripification
71
72
73
74
75
76
77
78
79
80



81
82
83


84
85
86
87
88
89
90
71
72
73
74
75
76
77



78
79
80
81


82
83
84
85
86
87
88
89
90







-
-
-
+
+
+

-
-
+
+







void
mipstats(int a, int b, int c)
{
	if (showm)
		conoutf(@"1x1/2x2/4x4: %d / %d / %d", a, b, c);
}

#define stripend()                                                          \
	{                                                                   \
		if (floorstrip || deltastrip) {                             \
#define stripend()							    \
	{								    \
		if (floorstrip || deltastrip) {				    \
			addstrip(ogltex, firstindex, curvert - firstindex); \
			floorstrip = deltastrip = false;                    \
		}                                                           \
			floorstrip = deltastrip = false;		    \
		}							    \
	}
void
finishstrips()
{
	stripend();
}

134
135
136
137
138
139
140

141
142

143
144
145
146
147




148
149
150
151
152
153
154
155
134
135
136
137
138
139
140
141
142

143





144
145
146
147

148
149
150
151
152
153
154







+

-
+
-
-
-
-
-
+
+
+
+
-







		ol3b = l1->b;
		ol4r = l2->r;
		ol4g = l2->g;
		ol4b = l2->b;
	} else // continue strip
	{
		int lighterr = lighterror * 2;
		// skip vertices if light values are close enough
		if ((abs(ol3r - l3->r) < lighterr &&
		        abs(ol4r - l4->r) < lighterr // skip vertices if light
		    abs(ol4r - l4->r) < lighterr &&
		                                     // values are close enough
		        && abs(ol3g - l3->g) < lighterr &&
		        abs(ol4g - l4->g) < lighterr &&
		        abs(ol3b - l3->b) < lighterr &&
		        abs(ol4b - l4->b) < lighterr) ||
		    abs(ol3g - l3->g) < lighterr &&
		    abs(ol4g - l4->g) < lighterr &&
		    abs(ol3b - l3->b) < lighterr &&
		    abs(ol4b - l4->b) < lighterr) || !wtex) {
		    !wtex) {
			curvert -= 2;
			nquads--;
		} else {
			unsigned char *p3 =
			    (unsigned char *)(&verts[curvert - 1].r);
			ol3r = p3[0];
			ol3g = p3[1];