| 50 |
|
} |
| 51 |
|
|
| 52 |
|
|
| 53 |
< |
static void /* initialize occlusion cache */ |
| 53 |
> |
void /* initialize occlusion cache */ |
| 54 |
|
initobscache(int sn) |
| 55 |
|
{ |
| 56 |
|
register SRCREC *srcp = &source[sn]; |
| 60 |
|
int i, j, k; |
| 61 |
|
int ax, ax1, ax2; |
| 62 |
|
|
| 63 |
+ |
if (srcp->sflags & (SSKIP|SPROX|SSPOT|SVIRTUAL)) |
| 64 |
+ |
return; /* don't cache these */ |
| 65 |
|
if (srcp->sflags & SDISTANT) |
| 66 |
|
cachelen = 4*SHADCACHE*SHADCACHE; |
| 67 |
|
else if (srcp->sflags & SFLAT) |
| 69 |
|
else /* spherical distribution */ |
| 70 |
|
cachelen = SHADCACHE*SHADCACHE*6; |
| 71 |
|
/* allocate cache */ |
| 70 |
– |
DCHECK(srcp->obscache != NULL, |
| 71 |
– |
CONSISTENCY, "initobscache() called twice"); |
| 72 |
|
srcp->obscache = (OBSCACHE *)malloc(sizeof(OBSCACHE) + |
| 73 |
|
sizeof(OBJECT)*(cachelen-1)); |
| 74 |
|
if (srcp->obscache == NULL) |