Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 8068 → Rev 8069

/programs/develop/libraries/TinyGL/asm_fork/ztriangle.inc
119,18 → 119,18
mov ebx,[p0]
mov ecx,[p1]
mov edx,[p2]
mov eax,[edx+offs_zbup_y]
cmp [ecx+offs_zbup_y],eax ;(2-1)
mov eax,[edx+ZBufferPoint.y]
cmp [ecx+ZBufferPoint.y],eax ;(2-1)
jle @f
xchg edx,ecx
@@:
mov eax,[ecx+offs_zbup_y]
cmp [ebx+offs_zbup_y],eax ;(1-0)
mov eax,[ecx+ZBufferPoint.y]
cmp [ebx+ZBufferPoint.y],eax ;(1-0)
jle @f
xchg ecx,ebx
@@:
mov eax,[edx+offs_zbup_y]
cmp [ecx+offs_zbup_y],eax ;(2-1)
mov eax,[edx+ZBufferPoint.y]
cmp [ecx+ZBufferPoint.y],eax ;(2-1)
jle @f
xchg edx,ecx
@@:
139,18 → 139,18
mov [p2],edx
 
; we compute dXdx and dXdy for all interpolated values
mov eax,[ecx+offs_zbup_x]
sub eax,[ebx+offs_zbup_x]
mov eax,[ecx+ZBufferPoint.x]
sub eax,[ebx+ZBufferPoint.x]
mov [fdx1],eax ;p1.x - p0.x
mov eax,[ecx+offs_zbup_y]
sub eax,[ebx+offs_zbup_y]
mov eax,[ecx+ZBufferPoint.y]
sub eax,[ebx+ZBufferPoint.y]
mov [fdy1],eax ;p1.y - p0.y
 
mov eax,[edx+offs_zbup_x]
sub eax,[ebx+offs_zbup_x]
mov eax,[edx+ZBufferPoint.x]
sub eax,[ebx+ZBufferPoint.x]
mov [fdx2],eax ;p2.x - p0.x
mov eax,[edx+offs_zbup_y]
sub eax,[ebx+offs_zbup_y]
mov eax,[edx+ZBufferPoint.y]
sub eax,[ebx+ZBufferPoint.y]
mov [fdy2],eax ;p2.y - p0.y
 
fild dword[fdx1]
183,11 → 183,11
fstp dword[fdy2] ;fdy2 *= fz
 
if INTERP_Z eq 1
mov eax,[ecx+offs_zbup_z]
sub eax,[ebx+offs_zbup_z]
mov eax,[ecx+ZBufferPoint.z]
sub eax,[ebx+ZBufferPoint.z]
mov [d1],eax
mov eax,[edx+offs_zbup_z]
sub eax,[ebx+offs_zbup_z]
mov eax,[edx+ZBufferPoint.z]
sub eax,[ebx+ZBufferPoint.z]
mov [d2],eax
fild dword[d1] ;d1 = p1.z - p0.z
fild dword[d2] ;d2 = p2.z - p0.z
198,11 → 198,11
end if
 
if INTERP_RGB eq 1
mov eax,[ecx+offs_zbup_r]
sub eax,[ebx+offs_zbup_r]
mov eax,[ecx+ZBufferPoint.r]
sub eax,[ebx+ZBufferPoint.r]
mov [d1],eax
mov eax,[edx+offs_zbup_r]
sub eax,[ebx+offs_zbup_r]
mov eax,[edx+ZBufferPoint.r]
sub eax,[ebx+ZBufferPoint.r]
mov [d2],eax
fild dword[d1] ;d1 = p1.r - p0.r
fild dword[d2] ;d2 = p2.r - p0.r
211,11 → 211,11
;drdy = (int) (fdx1*d2 - fdx2*d1)
calc_d1d2 fi, drdx, drdy
 
mov eax,[ecx+offs_zbup_g]
sub eax,[ebx+offs_zbup_g]
mov eax,[ecx+ZBufferPoint.g]
sub eax,[ebx+ZBufferPoint.g]
mov [d1],eax
mov eax,[edx+offs_zbup_g]
sub eax,[ebx+offs_zbup_g]
mov eax,[edx+ZBufferPoint.g]
sub eax,[ebx+ZBufferPoint.g]
mov [d2],eax
fild dword[d1] ;d1 = p1.g - p0.g
fild dword[d2] ;d2 = p2.g - p0.g
224,11 → 224,11
;dgdy = (int) (fdx1*d2 - fdx2*d1)
calc_d1d2 fi, dgdx, dgdy
 
