Rev 5353 | Rev 5418 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5353 | Rev 5392 | ||
---|---|---|---|
Line 261... | Line 261... | ||
261 | fmul st0,st3 ;st0 *= v.coord.Y |
261 | fmul st0,st3 ;st0 *= v.coord.Y |
262 | faddp ;st0 = v.coord.X * m[0] + v.coord.Y * m[1] |
262 | faddp ;st0 = v.coord.X * m[0] + v.coord.Y * m[1] |
263 | fld dword[ebx+8] ;st0 = m[2] |
263 | fld dword[ebx+8] ;st0 = m[2] |
264 | fmul st0,st2 ;st0 *= v.coord.Z |
264 | fmul st0,st2 ;st0 *= v.coord.Z |
265 | fadd dword[ebx+12] ;st0 += m[3] |
265 | fadd dword[ebx+12] ;st0 += m[3] |
266 | faddp ;st0 += v.ec.X |
266 | faddp ;st0 = v.ec.X |
267 | fstp dword[edx+offs_vert_ec] ;v.ec.X = v.coord.X * m[0] + v.coord.Y * m[1] + v.coord.Z * m[2] + m[3] |
267 | fstp dword[edx+offs_vert_ec] ;v.ec.X = v.coord.X * m[0] + v.coord.Y * m[1] + v.coord.Z * m[2] + m[3] |
268 | add ebx,16 ;следущая строка матрицы |
268 | add ebx,16 ;следущая строка матрицы |
269 | add edx,4 ;следущая координата вектора |
269 | add edx,4 ;следущая координата вектора |
270 | loop .cycle_0 |
270 | loop .cycle_0 |
271 | ffree st0 |
271 | ffree st0 |
Line 280... | Line 280... | ||
280 | mov edx,[v] |
280 | mov edx,[v] |
Line 281... | Line 281... | ||
281 | 281 | ||
282 | fld dword[edx+offs_vert_ec+offs_X] |
282 | fld dword[edx+offs_vert_ec+offs_X] |
283 | fld dword[edx+offs_vert_ec+offs_Y] |
283 | fld dword[edx+offs_vert_ec+offs_Y] |
- | 284 | fld dword[edx+offs_vert_ec+offs_Z] |
|
Line 284... | Line 285... | ||
284 | fld dword[edx+offs_vert_ec+offs_Z] |
285 | fld dword[edx+offs_vert_ec+offs_W] |
285 | 286 | ||
286 | mov ecx,4 |
287 | mov ecx,4 |
287 | .cycle_1: |
288 | .cycle_1: |
288 | fld dword[ebx] ;st0 = m[0] |
289 | fld dword[ebx] ;st0 = m[0] |
289 | fmul st0,st3 ;st0 *= v.ec.X |
290 | fmul st0,st4 ;st0 *= v.ec.X |
290 | fld dword[ebx+4] ;st0 = m[1] |
291 | fld dword[ebx+4] ;st0 = m[1] |
291 | fmul st0,st3 ;st0 *= v.ec.Y |
292 | fmul st0,st4 ;st0 *= v.ec.Y |
292 | faddp ;st0 = v.ec.X * m[0] + v.ec.Y * m[1] |
293 | faddp ;st0 = v.ec.X * m[0] + v.ec.Y * m[1] |
- | 294 | fld dword[ebx+8] ;st0 = m[2] |
|
293 | fld dword[ebx+8] ;st0 = m[2] |
295 | fmul st0,st3 ;st0 *= v.ec.Z |
- | 296 | faddp ;st0 = v.ec.X * m[0] + v.ec.Y * m[1] + v.ec.Z * m[2] |
|
294 | fmul st0,st2 ;st0 *= v.ec.Z |
297 | fld dword[ebx+12] ;st0 = m[3] |
295 | fadd dword[ebx+12] ;st0 += m[3] |
298 | fmul st0,st2 ;st0 *= v.ec.W |
296 | faddp ;st0 = v.pc.X |
299 | faddp ;st0 = v.pc.X |
297 | fstp dword[edx+offs_vert_pc] ;v.pc.X = v.ec.X * m[0] + v.ec.Y * m[1] + v.ec.Z * m[2] + m[3] |
300 | fstp dword[edx+offs_vert_pc] ;v.pc.X = v.ec.X * m[0] + v.ec.Y * m[1] + v.ec.Z * m[2] + v.ec.W * m[3] |
298 | add ebx,16 ;следущая строка матрицы |
301 | add ebx,16 ;следущая строка матрицы |
299 | add edx,4 ;следущая координата вектора |
302 | add edx,4 ;следущая координата вектора |
300 | loop .cycle_1 |
303 | loop .cycle_1 |
301 | ffree st0 |
304 | ffree st0 |
302 | fincstp |
305 | fincstp |
303 | ffree st0 |
306 | ffree st0 |
304 | fincstp |
307 | fincstp |
- | 308 | ffree st0 |
|
- | 309 | fincstp |
|
Line 305... | Line 310... | ||
305 | ffree st0 |
310 | ffree st0 |
306 | fincstp |
311 | fincstp |
307 | 312 | ||
308 | mov ebx,eax |
313 | mov ebx,eax |
Line 313... | Line 318... | ||
313 | 318 | ||
314 | fld dword[edi] ;edi = &n |
319 | fld dword[edi] ;edi = &n |
315 | fld dword[edi+offs_Y] |
320 | fld dword[edi+offs_Y] |
Line 316... | Line -... | ||
316 | fld dword[edi+offs_Z] |
- | |
317 | 321 | fld dword[edi+offs_Z] |
|
318 | mov ecx,3 |
322 | |
319 | add edx,offs_vert_normal |
323 | add edx,offs_vert_normal |
320 | .cycle_2: |
324 | |
321 | fld dword[ebx] ;st0 = m[0] |
325 | fld dword[ebx] ;st0 = m[0] |
322 | fmul st0,st3 ;st0 *= n.X |
326 | fmul st0,st3 ;st0 *= n.X |
323 | fld dword[ebx+4] ;st0 = m[1] |
327 | fld dword[ebx+4] ;st0 = m[1] |
324 | fmul st0,st3 ;st0 *= n.Y |
328 | fmul st0,st3 ;st0 *= n.Y |
325 | faddp ;st0 = n.X * m[0] + n.Y * m[1] |
329 | faddp ;st0 = n.X * m[0] + n.Y * m[1] |
326 | fld dword[ebx+8] ;st0 = m[2] |
330 | fld dword[ebx+8] ;st0 = m[2] |
327 | fmul st0,st2 ;st0 *= n.Z |
331 | fmul st0,st2 ;st0 *= n.Z |
- | 332 | faddp ;st0 = v.normal.X |
|
- | 333 | fstp dword[edx] ;v.normal.X = n.X * m[0] + n.Y * m[1] + n.Z * m[2] |
|
- | 334 | ||
- | 335 | fld dword[ebx+16];st0 = m[4] |
|
- | 336 | fmul st0,st3 ;st0 *= n.X |
|
328 | faddp ;st0 = v.normal.X |
337 | fld dword[ebx+20];st0 = m[5] |
- | 338 | fmul st0,st3 ;st0 *= n.Y |
|
- | 339 | faddp ;st0 = n.X * m[4] + n.Y * m[5] |
|
- | 340 | fld dword[ebx+24];st0 = m[6] |
|
329 | fstp dword[edx] ;v.normal.X = n.X * m[0] + n.Y * m[1] + n.Z * m[2] |
341 | fmul st0,st2 ;st0 *= n.Z |
- | 342 | faddp ;st0 = v.normal.X |
|
- | 343 | fstp dword[edx+4];v.normal.X = n.X * m[4] + n.Y * m[5] + n.Z * m[6] |
|
- | 344 | ||
- | 345 | fld dword[ebx+32];st0 = m[8] |
|
- | 346 | fmul st0,st3 ;st0 *= n.X |
|
- | 347 | fld dword[ebx+36];st0 = m[9] |
|
- | 348 | fmul st0,st3 ;st0 *= n.Y |
|
330 | add ebx,16 ;следущая строка матрицы |
349 | faddp ;st0 = n.X * m[8] + n.Y * m[9] |
- | 350 | fld dword[ebx+40];st0 = m[10] |
|
- | 351 | fmul st0,st2 ;st0 *= n.Z |
|
Line 331... | Line 352... | ||
331 | add edx,4 ;следущая координата вектора |
352 | faddp ;st0 = v.normal.X |
332 | loop .cycle_2 |
353 | fstp dword[edx+8];v.normal.X = n.X * m[8] + n.Y * m[9] + n.Z * m[10] |
333 | - | ||
334 | cmp dword[eax+offs_cont_normalize_enabled],0 |
354 | |
335 | je .end_els |
355 | cmp dword[eax+offs_cont_normalize_enabled],0 |
336 | sub edx,12 |
356 | je .end_els |
337 | stdcall gl_V3_Norm,edx |
357 | stdcall gl_V3_Norm,edx |
338 | jmp .end_els |
358 | jmp .end_els |
Line 476... | Line 496... | ||
476 | cmp dword[edx+offs_cont_lighting_enabled],0 |
496 | cmp dword[edx+offs_cont_lighting_enabled],0 |
477 | je .els_0 |
497 | je .els_0 |
478 | stdcall gl_shade_vertex, edx,ebx |
498 | stdcall gl_shade_vertex, edx,ebx |
479 | jmp @f |
499 | jmp @f |
480 | .els_0: |
500 | .els_0: |
481 | mov eax,[edx+offs_cont_current_color] |
- | |
482 | mov [ebx+offs_vert_color],eax |
501 | mov esi,edx |
483 | mov eax,[edx+offs_cont_current_color+4] |
502 | add esi,offs_cont_current_color |
484 | mov [ebx+offs_vert_color+4],eax |
503 | mov edi,ebx |
485 | mov eax,[edx+offs_cont_current_color+8] |
504 | add edi,offs_vert_color ;edi = &v.color |
486 | mov [ebx+offs_vert_color+8],eax |
505 | mov ecx,4 |
- | 506 | rep movsd |
|
487 | @@: |
507 | @@: |
Line 488... | Line 508... | ||
488 | 508 | ||
489 | ; tex coords |
509 | ; tex coords |
490 | cmp dword[edx+offs_cont_texture_2d_enabled],0 |
510 | cmp dword[edx+offs_cont_texture_2d_enabled],0 |