Rev 5153 | Rev 5187 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5153 | Rev 5175 | ||
---|---|---|---|
Line 4... | Line 4... | ||
4 | t dd ? ;ZBufferPoint* |
4 | t dd ? ;ZBufferPoint* |
5 | pr1 dd ? ;ZBufferPoint* |
5 | pr1 dd ? ;ZBufferPoint* |
6 | pr2 dd ? ;ZBufferPoint* |
6 | pr2 dd ? ;ZBufferPoint* |
7 | l1 dd ? ;ZBufferPoint* |
7 | l1 dd ? ;ZBufferPoint* |
8 | l2 dd ? ;ZBufferPoint* |
8 | l2 dd ? ;ZBufferPoint* |
9 | fdx1 dd ? |
9 | fdx1 dd ? ;float |
10 | fdx2 dd ? |
10 | fdx2 dd ? ;float |
11 | fdy1 dd ? |
11 | fdy1 dd ? ;float |
12 | fdy2 dd ? |
12 | fdy2 dd ? ;float |
13 | fz dd ? |
13 | fz dd ? ;float |
14 | d1 dd ? |
14 | d1 dd ? ;float |
15 | d2 dd ? |
15 | d2 dd ? ;float |
16 | pz1 dd ? ;unsigned short* |
16 | pz1 dd ? ;unsigned short* |
17 | pp1 dd ? ;PIXEL* |
17 | pp1 dd ? ;PIXEL* |
18 | part dd ? |
18 | part dd ? |
19 | update_left dd ? |
19 | update_left dd ? |
20 | update_right dd ? |
20 | update_right dd ? |
Line 21... | Line 21... | ||
21 | 21 | ||
22 | nb_lines dd ? |
22 | nb_lines dd ? |
23 | dx1 dd ? |
23 | dx1 dd ? |
24 | dy1 dd ? |
- | |
25 | tmp dd ? |
24 | dy1 dd ? |
26 | dx2 dd ? |
25 | dx2 dd ? |
Line 27... | Line 26... | ||
27 | dy2 dd ? |
26 | dy2 dd ? |
28 | 27 | ||
Line 58... | Line 57... | ||
58 | dbdy dd ? |
57 | dbdy dd ? |
59 | dbdl_min dd ? |
58 | dbdl_min dd ? |
60 | dbdl_max dd ? |
59 | dbdl_max dd ? |
61 | end if |
60 | end if |
62 | if INTERP_ST eq 1 |
61 | if INTERP_ST eq 1 |
63 | ;s1 dd ? |
62 | s1 dd ? |
64 | dsdx dd ? |
63 | dsdx dd ? |
65 | dsdy dd ? |
64 | dsdy dd ? |
66 | dsdl_min dd ? |
65 | dsdl_min dd ? |
67 | dsdl_max dd ? |
66 | dsdl_max dd ? |
68 | t1 dd ? |
67 | t1 dd ? |
Line 70... | Line 69... | ||
70 | dtdy dd ? |
69 | dtdy dd ? |
71 | dtdl_min dd ? |
70 | dtdl_min dd ? |
72 | dtdl_max dd ? |
71 | dtdl_max dd ? |
73 | end if |
72 | end if |
74 | if INTERP_STZ eq 1 |
73 | if INTERP_STZ eq 1 |
75 | sz1 dd ? |
74 | sz1 dd ? ;float |
76 | dszdx dd ? |
75 | dszdx dd ? ;float |
77 | dszdy dd ? |
76 | dszdy dd ? ;float |
78 | dszdl_min dd ? |
77 | dszdl_min dd ? ;float |
79 | dszdl_max dd ? |
78 | dszdl_max dd ? ;float |
80 | tz1 dd ? |
79 | tz1 dd ? ;float |
81 | dtzdx dd ? |
80 | dtzdx dd ? ;float |
82 | dtzdy dd ? |
81 | dtzdy dd ? ;float |
83 | dtzdl_min dd ? |
82 | dtzdl_min dd ? ;float |
84 | dtzdl_max dd ? |
83 | dtzdl_max dd ? ;float |
- | 84 | end if |
|
- | 85 | ||
- | 86 | if DRAW_LINE_M eq 1 |
|
- | 87 | DRAW_LINE 0 ;переменные делаются в макросе |
|
- | 88 | else |
|
- | 89 | ;edi = pp dd ? |
|
- | 90 | n dd ? ;int |
|
- | 91 | if INTERP_Z eq 1 |
|
- | 92 | pz dd ? ;unsigned short * |
|
- | 93 | z dd ? ;uint |
|
- | 94 | zz dd ? ;uint |
|
- | 95 | end if |
|
- | 96 | if INTERP_RGB eq 1 |
|
- | 97 | or1 dd ? ;uint |
|
- | 98 | og1 dd ? ;uint |
|
- | 99 | ob1 dd ? ;uint |
|
- | 100 | end if |
|
- | 101 | if INTERP_ST eq 1 |
|
- | 102 | s dd ? ;uint |
|
- | 103 | t dd ? ;uint |
|
- | 104 | end if |
|
- | 105 | if INTERP_STZ eq 1 |
|
- | 106 | s_z dd ? ;float |
|
- | 107 | t_z dd ? ;float |
|
- | 108 | end if |
|
85 | end if |
109 | end if |
Line 86... | Line 110... | ||
86 | 110 | ||
Line 87... | Line 111... | ||
87 | endl |
111 | endl |
- | 112 | ||
- | 113 | ; we sort the vertex with increasing y |
|
- | 114 | mov ebx,[p0] |
|
- | 115 | mov ecx,[p1] |
|
- | 116 | mov eax,[ebx+offs_zbup_y] |
|
88 | 117 | cmp [ecx+offs_zbup_y],eax |
|
89 | ; /* we sort the vertex with increasing y */ |
118 | jge @f |
90 | ; if (p1->y < p0->y) { |
119 | ;if (p1.y < p0.y) |
91 | ; t = p0; |
120 | mov [p0],ecx |
- | 121 | mov [p1],ebx |
|
92 | ; p0 = p1; |
122 | xchg ebx,ecx |
- | 123 | mov eax,[ebx+offs_zbup_y] ;обновляем p0.y для следующего сравнения |
|
- | 124 | @@: |
|
- | 125 | mov edx,[p2] |
|
93 | ; p1 = t; |
126 | cmp [edx+offs_zbup_y],eax |
- | 127 | jge @f |
|
- | 128 | ;if (p2.y < p0.y) |
|
- | 129 | mov [p0],edx |
|
94 | ; } |
130 | mov [p1],ebx |
95 | ; if (p2->y < p0->y) { |
131 | mov [p2],ecx |
96 | ; t = p2; |
132 | mov ebx,[p0] |
97 | ; p2 = p1; |
133 | mov ecx,[p1] |
- | 134 | mov edx,[p2] |
|
98 | ; p1 = p0; |
135 | jmp .end_e0 |
- | 136 | @@: |
|
99 | ; p0 = t; |
137 | mov eax,[ecx+offs_zbup_y] |
- | 138 | cmp [edx+offs_zbup_y],eax |
|
100 | ; } else if (p2->y < p1->y) { |
139 | jge .end_e0 |
101 | ; t = p1; |
140 | ;else if (p2.y < p1.y) |
102 | ; p1 = p2; |
141 | mov [p1],edx |
Line 103... | Line 142... | ||
103 | ; p2 = t; |
142 | mov [p2],ecx |
Line -... | Line 143... | ||
- | 143 | .end_e0: |
|
- | 144 | ||
104 | ; } |
145 | ; we compute dXdx and dXdy for all interpolated values |
- | 146 | ||
- | 147 | mov eax,[ecx+offs_zbup_x] |
|
105 | 148 | sub eax,[ebx+offs_zbup_x] |
|
106 | ; we compute dXdx and dXdy for all interpolated values |
149 | mov [fdx1],eax ;p1.x - p0.x |
- | 150 | mov eax,[ecx+offs_zbup_y] |
|
- | 151 | sub eax,[ebx+offs_zbup_y] |
|
107 | 152 | mov [fdy1],eax ;p1.y - p0.y |
|
- | 153 | ||
- | 154 | mov eax,[edx+offs_zbup_x] |
|
108 | ; fdx1 = p1->x - p0->x; |
155 | sub eax,[ebx+offs_zbup_x] |
109 | ; fdy1 = p1->y - p0->y; |
156 | mov [fdx2],eax ;p2.x - p0.x |
- | 157 | mov eax,[edx+offs_zbup_y] |
|
- | 158 | sub eax,[ebx+offs_zbup_y] |
|
- | 159 | mov [fdy2],eax ;p2.y - p0.y |
|
- | 160 | ||
- | 161 | fild dword[fdx2] |
|
- | 162 | fst dword[fdx2] |
|
- | 163 | fild dword[fdy1] |
|
- | 164 | fst dword[fdy1] |
|
- | 165 | fmulp |
|
- | 166 | fild dword[fdx1] |
|
- | 167 | fst dword[fdx1] |
|
110 | 168 | fild dword[fdy2] |
|
- | 169 | fst dword[fdy2] |
|
111 | ; fdx2 = p2->x - p0->x; |
170 | fmulp |
- | 171 | fsubp ;st0 = st0-st1 |
|
- | 172 | fst dword[fz] ;fz = fdx1 * fdy2 - fdx2 * fdy1 |
|
112 | ; fdy2 = p2->y - p0->y; |
173 | fldz |
- | 174 | fcompp ;if (fz == 0) |
|
113 | 175 | fstsw ax |
|
- | 176 | sahf |
|
114 | ; fz = fdx1 * fdy2 - fdx2 * fdy1; |
177 | je .end_f |
- | 178 | fld1 |
|
- | 179 | fdiv dword[fz] ;fz = 1.0 / fz |
|
115 | ; if (fz == 0) |
180 | fst dword[fz] ;st0 = fz |
- | 181 | ||
- | 182 | fld dword[fdx1] |
|
116 | ; return; |
183 | fmul st0,st1 |
- | 184 | fstp dword[fdx1] ;fdx1 *= fz |
|
- | 185 | fld dword[fdy1] |
|
117 | ; fz = 1.0 / fz; |
186 | fmul st0,st1 |
- | 187 | fstp dword[fdy1] ;fdy1 *= fz |
|
- | 188 | fld dword[fdx2] |
|
118 | 189 | fmul st0,st1 |
|
- | 190 | fstp dword[fdx2] ;fdx2 *= fz |
|
- | 191 | fld dword[fdy2] |
|
Line 119... | Line 192... | ||
119 | ; fdx1 *= fz; |
192 | fmul st0,st1 |
- | 193 | fstp dword[fdy2] ;fdy2 *= fz |
|
- | 194 | ffree st0 |
|
- | 195 | fincstp |
|
- | 196 | ||
- | 197 | if INTERP_Z eq 1 |
|
- | 198 | mov eax,[ecx+offs_zbup_z] |
|
- | 199 | sub eax,[ebx+offs_zbup_z] |
|
120 | ; fdy1 *= fz; |
200 | mov [d1],eax |
- | 201 | mov eax,[edx+offs_zbup_z] |
|
121 | ; fdx2 *= fz; |
202 | sub eax,[ebx+offs_zbup_z] |
- | 203 | mov [d2],eax |
|
- | 204 | fild dword[d1] |
|
- | 205 | fst dword[d1] ;d1 = p1.z - p0.z |
|
- | 206 | fild dword[d2] |
|
- | 207 | fst dword[d2] ;d2 = p2.z - p0.z |
|
- | 208 | ||
122 | ; fdy2 *= fz; |
209 | fld dword[fdy1] |
- | 210 | fmul st0,st1 |
|
- | 211 | fld dword[fdy2] |
|
- | 212 | fmul st0,st3 |
|
- | 213 | fsub st0,st1 |
|
- | 214 | fistp dword[dzdx] ;dzdx = (int) (fdy2*d1 - fdy1*d2) |
|
- | 215 | ffree st0 |
|
- | 216 | fincstp |
|
123 | 217 | fld dword[fdx2] |
|
- | 218 | fmul st0,st2 |
|
- | 219 | fld dword[fdx1] |
|
124 | if INTERP_Z eq 1 |
220 | fmul st0,st2 |
Line 125... | Line 221... | ||
125 | ; d1 = p1->z - p0->z; |
221 | fsub st0,st1 |
- | 222 | fistp dword[dzdy] ;dzdy = (int) (fdx1*d2 - fdx2*d1) |
|
- | 223 | ffree st0 |
|
- | 224 | fincstp |
|
- | 225 | end if |
|
- | 226 | ||
- | 227 | if INTERP_RGB eq 1 |
|
- | 228 | mov eax,[ecx+offs_zbup_r] |
|
126 | ; d2 = p2->z - p0->z; |
229 | sub eax,[ebx+offs_zbup_r] |
- | 230 | mov [d1],eax |
|
127 | ; dzdx = (int) (fdy2 * d1 - fdy1 * d2); |
231 | mov eax,[edx+offs_zbup_r] |
- | 232 | sub eax,[ebx+offs_zbup_r] |
|
- | 233 | mov [d2],eax |
|
- | 234 | fild dword[d1] |
|
- | 235 | fst dword[d1] ;d1 = p1.r - p0.r |
|
- | 236 | fild dword[d2] |
|
- | 237 | fst dword[d2] ;d2 = p2.r - p0.r |
|
128 | ; dzdy = (int) (fdx1 * d2 - fdx2 * d1); |
238 | |
- | 239 | fld dword[fdy1] |
|
- | 240 | fmul st0,st1 |
|
- | 241 | fld dword[fdy2] |
|
- | 242 | fmul st0,st3 |
|
- | 243 | fsub st0,st1 |
|
- | 244 | fistp dword[drdx] ;drdx = (int) (fdy2*d1 - fdy1*d2) |
|
- | 245 | ffree st0 |
|
129 | end if |
246 | fincstp |
- | 247 | fld dword[fdx2] |
|
- | 248 | fmul st0,st2 |
|
130 | 249 | fld dword[fdx1] |
|
- | 250 | fmul st0,st2 |
|
- | 251 | fsub st0,st1 |
|
- | 252 | fistp dword[drdy] ;drdy = (int) (fdx1*d2 - fdx2*d1) |
|
- | 253 | ffree st0 |
|
- | 254 | fincstp |
|
- | 255 | ||
- | 256 | mov eax,[ecx+offs_zbup_g] |
|
131 | if INTERP_RGB eq 1 |
257 | sub eax,[ebx+offs_zbup_g] |
- | 258 | mov [d1],eax |
|
132 | ; d1 = p1->r - p0->r; |
259 | mov eax,[edx+offs_zbup_g] |
- | 260 | sub eax,[ebx+offs_zbup_g] |
|
- | 261 | mov [d2],eax |
|
- | 262 | fild dword[d1] |
|
- | 263 | fst dword[d1] ;d1 = p1.g - p0.g |
|
- | 264 | fild dword[d2] |
|
- | 265 | fst dword[d2] ;d2 = p2.g - p0.g |
|
133 | ; d2 = p2->r - p0->r; |
266 | |
- | 267 | fld dword[fdy1] |
|
- | 268 | fmul st0,st1 |
|
- | 269 | fld dword[fdy2] |
|
- | 270 | fmul st0,st3 |
|
- | 271 | fsub st0,st1 |
|
- | 272 | fistp dword[dgdx] ;dgdx = (int) (fdy2*d1 - fdy1*d2) |
|
- | 273 | ffree st0 |
|
134 | ; drdx = (int) (fdy2 * d1 - fdy1 * d2); |
274 | fincstp |
- | 275 | fld dword[fdx2] |
|
- | 276 | fmul st0,st2 |
|
135 | ; drdy = (int) (fdx1 * d2 - fdx2 * d1); |
277 | fld dword[fdx1] |
- | 278 | fmul st0,st2 |
|
- | 279 | fsub st0,st1 |
|
- | 280 | fistp dword[dgdy] ;dgdy = (int) (fdx1*d2 - fdx2*d1) |
|
136 | 281 | ffree st0 |
|
137 | ; d1 = p1->g - p0->g; |
282 | fincstp |
- | 283 | ||
- | 284 | mov eax,[ecx+offs_zbup_b] |
|
138 | ; d2 = p2->g - p0->g; |
285 | sub eax,[ebx+offs_zbup_b] |
- | 286 | mov [d1],eax |
|
139 | ; dgdx = (int) (fdy2 * d1 - fdy1 * d2); |
287 | mov eax,[edx+offs_zbup_b] |
140 | ; dgdy = (int) (fdx1 * d2 - fdx2 * d1); |
288 | sub eax,[ebx+offs_zbup_b] |
- | 289 | mov [d2],eax |
|
- | 290 | fild dword[d1] |
|
- | 291 | fst dword[d1] ;d1 = p1.b - p0.b |
|
- | 292 | fild dword[d2] |
|
- | 293 | fst dword[d2] ;d2 = p2.b - p0.b |
|
- | 294 | ||
- | 295 | fld dword[fdy1] |
|
- | 296 | fmul st0,st1 |
|
- | 297 | fld dword[fdy2] |
|
- | 298 | fmul st0,st3 |
|
- | 299 | fsub st0,st1 |
|
- | 300 | fistp dword[dbdx] ;dbdx = (int) (fdy2*d1 - fdy1*d2) |
|
- | 301 | ffree st0 |
|
- | 302 | fincstp |
|
- | 303 | fld dword[fdx2] |
|
- | 304 | fmul st0,st2 |
|
141 | 305 | fld dword[fdx1] |
|
Line 142... | Line 306... | ||
142 | ; d1 = p1->b - p0->b; |
306 | fmul st0,st2 |
- | 307 | fsub st0,st1 |
|
- | 308 | fistp dword[dbdy] ;dbdy = (int) (fdx1*d2 - fdx2*d1) |
|
- | 309 | ffree st0 |
|
- | 310 | fincstp |
|
- | 311 | end if |
|
- | 312 | ||
- | 313 | if INTERP_ST eq 1 |
|
143 | ; d2 = p2->b - p0->b; |
314 | mov eax,[ecx+offs_zbup_s] |
- | 315 | sub eax,[ebx+offs_zbup_s] |
|
144 | ; dbdx = (int) (fdy2 * d1 - fdy1 * d2); |
316 | mov [d1],eax |
- | 317 | mov eax,[edx+offs_zbup_s] |
|
- | 318 | sub eax,[ebx+offs_zbup_s] |
|
- | 319 | mov [d2],eax |
|
- | 320 | fild dword[d1] |
|
- | 321 | fst dword[d1] ;d1 = p1.s - p0.s |
|
- | 322 | fild dword[d2] |
|
145 | ; dbdy = (int) (fdx1 * d2 - fdx2 * d1); |
323 | fst dword[d2] ;d2 = p2.s - p0.s |
- | 324 | ||
- | 325 | fld dword[fdy1] |
|
- | 326 | fmul st0,st1 |
|
- | 327 | fld dword[fdy2] |
|
- | 328 | fmul st0,st3 |
|
- | 329 | fsub st0,st1 |
|
- | 330 | fistp dword[dsdx] ;dsdx = (int) (fdy2*d1 - fdy1*d2) |
|
146 | 331 | ffree st0 |
|
- | 332 | fincstp |
|
- | 333 | fld dword[fdx2] |
|
147 | end if |
334 | fmul st0,st2 |
- | 335 | fld dword[fdx1] |
|
- | 336 | fmul st0,st2 |
|
- | 337 | fsub st0,st1 |
|
- | 338 | fistp dword[dsdy] ;dsdy = (int) (fdx1*d2 - fdx2*d1) |
|
- | 339 | ffree st0 |
|
- | 340 | fincstp |
|
- | 341 | ||
148 | 342 | mov eax,[ecx+offs_zbup_t] |
|
- | 343 | sub eax,[ebx+offs_zbup_t] |
|
149 | if INTERP_ST eq 1 |
344 | mov [d1],eax |
- | 345 | mov eax,[edx+offs_zbup_t] |
|
- | 346 | sub eax,[ebx+offs_zbup_t] |
|
- | 347 | mov [d2],eax |
|
- | 348 | fild dword[d1] |
|
- | 349 | fst dword[d1] ;d1 = p1.t - p0.t |
|
- | 350 | fild dword[d2] |
|
150 | ; d1 = p1->s - p0->s; |
351 | fst dword[d2] ;d2 = p2.t - p0.t |
- | 352 | ||
- | 353 | fld dword[fdy1] |
|
- | 354 | fmul st0,st1 |
|
- | 355 | fld dword[fdy2] |
|
- | 356 | fmul st0,st3 |
|
- | 357 | fsub st0,st1 |
|
- | 358 | fistp dword[dtdx] ;dtdx = (int) (fdy2*d1 - fdy1*d2) |
|
151 | ; d2 = p2->s - p0->s; |
359 | ffree st0 |
- | 360 | fincstp |
|
- | 361 | fld dword[fdx2] |
|
152 | ; dsdx = (int) (fdy2 * d1 - fdy1 * d2); |
362 | fmul st0,st2 |
Line 153... | Line 363... | ||
153 | ; dsdy = (int) (fdx1 * d2 - fdx2 * d1); |
363 | fld dword[fdx1] |
- | 364 | fmul st0,st2 |
|
- | 365 | fsub st0,st1 |
|
154 | 366 | fistp dword[dtdy] ;dtdy = (int) (fdx1*d2 - fdx2*d1) |
|
- | 367 | ffree st0 |
|
- | 368 | fincstp |
|
155 | ; d1 = p1->t - p0->t; |
369 | end if |
- | 370 | ||
- | 371 | if INTERP_STZ eq 1 |
|
- | 372 | fild dword[ebx+offs_zbup_z] |
|
- | 373 | fild dword[ebx+offs_zbup_s] |
|
156 | ; d2 = p2->t - p0->t; |
374 | fmul st0,st1 |
157 | ; dtdx = (int) (fdy2 * d1 - fdy1 * d2); |
375 | fstp dword[ebx+offs_zbup_sz] ;p0.sz = (float) p0.s * p0.z |
- | 376 | fild dword[ebx+offs_zbup_t] |
|
158 | ; dtdy = (int) (fdx1 * d2 - fdx2 * d1); |
377 | fmul st0,st1 |
159 | end if |
378 | fstp dword[ebx+offs_zbup_tz] ;p0.tz = (float) p0.t * p0.z |
- | 379 | ffree st0 |
|
160 | 380 | fincstp |
|
- | 381 | ||
- | 382 | fild dword[ecx+offs_zbup_z] |
|
- | 383 | fild dword[ecx+offs_zbup_s] |
|
161 | if INTERP_STZ eq 1 |
384 | fmul st0,st1 |
162 | ; { |
385 | fstp dword[ecx+offs_zbup_sz] ;p1.sz = (float) p1.s * p1.z |
- | 386 | fild dword[ecx+offs_zbup_t] |
|
163 | ; float zz; |
387 | fmul st0,st1 |
- | 388 | fstp dword[ecx+offs_zbup_tz] ;p1.tz = (float) p1.t * p1.z |
|
- | 389 | ffree st0 |
|
164 | ; zz=(float) p0->z; |
390 | fincstp |
- | 391 | ||
- | 392 | fild dword[edx+offs_zbup_z] |
|
165 | ; p0->sz= (float) p0->s * zz; |
393 | fild dword[edx+offs_zbup_s] |
- | 394 | fmul st0,st1 |
|
- | 395 | fstp dword[edx+offs_zbup_sz] ;p2.sz = (float) p2.s * p2.z |
|
166 | ; p0->tz= (float) p0->t * zz; |
396 | fild dword[edx+offs_zbup_t] |
- | 397 | fmul st0,st1 |
|
- | 398 | fstp dword[edx+offs_zbup_tz] ;p2.tz = (float) p2.t * p2.z |
|
167 | ; zz=(float) p1->z; |
399 | ffree st0 |
- | 400 | fincstp |
|
- | 401 | ||
- | 402 | fld dword[ecx+offs_zbup_sz] |
|
- | 403 | fsub dword[ebx+offs_zbup_sz] |
|
- | 404 | fst dword[d1] ;d1 = p1.sz - p0.sz |
|
- | 405 | fld dword[edx+offs_zbup_sz] |
|
168 | ; p1->sz= (float) p1->s * zz; |
406 | fsub dword[ebx+offs_zbup_sz] |
- | 407 | fst dword[d2] ;d2 = p2.sz - p0.sz |
|
- | 408 | ||
- | 409 | fld dword[fdy1] |
|
- | 410 | fmul st0,st1 |
|
- | 411 | fld dword[fdy2] |
|
- | 412 | fmul st0,st3 |
|
- | 413 | fsub st0,st1 |
|
169 | ; p1->tz= (float) p1->t * zz; |
414 | fistp dword[dszdx] ;dszdx = (int) (fdy2*d1 - fdy1*d2) |
- | 415 | ffree st0 |
|
- | 416 | fincstp |
|
170 | ; zz=(float) p2->z; |
417 | fld dword[fdx2] |
- | 418 | fmul st0,st2 |
|
- | 419 | fld dword[fdx1] |
|
171 | ; p2->sz= (float) p2->s * zz; |
420 | fmul st0,st2 |
- | 421 | fsub st0,st1 |
|
- | 422 | fistp dword[dszdy] ;dszdy = (int) (fdx1*d2 - fdx2*d1) |
|
172 | ; p2->tz= (float) p2->t * zz; |
423 | ffree st0 |
- | 424 | fincstp |
|
- | 425 | ||
- | 426 | fld dword[ecx+offs_zbup_tz] |
|
- | 427 | fsub dword[ebx+offs_zbup_tz] |
|
- | 428 | fst dword[d1] ;d1 = p1.tz - p0.tz |
|
- | 429 | fld dword[edx+offs_zbup_tz] |
|
173 | 430 | fsub dword[ebx+offs_zbup_tz] |
|
- | 431 | fst dword[d2] ;d2 = p2.tz - p0.tz |
|
- | 432 | ||
- | 433 | fld dword[fdy1] |
|
- | 434 | fmul st0,st1 |
|
- | 435 | fld dword[fdy2] |
|
- | 436 | fmul st0,st3 |
|
- | 437 | fsub st0,st1 |
|
174 | ; d1 = p1->sz - p0->sz; |
438 | fistp dword[dtzdx] ;dtzdx = (int) (fdy2*d1 - fdy1*d2) |
- | 439 | ffree st0 |
|
175 | ; d2 = p2->sz - p0->sz; |
440 | fincstp |
176 | ; dszdx = (fdy2 * d1 - fdy1 * d2); |
441 | fld dword[fdx2] |
Line 177... | Line 442... | ||
177 | ; dszdy = (fdx1 * d2 - fdx2 * d1); |
442 | fmul st0,st2 |
Line -... | Line 443... | ||
- | 443 | fld dword[fdx1] |
|
- | 444 | fmul st0,st2 |
|
- | 445 | fsub st0,st1 |
|
- | 446 | fistp dword[dtzdy] ;dtzdy = (int) (fdx1*d2 - fdx2*d1) |
|
178 | 447 | ffree st0 |
|
- | 448 | fincstp |
|
- | 449 | end if |
|
- | 450 | ||
- | 451 | ; screen coordinates |
|
179 | ; d1 = p1->tz - p0->tz; |
452 | |
Line 180... | Line 453... | ||
180 | ; d2 = p2->tz - p0->tz; |
453 | mov eax,[zb] |
Line 181... | Line 454... | ||
181 | ; dtzdx = (fdy2 * d1 - fdy1 * d2); |
454 | mov edx,[eax+offs_zbuf_linesize] |
- | 455 | imul edx,[ebx+offs_zbup_y] |
|
- | 456 | add edx,[eax+offs_zbuf_pbuf] |
|
- | 457 | mov [pp1],edx ;pp1 = zb.pbuf + zb.linesize * p0.y |
|
- | 458 | mov edx,[eax+offs_zbuf_xsize] |
|
182 | ; dtzdy = (fdx1 * d2 - fdx2 * d1); |
459 | imul edx,[ebx+offs_zbup_y] |
183 | ; } |
460 | shl edx,1 |
184 | end if |
461 | add edx,[eax+offs_zbuf_zbuf] |
185 | 462 | mov [pz1],edx ;pz1 = zb.zbuf + zb.xsize * p0.y |
|
186 | ; screen coordinates |
463 | |
- | 464 | DRAW_INIT |
|
187 | 465 | ||
- | 466 | mov dword[part],0 |
|
- | 467 | .cycle_0: |
|
188 | ; pp1 = (PIXEL *) ((char *) zb->pbuf + zb->linesize * p0->y); |
468 | mov ebx,[p0] |
189 | ; pz1 = zb->zbuf + p0->y * zb->xsize; |
469 | mov ecx,[p1] |
190 | 470 | mov edx,[p2] |
|
191 | DRAW_INIT |
471 | cmp dword[part],0 |
192 | 472 | jne .els_0 |
|
193 | ; for(part=0;part<2;part++) { |
473 | mov dword[update_left],1 |
194 | ; if (part == 0) { |
474 | mov dword[update_right],1 |
195 | ; if (fz > 0) { |
475 | mov [l1],ebx |
196 | ; update_left=1; |
476 | mov [pr1],ebx |
197 | ; update_right=1; |
477 | fldz |
- | 478 | fld dword[fz] |
|
- | 479 | fcompp ;if (fz > 0) |
|
198 | ; l1=p0; |
480 | fstsw ax |
- | 481 | sahf |
|
199 | ; l2=p2; |
482 | jbe .els_1 |
200 | ; pr1=p0; |
483 | mov [l2],edx |
201 | ; pr2=p1; |
484 | mov [pr2],ecx |
202 | ; } else { |
485 | jmp .end_1 |
- | 486 | .els_1: |
|
203 | ; update_left=1; |
487 | mov [l2],ecx |
- | 488 | mov [pr2],edx |
|
204 | ; update_right=1; |
489 | .end_1: |
205 | ; l1=p0; |
490 | mov eax,[ecx+offs_zbup_y] |
206 | ; l2=p1; |
491 | sub eax,[ebx+offs_zbup_y] |
207 | ; pr1=p0; |
492 | mov [nb_lines],eax ;nb_lines = p1.y - p0.y |
208 | ; pr2=p2; |
493 | jmp .end_0 |
- | 494 | .els_0: |
|
209 | ; } |
495 | ; second part |
- | 496 | mov dword[update_left],0 |
|
- | 497 | mov dword[update_right],1 |
|
210 | ; nb_lines = p1->y - p0->y; |
498 | fldz |
- | 499 | fld dword[fz] |
|
- | 500 | fcompp ;if (fz > 0) |
|
211 | ; } else { |
501 | fstsw ax |
212 | ; /* second part */ |
502 | sahf |
213 | ; if (fz > 0) { |
503 | jbe .els_2 |
Line 214... | Line 504... | ||
214 | ; update_left=0; |
504 | mov [pr1],ecx |
Line 215... | Line 505... | ||
215 | ; update_right=1; |
505 | mov [pr2],edx |
- | 506 | jmp .end_2 |
|
- | 507 | .els_2: |
|
- | 508 | mov [l1],ecx |
|
- | 509 | mov [l2],edx |
|
- | 510 | .end_2: |
|
216 | ; pr1=p1; |
511 | mov eax,[edx+offs_zbup_y] |
- | 512 | sub eax,[ecx+offs_zbup_y] |
|
- | 513 | inc eax |
|
217 | ; pr2=p2; |
514 | mov [nb_lines],eax ;nb_lines = p2.y - p1.y + 1 |
218 | ; } else { |
515 | .end_0: |
- | 516 | ||
- | 517 | ; compute the values for the left edge |
|
- | 518 | ||
- | 519 | cmp dword[update_left],0 ;if (update_left) |
|
219 | ; update_left=1; |
520 | je .end_upd_l |
- | 521 | mov ebx,[l1] |
|
- | 522 | mov ecx,[l2] |
|
220 | ; update_right=0; |
523 | mov eax,[ecx+offs_zbup_x] |
221 | ; l1=p1; |
524 | sub eax,[ebx+offs_zbup_x] |
- | 525 | mov [dx1],eax ;dx1 = l2.x - l1.x |
|
222 | ; l2=p2; |
526 | mov eax,[ecx+offs_zbup_y] |
223 | ; } |
527 | sub eax,[ebx+offs_zbup_y] |
- | 528 | mov [dy1],eax ;dy1 = l2.y - l1.y |
|
224 | ; nb_lines = p2->y - p1->y + 1; |
529 | cmp eax,0 ;if (dy1 > 0) |
- | 530 | jle .els_3 |
|
225 | ; } |
531 | mov eax,[dx1] |
- | 532 | shl eax,16 |
|
226 | 533 | xor edx,edx |
|
Line 227... | Line 534... | ||
227 | ; compute the values for the left edge |
534 | div dword[dy1] ;eax = (dx1 << 16) / dy1 |
228 | 535 | jmp .end_3 |
|
- | 536 | .els_3: |
|
- | 537 | xor eax,eax |
|
- | 538 | .end_3: |
|
- | 539 | mov edx,[ebx+offs_zbup_x] |
|
- | 540 | mov [x1],edx |
|
229 | ; if (update_left) { |
541 | mov dword[error],0 |
- | 542 | mov dword[derror],eax |
|
230 | ; dy1 = l2->y - l1->y; |
543 | and dword[derror],0xffff |
231 | ; dx1 = l2->x - l1->x; |
544 | shr eax,16 |
232 | ; if (dy1 > 0) |
545 | mov [dxdy_min],eax |
233 | ; tmp = (dx1 << 16) / dy1; |
546 | inc eax |
234 | ; else |
547 | mov [dxdy_max],eax |
235 | ; tmp = 0; |
548 | |
236 | ; x1 = l1->x; |
- | |
237 | ; error = 0; |
549 | if INTERP_Z eq 1 |
238 | ; derror = tmp & 0x0000ffff; |
- | |
239 | ; dxdy_min = tmp >> 16; |
550 | mov eax,[l1] |
240 | ; dxdy_max = dxdy_min + 1; |
- | |
241 | 551 | mov eax,[eax+offs_zbup_z] |
|
242 | if INTERP_Z eq 1 |
552 | mov [z1],eax ;z1 = l1.z |
243 | ; z1=l1->z; |
- | |
244 | ; dzdl_min=(dzdy + dzdx * dxdy_min); |
- | |
245 | ; dzdl_max=dzdl_min + dzdx; |
- | |
246 | end if |
553 | mov eax,[dzdx] |
247 | if INTERP_RGB eq 1 |
- | |
248 | ; r1=l1->r; |
554 | imul eax,[dxdy_min] |
249 | ; drdl_min=(drdy + drdx * dxdy_min); |
555 | add eax,[dzdy] |
250 | ; drdl_max=drdl_min + drdx; |
- | |
251 | 556 | mov [dzdl_min],eax ;dzdl_min = (dzdy +dzdx*dxdy_min) |
|
252 | ; g1=l1->g; |
557 | add eax,[dzdx] |
253 | ; dgdl_min=(dgdy + dgdx * dxdy_min); |
558 | mov [dzdl_max],eax ;dzdl_max = dzdl_min +dzdx |
254 | ; dgdl_max=dgdl_min + dgdx; |
559 | end if |
255 | 560 | if INTERP_RGB eq 1 |
|
256 | ; b1=l1->b; |
561 | mov ebx,[l1] |
257 | ; dbdl_min=(dbdy + dbdx * dxdy_min); |
- | |
258 | ; dbdl_max=dbdl_min + dbdx; |
- | |
259 | end if |
562 | mov eax,[ebx+offs_zbup_r] |
260 | if INTERP_ST eq 1 |
- | |
261 | ; s1=l1->s; |
563 | mov [r1],eax ;r1 = l1.r |
262 | ; dsdl_min=(dsdy + dsdx * dxdy_min); |
- | |
263 | ; dsdl_max=dsdl_min + dsdx; |
- | |
264 | - | ||
265 | ; t1=l1->t; |
- | |
266 | ; dtdl_min=(dtdy + dtdx * dxdy_min); |
564 | mov eax,[drdx] |
267 | ; dtdl_max=dtdl_min + dtdx; |
- | |
268 | end if |
565 | imul eax,[dxdy_min] |
269 | if INTERP_STZ eq 1 |
566 | add eax,[drdy] |
270 | ; sz1=l1->sz; |
567 | mov [drdl_min],eax ;drdl_min = (drdy +drdx*dxdy_min) |
271 | ; dszdl_min=(dszdy + dszdx * dxdy_min); |
568 | add eax,[drdx] |
272 | ; dszdl_max=dszdl_min + dszdx; |
- | |
273 | 569 | mov [drdl_max],eax ;drdl_max = drdl_min +drdx |
|
274 | ; tz1=l1->tz; |
570 | |
275 | ; dtzdl_min=(dtzdy + dtzdx * dxdy_min); |
571 | mov eax,[ebx+offs_zbup_g] |
276 | ; dtzdl_max=dtzdl_min + dtzdx; |
- | |
277 | end if |
572 | mov [g1],eax ;g1 = l1.g |
278 | ; } |
573 | mov eax,[dgdx] |
279 | - | ||
280 | ; /* compute values for the right edge */ |
- | |
281 | - | ||
282 | ; if (update_right) { |
- | |
283 | ; dx2 = (pr2->x - pr1->x); |
- | |
284 | ; dy2 = (pr2->y - pr1->y); |
- | |
285 | ; if (dy2>0) |
- | |
286 | ; dx2dy2 = ( dx2 << 16) / dy2; |
- | |
287 | ; else |
- | |
288 | ; dx2dy2 = 0; |
- | |
289 | ; x2 = pr1->x << 16; |
- | |
290 | ; } |
- | |
291 | - | ||
292 | ; /* we draw all the scan line of the part */ |
574 | imul eax,[dxdy_min] |
293 | 575 | add eax,[dgdy] |
|
- | 576 | mov [dgdl_min],eax ;dgdl_min = (dgdy +dgdx*dxdy_min) |
|
- | 577 | add eax,[dgdx] |
|
- | 578 | mov [dgdl_max],eax ;dgdl_max = dgdl_min +dgdx |
|
- | 579 | ||
- | 580 | mov eax,[ebx+offs_zbup_b] |
|
- | 581 | mov [b1],eax ;b1 = l1.b |
|
- | 582 | mov eax,[dbdx] |
|
- | 583 | imul eax,[dxdy_min] |
|
- | 584 | add eax,[dbdy] |
|
- | 585 | mov [dbdl_min],eax ;dbdl_min = (dbdy +dbdx*dxdy_min) |
|
- | 586 | add eax,[dbdx] |
|
- | 587 | mov [dbdl_max],eax ;dbdl_max = dbdl_min +dbdx |
|
- | 588 | ||
- | 589 | end if |
|
- | 590 | if INTERP_ST eq 1 |
|
- | 591 | mov ebx,[l1] |
|
- | 592 | mov eax,[ebx+offs_zbup_s] |
|
294 | ; while (nb_lines>0) { |
593 | mov [s1],eax ;s1 = l1.s |
295 | ; nb_lines--; |
594 | mov eax,[dsdx] |
296 | ;#ifndef DRAW_LINE |
595 | imul eax,[dxdy_min] |
- | 596 | add eax,[dsdy] |
|
- | 597 | mov [dsdl_min],eax ;dsdl_min = (dsdy +dsdx*dxdy_min) |
|
- | 598 | add eax,[dsdx] |
|
- | 599 | mov [dsdl_max],eax ;dsdl_max = dsdl_min +dsdx |
|
- | 600 | ||
- | 601 | mov eax,[ebx+offs_zbup_t] |
|
- | 602 | mov [t1],eax ;t1 = l1.t |
|
- | 603 | mov eax,[dtdx] |
|
- | 604 | imul eax,[dxdy_min] |
|
- | 605 | add eax,[dtdy] |
|
297 | ; /* generic draw line */ |
606 | mov [dtdl_min],eax ;dtdl_min = (dtdy +dtdx*dxdy_min) |
- | 607 | add eax,[dtdx] |
|
- | 608 | mov [dtdl_max],eax ;dtdl_max = dtdl_min +dtdx |
|
- | 609 | end if |
|
- | 610 | if INTERP_STZ eq 1 |
|
- | 611 | mov ebx,[l1] |
|
- | 612 | mov eax,[ebx+offs_zbup_sz] |
|
- | 613 | mov [sz1],eax ;sz1 = l1.sz - преобразований нет, потому без сопроцессора |
|
298 | ; { |
614 | fild dword[dxdy_min] |
- | 615 | fmul dword[dszdx] |
|
- | 616 | fadd dword[dszdy] |
|
- | 617 | fst dword[dszdl_min] ;dszdl_min = (dszdy +dszdx*dxdy_min) |
|
- | 618 | fadd dword[dszdx] |
|
- | 619 | fstp dword[dszdl_max] ;dszdl_max = dszdl_min +dszdx |
|
- | 620 | ||
- | 621 | mov eax,[ebx+offs_zbup_tz] |
|
- | 622 | mov [tz1],eax ;tz1 = l1.tz - преобразований нет, потому без сопроцессора |
|
- | 623 | fild dword[dxdy_min] |
|
- | 624 | fmul dword[dtzdx] |
|
- | 625 | fadd dword[dtzdy] |
|
- | 626 | fst dword[dtzdl_min] ;dtzdl_min = (dtzdy +dtzdx*dxdy_min) |
|
- | 627 | fadd dword[dtzdx] |
|
- | 628 | fstp dword[dtzdl_max] ;dtzdl_max = dtzdl_min +dtzdx |
|
- | 629 | end if |
|
- | 630 | .end_upd_l: |
|
- | 631 | ||
- | 632 | ; compute values for the right edge |
|
- | 633 | ||
- | 634 | cmp dword[update_right],0 ;if(update_right) |
|
- | 635 | je .end_upd_r |
|
- | 636 | mov ebx,[pr1] |
|
- | 637 | mov ecx,[pr2] |
|
- | 638 | mov eax,[ecx+offs_zbup_x] |
|
- | 639 | sub eax,[ebx+offs_zbup_x] |
|
- | 640 | mov [dx2],eax ;dx2 = pr2.x - pr1.x |
|
- | 641 | mov eax,[ecx+offs_zbup_y] |
|
- | 642 | sub eax,[ebx+offs_zbup_y] |
|
- | 643 | mov [dy2],eax ;dy2 = pr2.y - pr1.y |
|
- | 644 | cmp eax,0 ;if (dy2 > 0) |
|
- | 645 | jle .els_4 |
|
- | 646 | mov eax,[dx2] |
|
- | 647 | shl eax,16 |
|
- | 648 | xor edx,edx |
|
- | 649 | div dword[dy2] ;eax = (dx2 << 16) / dy2 |
|
- | 650 | jmp .end_4 |
|
- | 651 | .els_4: |
|
- | 652 | xor eax,eax |
|
- | 653 | .end_4: |
|
- | 654 | mov [dx2dy2],eax |
|
- | 655 | mov eax,[ebx+offs_zbup_x] |
|
- | 656 | shl eax,16 |
|
- | 657 | mov [x2],eax ; x2 = pr1.x << 16 |
|
- | 658 | .end_upd_r: |
|
299 | ; register PIXEL *pp; |
659 | |
- | 660 | ; we draw all the scan line of the part |
|
300 | ; register int n; |
661 | |
301 | if INTERP_Z eq 1 |
662 | .beg_w_lin: |
- | 663 | cmp dword[nb_lines],0 ;while (nb_lines>0) |
|
- | 664 | jle .end_w_lin |
|
302 | ; register unsigned short *pz; |
665 | dec dword[nb_lines] |
- | 666 | if DRAW_LINE_M eq 1 |
|
303 | ; register unsigned int z,zz; |
667 | DRAW_LINE 1 |
- | 668 | else |
|
304 | end if |
669 | ; generic draw line |
305 | if INTERP_RGB eq 1 |
670 | mov eax,[x2] |
- | 671 | shr eax,16 |
|
306 | ; register unsigned int or1,og1,ob1; |
672 | mov edi,[x1] |
- | 673 | sub eax,edi |
|
307 | end if |
674 | mov [n],eax ;n = (x2 >> 16) - x1 |
- | 675 | imul edi,PSZB |
|
308 | if INTERP_ST eq 1 |
676 | add edi,[pp1] ;pp = pp1 + x1 * PSZB |
309 | ; register unsigned int s,t; |
677 | if INTERP_Z eq 1 |
310 | end if |
678 | mov eax,[x1] |
311 | if INTERP_STZ eq 1 |
679 | shl eax,1 |
- | 680 | add eax,[pz1] |
|
312 | ; float sz,tz; |
681 | mov [pz],eax |
- | 682 | mov eax,[z1] |
|
313 | end if |
683 | mov [z],eax |
314 | ; n=(x2 >> 16) - x1; |
684 | end if |
315 | ; pp=(PIXEL *)((char *)pp1 + x1 * PSZB); |
685 | if INTERP_RGB eq 1 |
- | 686 | mov eax,[r1] |
|
316 | if INTERP_Z eq 1 |
687 | mov [or1],eax |
- | 688 | mov eax,[g1] |
|
317 | ; pz=pz1+x1; |
689 | mov [og1],eax |
318 | ; z=z1; |
690 | mov eax,[b1] |
319 | end if |
691 | mov [ob1],eax |
320 | if INTERP_RGB eq 1 |
692 | end if |
321 | ; or1 = r1; |
693 | if INTERP_ST eq 1 |
322 | ; og1 = g1; |
694 | mov eax,[s1] |
323 | ; ob1 = b1; |
695 | mov [s],eax |
324 | end if |
696 | mov eax,[t1] |
325 | if INTERP_ST eq 1 |
697 | mov [t],eax |
326 | ; s=s1; |
698 | end if |
327 | ; t=t1; |
699 | if INTERP_STZ eq 1 |
- | 700 | mov eax,[sz1] |
|
328 | end if |
701 | mov [s_z],eax |
329 | if INTERP_STZ eq 1 |
702 | mov eax,[tz1] |
330 | ; sz=sz1; |
703 | mov [t_z],eax |
331 | ; tz=tz1; |
704 | end if |
332 | end if |
705 | .cycle_1: ;while (n>=3) |
333 | ; while (n>=3) { |
706 | PUT_PIXEL 0 |
334 | ; PUT_PIXEL(0); |
- | |
335 | ; PUT_PIXEL(1); |
707 | PUT_PIXEL 1 |
336 | ; PUT_PIXEL(2); |
708 | PUT_PIXEL 2 |
337 | ; PUT_PIXEL(3); |
709 | PUT_PIXEL 3 |
338 | if INTERP_Z eq 1 |
- | |
339 | ; pz+=4; |
710 | if INTERP_Z eq 1 |
340 | end if |
711 | add dword[pz],8 ;=4*sizeof(uint) |
341 | ; pp=(PIXEL *)((char *)pp + 4 * PSZB); |
712 | end if |
342 | ; n-=4; |
713 | add edi,4*PSZB |
343 | ; } |
714 | sub dword[n],4 |
- | 715 | cmp dword[n],3 |
|
344 | ; while (n>=0) { |
716 | jge .cycle_1 |
- | 717 | .cycle_2: ;while (n>=0) |
|
345 | ; PUT_PIXEL(0); |
718 | PUT_PIXEL 0 |
346 | if INTERP_Z eq 1 |
719 | if INTERP_Z eq 1 |
- | 720 | add dword[pz],2 ;=sizeof(uint) |
|
347 | ; pz+=1; |
721 | end if |
348 | end if |
722 | add edi,PSZB |
- | 723 | dec dword[n] |
|
349 | ; pp=(PIXEL *)((char *)pp + PSZB); |
724 | cmp dword[n],0 |
350 | ; n-=1; |
725 | jge .cycle_2 |
351 | ; } |
726 | end if |
- | 727 | ||
352 | ; } |
728 | ; left edge |
- | 729 | mov eax,[derror] |
|
353 | ;#else |
730 | add [error],eax |
- | 731 | cmp eax,0 ;if (error > 0) |
|
354 | ; DRAW_LINE(); |
732 | jle .els_er |
355 | ;#endif |
733 | sub dword[error],0x10000 |
356 | ; |
734 | mov eax,[dxdy_max] |
- | 735 | add [x1],eax |
|
357 | ; /* left edge */ |
736 | if INTERP_Z eq 1 |
- | 737 | mov eax,[dzdl_max] |
|
358 | ; error+=derror; |
738 | add [z1],eax |
359 | ; if (error > 0) { |
739 | end if |
360 | ; error-=0x10000; |
740 | if INTERP_RGB eq 1 |
- | 741 | mov eax,[drdl_max] |
|
- | 742 | add [r1],eax |
|
361 | ; x1+=dxdy_max; |
743 | mov eax,[dgdl_max] |
- | 744 | add [g1],eax |
|
- | 745 | mov eax,[dbdl_max] |
|
362 | if INTERP_Z eq 1 |
746 | add [b1],eax |
363 | ; z1+=dzdl_max; |
747 | end if |
- | 748 | if INTERP_ST eq 1 |
|
364 | end if |
749 | mov eax,[dsdl_max] |
- | 750 | add [s1],eax |
|
365 | if INTERP_RGB eq 1 |
751 | mov eax,[dtdl_max] |
366 | ; r1+=drdl_max; |
752 | add [t1],eax |
- | 753 | end if |
|
367 | ; g1+=dgdl_max; |
754 | if INTERP_STZ eq 1 |
368 | ; b1+=dbdl_max; |
755 | fld dword[dszdl_max] |
369 | end if |
756 | fadd dword[sz1] |
- | 757 | fstp dword[sz1] |
|
370 | if INTERP_ST eq 1 |
758 | fld dword[dtzdl_max] |
- | 759 | fadd dword[tz1] |
|
371 | ; s1+=dsdl_max; |
760 | fstp dword[tz1] |
- | 761 | end if |
|
372 | ; t1+=dtdl_max; |
762 | jmp .end_er |
373 | end if |
763 | .els_er: |
374 | if INTERP_STZ eq 1 |
764 | mov eax,[dxdy_min] |
- | 765 | add [x1],eax |
|
375 | ; sz1+=dszdl_max; |
766 | if INTERP_Z eq 1 |
- | 767 | mov eax,[dzdl_min] |
|
376 | ; tz1+=dtzdl_max; |
768 | add [z1],eax |
377 | end if |
769 | end if |
378 | ; } else { |
770 | if INTERP_RGB eq 1 |
- | 771 | mov eax,[drdl_min] |
|
- | 772 | add [r1],eax |
|
379 | ; x1+=dxdy_min; |
773 | mov eax,[dgdl_min] |
- | 774 | add [g1],eax |
|
- | 775 | mov eax,[dbdl_min] |
|
380 | if INTERP_Z eq 1 |
776 | add [b1],eax |
381 | ; z1+=dzdl_min; |
777 | end if |
382 | end if |
778 | if INTERP_ST eq 1 |
383 | if INTERP_RGB eq 1 |
779 | mov eax,[dsdl_min] |
384 | ; r1+=drdl_min; |
780 | add [s1],eax |
- | 781 | mov eax,[dtdl_min] |
|
385 | ; g1+=dgdl_min; |
782 | add [t1],eax |
386 | ; b1+=dbdl_min; |
783 | end if |
- | 784 | if INTERP_STZ eq 1 |
|
387 | end if |
785 | fld dword[dszdl_min] |
- | 786 | fadd dword[sz1] |
|
388 | if INTERP_ST eq 1 |
787 | fstp dword[sz1] |
- | 788 | fld dword[dtzdl_min] |
|
- | 789 | fadd dword[tz1] |
|
- | 790 | fstp dword[tz1] |
|
- | 791 | end if |
|
- | 792 | .end_er: |
|
- | 793 | ||
- | 794 | ; right edge |
|
389 | ; s1+=dsdl_min; |
795 | mov eax,[dx2dy2] |
390 | ; t1+=dtdl_min; |
796 | add [x2],eax |
391 | end if |
797 | |
Line 392... | Line 798... | ||
392 | if INTERP_STZ eq 1 |
798 | ; screen coordinates |
393 | ; sz1+=dszdl_min; |
799 | mov ebx,[zb] |
394 | ; tz1+=dtzdl_min; |
800 | mov eax,[ebx+offs_zbuf_linesize] |
395 | end if |
801 | add [pp1],eax |
- | 802 | mov eax,[ebx+offs_zbuf_xsize] |
|
Line 396... | Line 803... | ||
396 | ; } |
803 | shl eax,1 |
397 | ; |
804 | add [pz1],eax |
398 | ; /* right edge */ |
805 | jmp .beg_w_lin |