mov eax,[ecx+offs_zbup_b]
sub eax,[ebx+offs_zbup_b]
mov eax,[ecx+ZBufferPoint.b]
sub eax,[ebx+ZBufferPoint.b]
mov [d1],eax
mov eax,[edx+offs_zbup_b]
sub eax,[ebx+offs_zbup_b]
mov eax,[edx+ZBufferPoint.b]
sub eax,[ebx+ZBufferPoint.b]
mov [d2],eax
fild dword[d1] ;d1 = p1.b - p0.b
fild dword[d2] ;d2 = p2.b - p0.b
239,11 → 239,11
end if
 
if INTERP_ST eq 1
mov eax,[ecx+offs_zbup_s]
sub eax,[ebx+offs_zbup_s]
mov eax,[ecx+ZBufferPoint.s]
sub eax,[ebx+ZBufferPoint.s]
mov [d1],eax
mov eax,[edx+offs_zbup_s]
sub eax,[ebx+offs_zbup_s]
mov eax,[edx+ZBufferPoint.s]
sub eax,[ebx+ZBufferPoint.s]
mov [d2],eax
fild dword[d1] ;d1 = p1.s - p0.s
fild dword[d2] ;d2 = p2.s - p0.s
252,11 → 252,11
;dsdy = (int) (fdx1*d2 - fdx2*d1)
calc_d1d2 fi, dsdx, dsdy
 
mov eax,[ecx+offs_zbup_t]
sub eax,[ebx+offs_zbup_t]
mov eax,[ecx+ZBufferPoint.t]
sub eax,[ebx+ZBufferPoint.t]
mov [d1],eax
mov eax,[edx+offs_zbup_t]
sub eax,[ebx+offs_zbup_t]
mov eax,[edx+ZBufferPoint.t]
sub eax,[ebx+ZBufferPoint.t]
mov [d2],eax
fild dword[d1] ;d1 = p1.t - p0.t
fild dword[d2] ;d2 = p2.t - p0.t
267,43 → 267,43
end if
 
if INTERP_STZ eq 1
fild dword[ebx+offs_zbup_z]
fild dword[ebx+offs_zbup_s]
fild dword[ebx+ZBufferPoint.z]
fild dword[ebx+ZBufferPoint.s]
fmul st0,st1
fstp dword[ebx+offs_zbup_sz] ;p0.sz = (float) p0.s * p0.z
fild dword[ebx+offs_zbup_t]
fstp dword[ebx+ZBufferPoint.fsz] ;p0.sz = (float) p0.s * p0.z
fild dword[ebx+ZBufferPoint.t]
fmulp
fstp dword[ebx+offs_zbup_tz] ;p0.tz = (float) p0.t * p0.z
fstp dword[ebx+ZBufferPoint.tz] ;p0.tz = (float) p0.t * p0.z
 
fild dword[ecx+offs_zbup_z]
fild dword[ecx+offs_zbup_s]
fild dword[ecx+ZBufferPoint.z]
fild dword[ecx+ZBufferPoint.s]
fmul st0,st1
fstp dword[ecx+offs_zbup_sz] ;p1.sz = (float) p1.s * p1.z
fild dword[ecx+offs_zbup_t]
fstp dword[ecx+ZBufferPoint.fsz] ;p1.sz = (float) p1.s * p1.z
fild dword[ecx+ZBufferPoint.t]
fmulp
fstp dword[ecx+offs_zbup_tz] ;p1.tz = (float) p1.t * p1.z
fstp dword[ecx+ZBufferPoint.tz] ;p1.tz = (float) p1.t * p1.z
 
fild dword[edx+offs_zbup_z]
fild dword[edx+offs_zbup_s]
fild dword[edx+ZBufferPoint.z]
fild dword[edx+ZBufferPoint.s]
fmul st0,st1
fstp dword[edx+offs_zbup_sz] ;p2.sz = (float) p2.s * p2.z
fild dword[edx+offs_zbup_t]
fstp dword[edx+ZBufferPoint.fsz] ;p2.sz = (float) p2.s * p2.z
fild dword[edx+ZBufferPoint.t]
fmulp
fstp dword[edx+offs_zbup_tz] ;p2.tz = (float) p2.t * p2.z
fstp dword[edx+ZBufferPoint.tz] ;p2.tz = (float) p2.t * p2.z
 
