25,12 → 25,12 |
|
mov eax,[p1] |
mov ebx,[p2] |
mov ecx,[ebx+offs_zbup_y] |
cmp [eax+offs_zbup_y], ecx ;if (p1.y > p2.y) |
mov ecx,[ebx+ZBufferPoint.y] |
cmp [eax+ZBufferPoint.y], ecx ;if (p1.y > p2.y) |
jg @f |
jl .end_0 ;if (p1.y != p2.y) |
mov ecx,[ebx+offs_zbup_x] |
cmp [eax+offs_zbup_x], ecx ;if (p1.x > p2.x) |
mov ecx,[ebx+ZBufferPoint.x] |
cmp [eax+ZBufferPoint.x], ecx ;if (p1.x > p2.x) |
jle .end_0 ;if (p1.x <= p2.x) |
@@: ;if (p1.y > p2.y || (p1.y == p2.y && p1.x > p2.x)) |
mov [p1],ebx |
38,41 → 38,41 |
.end_0: |
|
mov eax,[zb] |
mov edx,[eax+offs_zbuf_xsize] |
mov edx,[eax+ZBuffer.xsize] |
mov [sx],edx |
mov ecx,[p1] |
mov edi,[eax+offs_zbuf_linesize] |
imul edi,[ecx+offs_zbup_y] |
mov edx,[ecx+offs_zbup_x] |
mov edi,[eax+ZBuffer.linesize] |
imul edi,[ecx+ZBufferPoint.y] |
mov edx,[ecx+ZBufferPoint.x] |
imul edx,PSZB |
add edi,edx |
add edi,[eax+offs_zbuf_pbuf] ;edi = (zb.pbuf + zb.linesize*p1.y + p1.x*PSZB) |
add edi,[eax+ZBuffer.pbuf] ;edi = (zb.pbuf + zb.linesize*p1.y + p1.x*PSZB) |
if INTERP_Z eq 1 |
mov edx,[ecx+offs_zbup_y] |
mov edx,[ecx+ZBufferPoint.y] |
imul edx,[sx] |
add edx,[ecx+offs_zbup_x] |
add edx,[ecx+ZBufferPoint.x] |
shl edx,1 |
add edx,[eax+offs_zbuf_zbuf] |
add edx,[eax+ZBuffer.zbuf] |
mov [pz],edx ;pz = zb.zbuf + (p1.y*sx + p1.x) |
mov edx,[ecx+offs_zbup_z] |
mov edx,[ecx+ZBufferPoint.z] |
mov [z],edx ;z = p1.z |
end if |
|
mov ebx,[p2] |
mov eax,[ebx+offs_zbup_x] |
sub eax,[ecx+offs_zbup_x] |
mov eax,[ebx+ZBufferPoint.x] |
sub eax,[ecx+ZBufferPoint.x] |
mov [d_x],eax ;d_x = p2.x - p1.x |
mov eax,[ebx+offs_zbup_y] |
sub eax,[ecx+offs_zbup_y] |
mov eax,[ebx+ZBufferPoint.y] |
sub eax,[ecx+ZBufferPoint.y] |
mov [d_y],eax ;d_y = p2.y - p1.y |
|
mov eax,[ecx+offs_zbup_r] |
mov eax,[ecx+ZBufferPoint.r] |
shl eax,8 |
mov [r],eax ;r = p1.r << 8 |
mov eax,[ecx+offs_zbup_g] |
mov eax,[ecx+ZBufferPoint.g] |
shl eax,8 |
mov [g],eax ;g = p1.g << 8 |
mov eax,[ecx+offs_zbup_b] |
mov eax,[ecx+ZBufferPoint.b] |
shl eax,8 |
mov [b],eax ;b = p1.b << 8 |
|
134,12 → 134,12 |
mov ebx,[p1] |
mov ecx,[p2] |
if INTERP_Z eq 1 |
mov eax,[ecx+offs_zbup_z] |
cmp eax,[ebx+offs_zbup_z] |
mov eax,[ecx+ZBufferPoint.z] |
cmp eax,[ebx+ZBufferPoint.z] |
jg .mz_0 |
je .mz_1 |
;if(p2.z<p1.z) |
sub eax,[ebx+offs_zbup_z] |
sub eax,[ebx+ZBufferPoint.z] |
neg eax |
inc eax |
xor edx,edx |
148,7 → 148,7 |
inc eax |
jmp .mz_2 |
.mz_0: |
sub eax,[ebx+offs_zbup_z] |
sub eax,[ebx+ZBufferPoint.z] |
xor edx,edx |
div dword[n] |
jmp .mz_2 |
159,12 → 159,12 |
end if |
|
;ebx=&p1, ecx=&p2 |
mov eax,[ecx+offs_zbup_r] |
cmp eax,[ebx+offs_zbup_r] |
mov eax,[ecx+ZBufferPoint.r] |
cmp eax,[ebx+ZBufferPoint.r] |
jg .mr_0 |
je .mr_1 |
;if(p2.r<p1.r) |
sub eax,[ebx+offs_zbup_r] |
sub eax,[ebx+ZBufferPoint.r] |
neg eax |
inc eax |
shl eax,8 |
174,7 → 174,7 |
inc eax |
jmp .mr_2 |
.mr_0: |
sub eax,[ebx+offs_zbup_r] |
sub eax,[ebx+ZBufferPoint.r] |
shl eax,8 |
xor edx,edx |
div dword[n] |
184,12 → 184,12 |
.mr_2: |
mov [rinc],eax ;rinc=((p2.r-p1.r)<<8)/n |
|
mov eax,[ecx+offs_zbup_g] |
cmp eax,[ebx+offs_zbup_g] |
mov eax,[ecx+ZBufferPoint.g] |
cmp eax,[ebx+ZBufferPoint.g] |
jg .mg_0 |
je .mg_1 |
;if(p2.g<p1.g) |
sub eax,[ebx+offs_zbup_g] |
sub eax,[ebx+ZBufferPoint.g] |
neg eax |
inc eax |
shl eax,8 |
199,7 → 199,7 |
inc eax |
jmp .mg_2 |
.mg_0: |
sub eax,[ebx+offs_zbup_g] |
sub eax,[ebx+ZBufferPoint.g] |
shl eax,8 |
xor edx,edx |
div dword[n] |
209,12 → 209,12 |
.mg_2: |
mov [ginc],eax ;ginc=((p2.g-p1.g)<<8)/n |
|
mov eax,[ecx+offs_zbup_b] |
cmp eax,[ebx+offs_zbup_b] |
mov eax,[ecx+ZBufferPoint.b] |
cmp eax,[ebx+ZBufferPoint.b] |
jg .mb_0 |
je .mb_1 |
;if(p2.b<p1.b) |
sub eax,[ebx+offs_zbup_b] |
sub eax,[ebx+ZBufferPoint.b] |
neg eax |
inc eax |
shl eax,8 |
224,7 → 224,7 |
inc eax |
jmp .mb_2 |
.mb_0: |
sub eax,[ebx+offs_zbup_b] |
sub eax,[ebx+ZBufferPoint.b] |
shl eax,8 |
xor edx,edx |
div dword[n] |