Changeset View
Changeset View
Standalone View
Standalone View
source/blender/render/intern/source/zbuf.c
| Show First 20 Lines • Show All 1,558 Lines • ▼ Show 20 Lines | void zspan_scanconvert(ZSpan *zspan, void *handle, float *v1, float *v2, float *v3, void (*func)(void *, int, int, float, float) ) | ||||
| y0= z1*x2-x1*z2; | y0= z1*x2-x1*z2; | ||||
| xx1= (x0*v1[0] + y0*v1[1])/z0; | xx1= (x0*v1[0] + y0*v1[1])/z0; | ||||
| vxd= -(double)x0/(double)z0; | vxd= -(double)x0/(double)z0; | ||||
| vyd= -(double)y0/(double)z0; | vyd= -(double)y0/(double)z0; | ||||
| vy0= ((double)my2)*vyd + (double)xx1; | vy0= ((double)my2)*vyd + (double)xx1; | ||||
| /* correct span */ | /* correct span */ | ||||
| sn1= (my0 + my2)/2; | |||||
| if (zspan->span1[sn1] < zspan->span2[sn1]) { | |||||
| span1= zspan->span1+my2; | span1= zspan->span1+my2; | ||||
| span2= zspan->span2+my2; | span2= zspan->span2+my2; | ||||
| } | |||||
| else { | |||||
| span1= zspan->span2+my2; | |||||
| span2= zspan->span1+my2; | |||||
| } | |||||
| for (i = 0, y = my2; y >= my0; i++, y--, span1--, span2--) { | for (i = 0, y = my2; y >= my0; i++, y--, span1--, span2--) { | ||||
| sn1= floor(*span1); | sn1= floor(min_ff(*span1, *span2)); | ||||
| sn2= floor(*span2); | sn2= floor(max_ff(*span1, *span2)); | ||||
| sn1++; | sn1++; | ||||
| if (sn2>=rectx) sn2= rectx-1; | if (sn2>=rectx) sn2= rectx-1; | ||||
| if (sn1<0) sn1= 0; | if (sn1<0) sn1= 0; | ||||
| u = (((double)sn1 * uxd) + uy0) - (i * uyd); | u = (((double)sn1 * uxd) + uy0) - (i * uyd); | ||||
| v = (((double)sn1 * vxd) + vy0) - (i * vyd); | v = (((double)sn1 * vxd) + vy0) - (i * vyd); | ||||
| ▲ Show 20 Lines • Show All 2,710 Lines • Show Last 20 Lines | |||||