Re: PVS generation

Bernd Kreimeier (Bernd.Kreimeier@NeRo.Uni-Bonn.DE)
Tue, 11 Jun 1996 19:09:05 +0200 (MET DST)

From: Bernd Kreimeier <Bernd.Kreimeier@NeRo.Uni-Bonn.DE>
Date: Tue, 11 Jun 1996 19:09:05 +0200 (MET DST)
Message-Id: <>
Subject: Re: PVS generation

>How is it done

See the summary of Michael Abrash's article on the
Quake Developers Pages (VSD - Visible Surface
Determination), and the Info(5) mail in the june
archive. See especially the PhD thesis by Seth
Teller which is available online (pointer on said
page), and clarifies some issues.

The basic idea is determining "portals": polygons
that allow for looking into adjacent leafs. As far
as I understand, one takes each portal of a given
leaf, and determines some kind of beam tree/
frustrum through the portals in adjacent leafs,
and so on. The generated frustrums/beams will
be split and cut by each subsequent portal, until
they are completely stopped by a wall.

Think of it as each window (portal) of a leaf
being an area light source casting an anti-penumbra
into the world. Every other leaf reached by the
light is part of the PVS.

Sampling on a grid is definitely not a good idea.
Doing a simple raycasting from each center of
a leaf might serve as a "fast vis" function.
Clipping by distance is another idea that will not
correctly determine a PVS, but will be fast. Any
other ideas?