Normal quotes
This commit is contained in:
parent
5e10794a24
commit
18011c595a
352 changed files with 6040 additions and 6040 deletions
22
70-02.md
22
70-02.md
|
|
@ -5,7 +5,7 @@
|
|||
Getting proper front-to-back drawing order is a little more complicated
|
||||
with polygons on nodes. As we walk the BSP tree front-to-back, in each
|
||||
leaf we mark the polygons that are at least partially in that leaf, and
|
||||
then after we’ve recursed and processed everything in front of a node,
|
||||
then after we've recursed and processed everything in front of a node,
|
||||
we then process all the marked polygons on that node, after which we
|
||||
recurse to process the polygons behind the node. So putting the polygons
|
||||
on the nodes saves memory and improves performance significantly, but
|
||||
|
|
@ -35,7 +35,7 @@ most effective of which was replacing many calls to **malloc()** with
|
|||
stack-based structures—beware of **malloc()** in performance-sensitive
|
||||
code), Quake 2 levels are taking up to an hour to process. (Note,
|
||||
however, that that includes BSPing, PVS calculations, and radiosity
|
||||
lighting, which I’ll discuss later.)
|
||||
lighting, which I'll discuss later.)
|
||||
|
||||
Some good news, though, is that in the nearly two years since we got the
|
||||
Alpha, Pentium Pros have become as fast as that generation of Alphas, so
|
||||
|
|
@ -45,14 +45,14 @@ John has always been a big advocate of moving code out of the runtime
|
|||
program into utilities, and of preprocessing for performance and runtime
|
||||
simplicity, but even he thinks that in Quake, we may have pushed that to
|
||||
the point where it interfered too much with workflow. The real problem,
|
||||
of course, is that even a huge amount of money can’t buy orders of
|
||||
of course, is that even a huge amount of money can't buy orders of
|
||||
magnitude more performance than commodity computers; we are getting an
|
||||
eight-R10000 SGI compute server, but that’s only about twice as fast as
|
||||
eight-R10000 SGI compute server, but that's only about twice as fast as
|
||||
an off-the-shelf four-processor Pentium Pro.
|
||||
|
||||
The size of the PVS for each leaf is manageable because it is stored as
|
||||
a bit vector, with a 1-bit for the position in the overall leaf array of
|
||||
each leaf that’s visible from the current leaf. Most leaves are
|
||||
each leaf that's visible from the current leaf. Most leaves are
|
||||
invisible from any one leaf, so the PVS for each leaf consists mostly of
|
||||
zeros, and compacts nicely with run-length encoding.
|
||||
|
||||
|
|
@ -66,7 +66,7 @@ specific viewpoint; this can cause two or three times as many polygons
|
|||
as are actually visible to be considered. John has been researching the
|
||||
possibility of an EVS—an *exactly visible set*—and has concluded that a
|
||||
6-D BSP with hyperbolic separating planes could do the job; the problem
|
||||
now is that he doesn’t know how to get the math to work, at least at any
|
||||
now is that he doesn't know how to get the math to work, at least at any
|
||||
reasonable speed.
|
||||
|
||||
An interesting extension of the PVS is what John calls the *potentially
|
||||
|
|
@ -77,18 +77,18 @@ exactly the hearable space, because sounds could echo or carry further
|
|||
than that, but it does serve quite nicely as a potentially *relevant*
|
||||
space—the set of leaves that have any interest to the player. In Quake,
|
||||
all sounds that happen anywhere in the world are sent to the client, and
|
||||
are heard, even through walls, if they’re close enough; an explosion
|
||||
are heard, even through walls, if they're close enough; an explosion
|
||||
around the corner could be well within hearing and very important to
|
||||
hear, so the PVS can’t be used to reject that sound, but unfortunately
|
||||
hear, so the PVS can't be used to reject that sound, but unfortunately
|
||||
an explosion on the other side of a solid wall will sound exactly the
|
||||
same. Not only is it confusing hearing sounds through walls, but in a
|
||||
modem game, the bandwidth required to send all the sounds in a level can
|
||||
slow things down considerably. In a recent version of QuakeWorld, a
|
||||
specifically multiplayer variant of Quake I’ll discuss later, John uses
|
||||
specifically multiplayer variant of Quake I'll discuss later, John uses
|
||||
the PHS to determine which sounds to bother sending, and the resulting
|
||||
bandwidth improvement has made it possible to bump the maximum number of
|
||||
players from 16 to 32. Better yet, a sound on the other side of a solid
|
||||
wall won’t be heard unless there’s an opening that permits the sound to
|
||||
wall won't be heard unless there's an opening that permits the sound to
|
||||
come through. (In the future, John will use the PVS to determine fully
|
||||
audible sounds, and the PHS to determine muted sounds.) Also, the PHS
|
||||
can be used for events like explosions that might not have their center
|
||||
|
|
@ -101,7 +101,7 @@ traced out into the world to see what polygons it strikes, and the
|
|||
cumulative effect of all lights on each surface is stored as a light
|
||||
map, a sampling of light values on a 16-texel grid. In Quake 2,
|
||||
radiosity lighting—a considerably more expensive process, but one that
|
||||
produces highly realistic lighting—is performed, but I’ll save that for
|
||||
produces highly realistic lighting—is performed, but I'll save that for
|
||||
later.
|
||||
|
||||
------------------------ --------------------------------- --------------------
|
||||
|
|
|
|||
Loading…
Reference in a new issue