Copy Link
Add to Bookmark
Report
Quake Editing Digest Volume 1 : Number 15
quake-editing-digest Friday, 22 March 1996 Volume 01 : Number 015
More Visibility Progress
RE: Visibility Lists Revisited
----------------------------------------------------------------------
From: etherton@megatek.com (David Etherton)
Date: Wed, 20 Mar 1996 23:13:19 +0800
Subject: More Visibility Progress
Okay, here's what I've been able to nail down.
- - If a leaf's visibility offset is -1, this means that it can see all
other leaves. Likewise, all other leaves can see this one. I determined
this by setting every leaf's offset to -1 in test1.bsp and then noting
that the reverse BSP draw now showed the entire level (and the framerate
dropped even more).
- - The visibility list is 1-based, not 0-based. Furthermore, individual
bits are encoded using (1<<((offset-1)&7).
With this new formula, I was able to finally verify that every leaf's
visibility list does indeed contain its own leaf. So, in other words,
the visibility list
10 ff 00 03 7f
"unpacks" to
10 ff 00 00 00 7f
Leaf 5 is visible because 0x10 & (1<<((5-1)&7)) is true.
Leaves 9-16 are visible, leaves 1,2,3,4,6,7,8,17-40 are
not visible, and leaves 41-47 are visible. Leaf 48 is
not visible either. (It's almost midnight here, hope I
didn't screw that up).
Hope this helps,
- -Dave
------------------------------
From: Olivier <montanuy@lsun80.lannion.cnet.fr>
Date: 21 Mar 96 10:31:43+0100
Subject: RE: Visibility Lists Revisited
>Olivier has probably already figured this out and written it up in
> the specs, but just in case...
Yeah, but I found out only this morning (because I wasted time trying
to check if it was related to BSP trees, as experiments seems to show)
You're first to claim.
>It looks like the visibility lists are RLE compressed.
I confirm this. My explanation differs a bit though.
>It seems like RLE compressing 0xFF's as well as 0x00's would work
>well, but who am I to question to id gods? :)
I think they DO NOT DECOMPRESS the visilists in memory.
The WinTex visibility list viewer just decodes the visilists each
time it's needed. If you test for zero, and unpack on the fly, you go
faster than if you read the unpacked visibility list, even from the
processor L2 cache. BTW, that's would explain why only ZERO is tested,
two tests would slow down the processor too much.
>I hope this furthers the Great Hacking Effort...
Sure justify a mention in upcoming specs 3.1.
Nice to see I'm not the only one hacking levels to death.
Well, now the spec is complete. I just have to correct it and publish.
---------------------------
BTW, anyone has already swam into acid? it hurts. less than lava, though.
Leaf code for acid is -4
Another trick: if you put a leaf code of -3 (water) in a leaf, then
the player inside can swim, but his vision is blurred. whereas players
outside the leaf can see him as usual, not blurred. Now that's a deadly
deathmatch trick :-)
I love that concept of water appearing by surprise in the middle of nowhere.
Olivier
------------------------------
End of quake-editing-digest V1 #15
**********************************