fld dword[ecx+offs_zbup_sz]
fsub dword[ebx+offs_zbup_sz] ;d1 = p1.sz - p0.sz
fld dword[edx+offs_zbup_sz]
fsub dword[ebx+offs_zbup_sz] ;d2 = p2.sz - p0.sz
fld dword[ecx+ZBufferPoint.fsz]
fsub dword[ebx+ZBufferPoint.fsz] ;d1 = p1.sz - p0.sz
fld dword[edx+ZBufferPoint.fsz]
fsub dword[ebx+ZBufferPoint.fsz] ;d2 = p2.sz - p0.sz
 
;dszdx = (fdy2*d1 - fdy1*d2)
;dszdy = (fdx1*d2 - fdx2*d1)
calc_d1d2 f, dszdx, dszdy
 
fld dword[ecx+offs_zbup_tz]
fsub dword[ebx+offs_zbup_tz] ;d1 = p1.tz - p0.tz
fld dword[edx+offs_zbup_tz]
fsub dword[ebx+offs_zbup_tz] ;d2 = p2.tz - p0.tz
fld dword[ecx+ZBufferPoint.tz]
fsub dword[ebx+ZBufferPoint.tz] ;d1 = p1.tz - p0.tz
fld dword[edx+ZBufferPoint.tz]
fsub dword[ebx+ZBufferPoint.tz] ;d2 = p2.tz - p0.tz
 
;dtzdx = (fdy2*d1 - fdy1*d2)
;dtzdy = (fdx1*d2 - fdx2*d1)
312,14 → 312,14
 
; screen coordinates
mov eax,[zb]
mov edx,[eax+offs_zbuf_linesize]
imul edx,[ebx+offs_zbup_y]
add edx,[eax+offs_zbuf_pbuf]
mov edx,[eax+ZBuffer.linesize]
imul edx,[ebx+ZBufferPoint.y]
add edx,[eax+ZBuffer.pbuf]
mov [pp1],edx ;pp1 = zb.pbuf + zb.linesize * p0.y
mov edx,[eax+offs_zbuf_xsize]
imul edx,[ebx+offs_zbup_y]
mov edx,[eax+ZBuffer.xsize]
imul edx,[ebx+ZBufferPoint.y]
shl edx,1
add edx,[eax+offs_zbuf_zbuf]
add edx,[eax+ZBuffer.zbuf]
mov [pz1],edx ;pz1 = zb.zbuf + zb.xsize * p0.y
 
DRAW_INIT
349,8 → 349,8
mov [l2],ecx
mov [pr2],edx
.end_1:
mov eax,[ecx+offs_zbup_y]
sub eax,[ebx+offs_zbup_y]
mov eax,[ecx+ZBufferPoint.y]
sub eax,[ebx+ZBufferPoint.y]
mov [nb_lines],eax ;nb_lines = p1.y - p0.y
jmp .end_0
align 4
374,8 → 374,8
mov [l1],ecx
mov [l2],edx
.end_2:
mov eax,[edx+offs_zbup_y]
sub eax,[ecx+offs_zbup_y]
mov eax,[edx+ZBufferPoint.y]
sub eax,[ecx+ZBufferPoint.y]
inc eax
mov [nb_lines],eax ;nb_lines = p2.y - p1.y + 1
.end_0:
385,11 → 385,11
je .end_upd_l
mov ebx,[l1]
mov ecx,[l2]
mov edx,[ecx+offs_zbup_y]
sub edx,[ebx+offs_zbup_y]
mov edx,[ecx+ZBufferPoint.y]
sub edx,[ebx+ZBufferPoint.y]
mov [dy1],edx ;dy1 = l2.y - l1.y
mov eax,[ecx+offs_zbup_x]
sub eax,[ebx+offs_zbup_x]
mov eax,[ecx+ZBufferPoint.x]
sub eax,[ebx+ZBufferPoint.x]
mov [dx1],eax ;dx1 = l2.x - l1.x
cmp edx,0 ;if (dy1 > 0)
jle .els_3
412,7 → 412,7
.els_3:
xor eax,eax
.end_3:
mov edx,[ebx+offs_zbup_x]
mov edx,[ebx+ZBufferPoint.x]
mov [x1],edx ;x1 = l1.x
mov dword[error],0 ;error = 0
mov dword[derror],eax
424,7 → 424,7
 
