263,7 → 263,7 |
fld dword[ebx+8] ;st0 = m[2] |
fmul st0,st2 ;st0 *= v.coord.Z |
fadd dword[ebx+12] ;st0 += m[3] |
faddp ;st0 += v.ec.X |
faddp ;st0 = v.ec.X |
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] |
add ebx,16 ;следущая строка матрицы |
add edx,4 ;следущая координата вектора |
282,19 → 282,22 |
fld dword[edx+offs_vert_ec+offs_X] |
fld dword[edx+offs_vert_ec+offs_Y] |
fld dword[edx+offs_vert_ec+offs_Z] |
fld dword[edx+offs_vert_ec+offs_W] |
|
mov ecx,4 |
.cycle_1: |
fld dword[ebx] ;st0 = m[0] |
fmul st0,st3 ;st0 *= v.ec.X |
fmul st0,st4 ;st0 *= v.ec.X |
fld dword[ebx+4] ;st0 = m[1] |
fmul st0,st3 ;st0 *= v.ec.Y |
fmul st0,st4 ;st0 *= v.ec.Y |
faddp ;st0 = v.ec.X * m[0] + v.ec.Y * m[1] |
fld dword[ebx+8] ;st0 = m[2] |
fmul st0,st2 ;st0 *= v.ec.Z |
fadd dword[ebx+12] ;st0 += m[3] |
fmul st0,st3 ;st0 *= v.ec.Z |
faddp ;st0 = v.ec.X * m[0] + v.ec.Y * m[1] + v.ec.Z * m[2] |
fld dword[ebx+12] ;st0 = m[3] |
fmul st0,st2 ;st0 *= v.ec.W |
faddp ;st0 = v.pc.X |
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] |
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] |
add ebx,16 ;следущая строка матрицы |
add edx,4 ;следущая координата вектора |
loop .cycle_1 |
304,6 → 307,8 |
fincstp |
ffree st0 |
fincstp |
ffree st0 |
fincstp |
|
mov ebx,eax |
add ebx,offs_cont_matrix_model_view_inv |
315,9 → 320,8 |
fld dword[edi+offs_Y] |
fld dword[edi+offs_Z] |
|
mov ecx,3 |
add edx,offs_vert_normal |
.cycle_2: |
|
fld dword[ebx] ;st0 = m[0] |
fmul st0,st3 ;st0 *= n.X |
fld dword[ebx+4] ;st0 = m[1] |
327,13 → 331,29 |
fmul st0,st2 ;st0 *= n.Z |
faddp ;st0 = v.normal.X |
fstp dword[edx] ;v.normal.X = n.X * m[0] + n.Y * m[1] + n.Z * m[2] |
add ebx,16 ;следущая строка матрицы |
add edx,4 ;следущая координата вектора |
loop .cycle_2 |
|
fld dword[ebx+16];st0 = m[4] |
fmul st0,st3 ;st0 *= n.X |
fld dword[ebx+20];st0 = m[5] |
fmul st0,st3 ;st0 *= n.Y |
faddp ;st0 = n.X * m[4] + n.Y * m[5] |
fld dword[ebx+24];st0 = m[6] |
fmul st0,st2 ;st0 *= n.Z |
faddp ;st0 = v.normal.X |
fstp dword[edx+4];v.normal.X = n.X * m[4] + n.Y * m[5] + n.Z * m[6] |
|
fld dword[ebx+32];st0 = m[8] |
fmul st0,st3 ;st0 *= n.X |
fld dword[ebx+36];st0 = m[9] |
fmul st0,st3 ;st0 *= n.Y |
faddp ;st0 = n.X * m[8] + n.Y * m[9] |
fld dword[ebx+40];st0 = m[10] |
fmul st0,st2 ;st0 *= n.Z |
faddp ;st0 = v.normal.X |
fstp dword[edx+8];v.normal.X = n.X * m[8] + n.Y * m[9] + n.Z * m[10] |
|
cmp dword[eax+offs_cont_normalize_enabled],0 |
je .end_els |
sub edx,12 |
stdcall gl_V3_Norm,edx |
jmp .end_els |
.els_0: |
478,12 → 498,12 |
stdcall gl_shade_vertex, edx,ebx |
jmp @f |
.els_0: |
mov eax,[edx+offs_cont_current_color] |
mov [ebx+offs_vert_color],eax |
mov eax,[edx+offs_cont_current_color+4] |
mov [ebx+offs_vert_color+4],eax |
mov eax,[edx+offs_cont_current_color+8] |
mov [ebx+offs_vert_color+8],eax |
mov esi,edx |
add esi,offs_cont_current_color |
mov edi,ebx |
add edi,offs_vert_color ;edi = &v.color |
mov ecx,4 |
rep movsd |
@@: |
|
; tex coords |