if INTERP_Z eq 1
mov eax,[l1]
mov eax,[eax+offs_zbup_z]
mov eax,[eax+ZBufferPoint.z]
mov [z1],eax ;z1 = l1.z
mov eax,[dzdx]
imul eax,[dxdy_min]
435,7 → 435,7
end if
if INTERP_RGB eq 1
mov ebx,[l1]
mov eax,[ebx+offs_zbup_r]
mov eax,[ebx+ZBufferPoint.r]
mov [r1],eax ;r1 = l1.r
mov eax,[drdx]
imul eax,[dxdy_min]
444,7 → 444,7
add eax,[drdx]
mov [drdl_max],eax ;drdl_max = drdl_min +drdx
 
mov eax,[ebx+offs_zbup_g]
mov eax,[ebx+ZBufferPoint.g]
mov [g1],eax ;g1 = l1.g
mov eax,[dgdx]
imul eax,[dxdy_min]
453,7 → 453,7
add eax,[dgdx]
mov [dgdl_max],eax ;dgdl_max = dgdl_min +dgdx
 
mov eax,[ebx+offs_zbup_b]
mov eax,[ebx+ZBufferPoint.b]
mov [b1],eax ;b1 = l1.b
mov eax,[dbdx]
imul eax,[dxdy_min]
464,7 → 464,7
end if
if INTERP_ST eq 1
mov ebx,[l1]
mov eax,[ebx+offs_zbup_s]
mov eax,[ebx+ZBufferPoint.s]
mov [s1],eax ;s1 = l1.s
mov eax,[dsdx]
imul eax,[dxdy_min]
473,7 → 473,7
add eax,[dsdx]
mov [dsdl_max],eax ;dsdl_max = dsdl_min +dsdx
 
mov eax,[ebx+offs_zbup_t]
mov eax,[ebx+ZBufferPoint.t]
mov [t1],eax ;t1 = l1.t
mov eax,[dtdx]
imul eax,[dxdy_min]
484,7 → 484,7
end if
if INTERP_STZ eq 1
mov ebx,[l1]
mov eax,[ebx+offs_zbup_sz]
mov eax,[ebx+ZBufferPoint.fsz]
mov [sz1],eax ;sz1 = l1.sz - преобразований нет, потому без сопроцессора
fild dword[dxdy_min]
fmul dword[dszdx]
493,7 → 493,7
fadd dword[dszdx]
fstp dword[dszdl_max] ;dszdl_max = dszdl_min +dszdx
 
mov eax,[ebx+offs_zbup_tz]
mov eax,[ebx+ZBufferPoint.tz]
mov [tz1],eax ;tz1 = l1.tz - преобразований нет, потому без сопроцессора
fild dword[dxdy_min]
fmul dword[dtzdx]
510,14 → 510,14
je .end_upd_r
mov ebx,[pr1]
mov ecx,[pr2]
mov edx,[ebx+offs_zbup_x]
mov eax,[ecx+offs_zbup_x]
mov edx,[ebx+ZBufferPoint.x]
mov eax,[ecx+ZBufferPoint.x]
sub eax,edx
;mov [dx2],eax ;dx2 = pr2.x - pr1.x
shl edx,16
mov [x2],edx ; x2 = pr1.x << 16
mov edx,[ecx+offs_zbup_y]
sub edx,[ebx+offs_zbup_y]
mov edx,[ecx+ZBufferPoint.y]
sub edx,[ebx+ZBufferPoint.y]
mov [dy2],edx ;dy2 = pr2.y - pr1.y
cmp edx,0 ;if (dy2 > 0)
jle .els_4
763,9 → 763,9
 
; screen coordinates
mov ebx,[zb]
mov eax,[ebx+offs_zbuf_linesize]
mov eax,[ebx+ZBuffer.linesize]
add [pp1],eax
mov eax,[ebx+offs_zbuf_xsize]
mov eax,[ebx+ZBuffer.xsize]
shl eax,1
add [pz1],eax
jmp .beg_w_lin